Contributing to FrootAI
From the Roots to the Fruits. The open glue binding Infrastructure, Platform & Application teams with the GenAI ecosystem.
Thank you for contributing! FrootAI grows with every contribution.
Ways to Contribute
1. New Solution Play
Create a new solution play following the DevKit + TuneKit model with full .github Agentic OS:
solution-plays/XX-your-solution/
βββ .github/ # DevKit: Agentic OS (7 primitives)
β βββ copilot-instructions.md # L1: Always-on solution context
β βββ instructions/
β β βββ azure-coding.instructions.md # L1: Azure coding standards
β β βββ <play>-patterns.instructions.md # L1: Play-specific patterns
β β βββ security.instructions.md # L1: Security guidelines
β βββ prompts/ # L2: 4 slash commands
β β βββ deploy.prompt.md
β β βββ test.prompt.md
β β βββ review.prompt.md
β β βββ evaluate.prompt.md
β βββ agents/ # L2: 3 chained specialists
β β βββ builder.agent.md
β β βββ reviewer.agent.md
β β βββ tuner.agent.md
β βββ skills/ # L3: Self-contained logic
β β βββ deploy-azure/SKILL.md + deploy.sh
β β βββ evaluate/SKILL.md
β β βββ tune/SKILL.md + tune-config.sh
β βββ hooks/guardrails.json # L4: Lifecycle enforcement
β βββ workflows/ # L4: Agentic CI/CD
β βββ ai-review.md
β βββ ai-deploy.md
βββ .vscode/mcp.json + settings.json # IDE config
βββ infra/main.bicep + parameters.json # DevKit: Azure infrastructure
βββ config/openai.json # TuneKit: Model parameters
βββ config/guardrails.json # TuneKit: Safety rules
βββ config/agents.json # TuneKit: Agent behavior tuning
βββ config/model-comparison.json # TuneKit: Model selection guide
βββ evaluation/test-set.jsonl + eval.py # TuneKit: Quality scoring
βββ agent.md # Agent personality (1500+ bytes)
βββ instructions.md # System prompts
βββ plugin.json # Marketplace manifest
βββ CHANGELOG.md + README.md # Documentation
βββ mcp/index.js + plugins/README.md # Legacy compatibility2. Improve Existing Plays
- Deepen
agent.mdcontent (more few-shot examples, better error handling) - Tune
config/*.jsonparameters with real-world production values - Enhance
evaluation/eval.pywith additional metrics - Fix or improve
infra/main.biceptemplates with real Azure resource definitions
3. Knowledge Modules
- Fix errors in existing modules (
docs/*.md) - Add glossary terms to
F3-AI-Glossary-AZ.md - Propose new modules via GitHub Issue
4. Platform Features
- MCP server tools (
npm-mcp/index.js) - VS Code extension features (
vscode-extension/src/extension.js) - Website improvements (
website/src/pages/*.tsx)
Quality Standards
Before submitting, verify your contribution:
- agent.md is 1500+ bytes with: Identity, Rules, Azure Services, Architecture, Tools, Output Format, Error Handling, Few-Shot Examples
- .github Agentic OS has all 19 files (7 primitives, 4 layers)
- All config/*.json files include
_commentsexplaining each parameter - All JSON files parse without errors (
python3 -c "import json; json.load(open('file'))") - plugin.json is valid and has play metadata
- README.md includes architecture diagram, DevKit section, TuneKit section
- Uses Managed Identity (no API keys) for Azure services
- UTF-8 encoding (no BOM) on all files
PR Process
- Fork the repository
- Create a feature branch (
feat/XX-your-solution-play) - Follow the file structure above β CI will validate all files
- Submit a Pull Request targeting the
mainbranch - CI validation runs automatically:
validate-primitives.ymlβ schema, naming, frontmatter, secrets scanvalidate-plays.ymlβ solution play structure (23 plays)auto-generate.ymlβ marketplace.json regenerated on merge
- Address review feedback β merge
Branching Strategy
| Branch | Purpose | Who Pushes |
|---|---|---|
main | Production β always stable, all CI passes | Merge from PRs only |
feat/* | Feature branches for 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
Future consideration: As the community grows, we may adopt a stagedβmain model where:
stagedis the development branch (PRs target here)mainis the published artifact (force-pushed from staged after CI build)- This ensures
mainalways has regenerated marketplace.json, docs, and validated state - Currently not needed β direct-to-main with CI gates is sufficient for our scale
Contributing Standalone Primitives
Beyond solution plays, you can contribute individual primitives:
Agents (agents/)
node scripts/scaffold-primitive.js agent
# Follow prompts β creates .agent.md + fai-context.json
npm run validate:primitives # VerifyRequirements: description (10+ chars), kebab-case filename, WAF alignment recommended.
Instructions (instructions/)
node scripts/scaffold-primitive.js instruction
# Follow prompts β creates .instructions.md with applyTo
npm run validate:primitivesRequirements: description + applyTo glob pattern in frontmatter.
Skills (skills/)
node scripts/scaffold-primitive.js skill
# Follow prompts β creates folder/SKILL.md
npm run validate:primitivesRequirements: name matches folder, description 10-1024 chars.
Hooks (hooks/)
node scripts/scaffold-primitive.js hook
# Follow prompts β creates folder/hooks.json + script
npm run validate:primitivesRequirements: version: 1, valid events, bash script exists.
Naming Conventions
| Term | Meaning |
|---|---|
| DevKit | Build + Deploy ecosystem (.github Agentic OS + infra) |
| TuneKit | AI Fine-Tuning ecosystem (config/ + evaluation/) |
| FROOT | Foundations Β· Reasoning Β· Orchestration Β· Operations Β· Transformation |
| .github Agentic OS | 7 primitives: instructions, prompts, agents, skills, hooks, workflows, plugins |
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 β we celebrate contributors! π