Welcome to AIOX! Thank you for your interest in contributing. This guide will help you understand our development workflow, contribution process, and how to submit your changes.
- Quick Start
- Types of Contributions
- Development Workflow
- Contributing Agents
- Contributing Tasks
- Contributing Squads
- Code Review Process
- Validation System
- Branch Protection & PR Requirements
- Code Standards
- Testing Requirements
- Frequently Asked Questions
- Getting Help
- Working with Pro
# Fork via GitHub UI, then clone your fork
git clone https://github.com/YOUR_USERNAME/aiox-core.git
cd aiox-core
# Add upstream remote
git remote add upstream https://github.com/SynkraAI/aiox-core.gitPrerequisites:
- Node.js >= 20.0.0
- npm
- Git
- GitHub CLI (
gh) - optional but recommended
# Install dependencies
npm install
# Verify setup
npm test
npm run lint
npm run typecheckgit checkout -b feature/your-feature-nameBranch Naming Conventions:
| Prefix | Use For |
|---|---|
feature/ |
New features, agents, tasks |
fix/ |
Bug fixes |
docs/ |
Documentation updates |
refactor/ |
Code refactoring |
test/ |
Test additions/improvements |
Follow the relevant guide below for your contribution type.
npm run lint # Code style
npm run typecheck # Type checking
npm test # Run tests
npm run build # Verify buildgit push origin feature/your-feature-nameThen create a Pull Request on GitHub targeting main branch.
| Contribution | Description | Difficulty |
|---|---|---|
| Documentation | Fix typos, improve guides | Easy |
| Bug Fixes | Fix reported issues | Easy-Medium |
| Tasks | Add new task workflows | Medium |
| Agents | Create new AI agent personas | Medium |
| Squads | Bundle of agents + tasks + workflows | Advanced |
| Core Features | Framework improvements | Advanced |
We use Conventional Commits:
<type>: <description>
<optional body>
Types: feat, fix, docs, style, refactor, test, chore
Examples:
git commit -m "feat(agent): add security-auditor agent"
git commit -m "fix: resolve memory leak in config loader"
git commit -m "docs: update contribution guide"- Create PR targeting
mainbranch - Automated checks run (lint, typecheck, test, build)
- CodeRabbit review provides AI-powered feedback
- Maintainer review - at least 1 approval required
- Merge after all checks pass
Agents are AI personas with specific expertise and commands.
.aiox-core/development/agents/your-agent.md
agent:
name: AgentName
id: agent-id # kebab-case, unique
title: Descriptive Title
icon: emoji
whenToUse: 'When to activate this agent'
persona_profile:
archetype: Builder | Analyst | Guardian | Operator | Strategist
communication:
tone: pragmatic | friendly | formal | analytical
emoji_frequency: none | low | medium | high
vocabulary:
- domain-term-1
- domain-term-2
greeting_levels:
minimal: 'Short greeting'
named: 'Named greeting with personality'
archetypal: 'Full archetypal greeting'
signature_closing: 'Signature phrase'
persona:
role: "Agent's primary role"
style: 'Communication style'
identity: "Agent's identity description"
focus: 'What the agent focuses on'
core_principles:
- Principle 1
- Principle 2
commands:
- help: Show available commands
- custom-command: Command description
dependencies:
tasks:
- related-task.md
tools:
- tool-name- Agent ID is unique and uses kebab-case
-
persona_profileis complete with archetype and communication - All commands have descriptions
- Dependencies list all required tasks
- No hardcoded credentials or sensitive data
- Follows existing patterns in the codebase
Use the Agent Contribution template when creating your PR.
Tasks are executable workflows that agents can run.
.aiox-core/development/tasks/your-task.md
# Task Name
**Description:** What this task does
**Agent(s):** @dev, @qa, etc.
**Elicit:** true | false
---
## Prerequisites
- Prerequisite 1
- Prerequisite 2
## Steps
### Step 1: First Step
Description of what to do.
**Elicitation Point (if elicit: true):**
- Question to ask user
- Options to present
### Step 2: Second Step
Continue with more steps...
## Deliverables
- [ ] Deliverable 1
- [ ] Deliverable 2
## Error Handling
If X happens, do Y.
---
## Dependencies
- `dependency-1.md`
- `dependency-2.md`- Task has clear description and purpose
- Steps are sequential and logical
- Elicitation points are clear (if applicable)
- Deliverables are well-defined
- Error handling guidance included
- Dependencies exist in the codebase
Use the Task Contribution template when creating your PR.
Squads are bundles of related agents, tasks, and workflows.
your-squad/
├── manifest.yaml # Squad metadata
├── agents/
│ └── your-agent.md
├── tasks/
│ └── your-task.md
└── workflows/
└── your-workflow.yaml
name: your-squad
version: 1.0.0
description: What this squad does
author: Your Name
dependencies:
- base-squad (optional)
agents:
- your-agent
tasks:
- your-task- Squads Guide - Complete documentation
- Squad Template - Start from a working template
- Squad Discussions - Share ideas
When you submit a PR, the following checks run automatically:
| Check | Description | Required |
|---|---|---|
| ESLint | Code style and quality | Yes |
| TypeScript | Type checking | Yes |
| Jest Tests | Test suite (Node 18 & 20) | Yes |
| Validation Summary | Aggregate gate | Yes |
| Build | Build verification | No (advisory) |
| Coverage | Coverage reporting | No (advisory) |
CodeRabbit automatically reviews your PR and provides feedback on:
- Code quality and best practices
- Security concerns
- AIOX-specific patterns (agents, tasks, workflows)
- Performance issues
Severity Levels:
| Level | Action Required |
|---|---|
| CRITICAL | Must fix before merge |
| HIGH | Strongly recommended to fix |
| MEDIUM | Consider fixing or document as tech debt |
| LOW | Optional improvement |
Responding to CodeRabbit:
- Address CRITICAL and HIGH issues before requesting review
- MEDIUM issues can be documented for follow-up
- LOW issues are informational
After automated checks pass, a maintainer will:
- Verify changes meet project standards
- Check for security implications
- Ensure documentation is updated
- Approve or request changes
- All CI checks pass
- At least 1 maintainer approval
- All conversations resolved
- No merge conflicts
- Branch is up to date with main
AIOX implements a Defense in Depth strategy with 3 validation layers:
Performance: < 5 seconds
- ESLint with cache
- TypeScript incremental compilation
- IDE sync (auto-stages IDE command files)
Performance: < 2 seconds
- Story checkbox validation
- Status consistency checks
Performance: 2-5 minutes
- Full lint and type checking
- Complete test suite
- Coverage reporting
- Story validation
- Branch protection rules
All changes to main must go through a Pull Request. Direct pushes are blocked.
All of these must pass before a PR can be merged:
| Check | Description |
|---|---|
| ESLint | Code style and quality |
| TypeScript Type Checking | No type errors |
| Jest Tests (Node 18) | Full test suite on Node 18 |
| Jest Tests (Node 20) | Full test suite on Node 20 |
| Validation Summary | Aggregate gate |
- 1 approval required from a CODEOWNERS reviewer
- Stale reviews are dismissed when new commits are pushed
- Conversation resolution required — all review threads must be resolved
- CODEOWNERS review required — changes to critical paths need the designated owner's approval
Critical paths require approval from @Pedrovaleriolopez or @oalanicolas (maintainers):
| Path | Why |
|---|---|
.aiox-core/core/orchestration/ |
Orchestration layer (MasterOrchestrator, GateEvaluator) |
.aiox-core/core/execution/ |
Execution engine (WaveExecutor, ParallelExecutor) |
packages/ |
Installer, CLI, shared libraries |
.github/ |
CI/CD workflows, branch protection |
.aiox-core/core-config.yaml |
Framework configuration |
All other paths require review from any maintainer (@Pedrovaleriolopez or @oalanicolas).
See .github/CODEOWNERS for the full ownership map.
- Force push to main: Blocked
- Branch deletions: Blocked
- Admin bypass: Disabled (
enforce_admins: true)
- ES2022 features
- Prefer
constoverlet - Use async/await over promises
- Add JSDoc comments for public APIs
- Follow existing code style
.aiox-core/
├── development/
│ ├── agents/ # Agent definitions
│ ├── tasks/ # Task workflows
│ └── workflows/ # Multi-step workflows
├── core/ # Core utilities
└── product/
└── templates/ # Document templates
docs/
├── guides/ # User guides
└── architecture/ # System architecture
- Extends:
eslint:recommended,@typescript-eslint/recommended - Target: ES2022
- Strict mode enabled
- No console.log in production (warnings)
- Minimum: 80% coverage (branches, functions, lines, statements)
- Unit Tests: Required for all new functions
- Integration Tests: Required for workflows
npm test # Run all tests
npm run test:coverage # With coverage report
npm run test:watch # Watch mode
npm test -- path/to/test.js # Specific filedescribe('MyModule', () => {
it('should do something', () => {
const result = myFunction();
expect(result).toBe(expected);
});
});A: We aim for first review within 24-48 hours. Complex changes may take longer.
A: Tests are strongly encouraged. For documentation-only changes, tests may not be required.
A: Rebase your branch on latest main:
git fetch upstream
git rebase upstream/main
git push --force-with-leaseA: Yes! We accept PRs in Portuguese. See CONTRIBUTING-PT.
A: Consistent, high-quality contributions over time. Start with small fixes and work up to larger features.
A: Check the GitHub Actions logs:
gh pr checks # View PR check statusCommon fixes:
- Run
npm run lint -- --fixfor style issues - Run
npm run typecheckto see type errors - Ensure tests pass locally before pushing
- GitHub Issues: Open an issue
- Discussions: Start a discussion
- Community: COMMUNITY.md
AIOX uses an Open Core model with a private pro/ git submodule (see ADR-PRO-001).
You do NOT need the pro/ submodule. The standard clone works perfectly:
git clone https://github.com/SynkraAI/aiox-core.git
cd aiox-core
npm install && npm test # All tests pass without pro/The pro/ directory will simply not exist in your clone — this is expected and all features, tests, and CI pass without it.
When forking and syncing with upstream, do NOT use --recurse-submodules:
# Fork via GitHub UI, then clone (without submodules)
git clone https://github.com/<your-fork>/aiox-core.git
cd aiox-core
# Add upstream and sync
git remote add upstream https://github.com/SynkraAI/aiox-core.git
git fetch upstream
git rebase upstream/main
# Push (use --force-with-lease after rebase)
git push --force-with-lease origin mainSubmodule push error? If you see
remote: fatal: did not receive expected objectwhen pushing after syncing, it means thepro/submodule pointer changed upstream and your fork cannot resolve the private reference.If your fork already had a successful push before (existing submodule pointer):
git checkout origin/main -- pro git commit -m "chore: reset pro submodule pointer for fork" git push origin mainIf this is a new fork (no previous pro pointer on remote):
git rm --cached pro git commit -m "chore: remove pro submodule reference for fork" git push origin main
You can also suppress submodule noise in git status locally (these settings are local-only and do not affect remote pushes):
git config submodule.pro.ignore all
git config submodule.pro.active false# Clone with submodule
git clone --recurse-submodules https://github.com/SynkraAI/aiox-core.git
# Or add to existing clone
git submodule update --init proPush order: Always push pro/ changes first, then aiox-core.
# Coming in a future release
aiox setup --proFor the complete developer workflow guide, see Pro Developer Workflow.
- Community Guide - How to participate
- Squads Guide - Create agent teams
- Architecture - System design
- Roadmap - Project direction
Thank you for contributing to Synkra AIOX!