How to Contribute
FrootAI is open source under the MIT License and grows with every contribution. Whether youβre adding a new agent, creating a solution play, or fixing a typo β we welcome it all.
Ways to Contribute
1. New Solution Play
Create a complete, deployable AI solution with the full DevKit + TuneKit + SpecKit structure:
solution-plays/XX-your-solution/
βββ .github/ # DevKit: Agentic OS
β βββ copilot-instructions.md # Always-on solution context
β βββ agents/ # builder, reviewer, tuner
β βββ instructions/ # Coding standards
β βββ prompts/ # Slash commands
β βββ skills/ # Step-by-step procedures
β βββ hooks/ # Security guardrails
βββ config/ # TuneKit
β βββ openai.json # Model parameters
β βββ guardrails.json # Quality thresholds
βββ spec/ # SpecKit
βββ infra/ # Azure Bicep
βββ evaluation/ # Quality pipeline
βββ fai-manifest.json # FAI Protocol wiring
βββ README.md # Documentation2. Standalone Primitives
Add individual agents, skills, instructions, or hooks to the shared repository:
# Scaffold a new primitive interactively
node scripts/scaffold-primitive.js agent
node scripts/scaffold-primitive.js skill
node scripts/scaffold-primitive.js instruction
node scripts/scaffold-primitive.js hook
# Validate after creation
npm run validate:primitives3. Improve Existing Plays
- Deepen
agent.mdcontent with more few-shot examples and error handling - Tune
config/*.jsonparameters with real-world production values - Enhance evaluation pipelines with additional metrics
- Fix or improve
infra/main.biceptemplates with real Azure resource definitions
4. Documentation & Knowledge
- Fix errors in existing knowledge modules (
docs/*.md) - Add glossary terms to
F3-AI-Glossary-AZ.md - Improve cookbook recipes in
cookbook/ - Propose new modules via GitHub Issue
5. Platform Features
- MCP server tools (
mcp-server/) - VS Code extension features (
vscode-extension/) - CLI commands
- Website improvements
PR Workflow
- Fork the repository on GitHub
- Clone your fork locally
git clone https://github.com/YOUR_USERNAME/frootai.git
cd frootai
npm install- Create a feature branch
git checkout -b feat/XX-your-solution-play-
Make your changes following naming conventions and the PR checklist
-
Validate before committing
npm run validate:primitives # Must pass with 0 errors- Commit using conventional commits
git commit -m "feat: add Play XX - Your Solution Play"- Push and open a Pull Request targeting
main
git push origin feat/XX-your-solution-playβΉοΈ
CI validation runs automatically on every PR:
validate-primitives.ymlβ schema, naming, frontmatter, secrets scanvalidate-plays.ymlβ solution play structure validationauto-generate.ymlβ marketplace.json regenerated on merge
Branching Strategy
| Branch | Purpose | Who Pushes |
|---|---|---|
main | Production β always stable, all CI passes | Merge from PRs only |
feat/* | New primitives, plays, or features | Contributors |
fix/* | Bug fixes | Contributors |
docs/* | Documentation updates | Contributors |
Rules:
- Never push directly to
mainβ always via PR - All PRs require
validate-primitivesto pass (0 errors) - Squash merge preferred for clean history
- Delete feature branches after merge
Quality Standards
Before submitting, verify your contribution:
- All JSON files parse without errors
- Frontmatter has required fields per primitive type
- Uses Managed Identity (no API keys) for Azure services
- UTF-8 encoding (no BOM) on all files
-
npm run validate:primitivespasses with 0 errors - File naming follows lowercase-hyphen convention
Code of Conduct
- Be respectful and constructive
- Focus on the infra/platform audience
- Quality over quantity β one deeply customized play beats ten skeletons
- MIT License β all contributions are MIT-licensed
Contribution License
By submitting a pull request, you agree that your contribution is licensed under the MIT LicenseΒ and may be incorporated into FrootAI. You retain credit for your work.
Next Steps
- Naming Conventions β file naming rules for all primitives
- PR Checklist β what CI validates on every PR
- Your First Solution Play β build a play to contribute
Last updated on