Contributing
Contributing to Assemble
Section titled “Contributing to Assemble”Assemble is an open-source project, and contributions are welcome. Here’s how to get involved.
Ways to contribute
Section titled “Ways to contribute”| Type | Description | Difficulty |
|---|---|---|
| Bug reports | Report issues with agents, workflows, or generation | Easy |
| Agent improvements | Improve an existing agent’s prompt or behavior | Medium |
| New agents | Create a new specialized agent | Medium |
| Platform adapters | Add support for a new AI coding tool | Medium-Hard |
| Workflow improvements | Improve or add workflows | Medium |
| Documentation | Fix or improve docs | Easy |
| Core engine | Work on the generation engine | Hard |
Development setup
Section titled “Development setup”Prerequisites
Section titled “Prerequisites”- Node.js >= 18
- Git
- An AI coding tool (Cursor, Claude Code, etc.) for testing
Getting started
Section titled “Getting started”# Clone the repositorygit clone https://github.com/CohesiumAI/assemble.gitcd assemble
# Install dependenciesnpm install
# Run the test suitenpm test
# Run the development server (for the landing page)npm run devProject structure
Section titled “Project structure”assemble/├── src/│ ├── agents/ # Agent definitions (Markdown)│ ├── workflows/ # Workflow definitions (YAML)│ ├── adapters/ # Platform adapters│ ├── engine/ # Core generation engine│ └── cli/ # CLI tool├── tests/ # Test suites├── docs/ # Documentation (this site)└── landing/ # Landing page (Astro)Contributing agents
Section titled “Contributing agents”Improving an existing agent
Section titled “Improving an existing agent”- Find the agent file in
src/agents/ - Identify the improvement (better instructions, new anti-patterns, updated stack)
- Make your changes
- Test with real requests in your AI coding tool
- Submit a PR with before/after examples
Creating a new agent
Section titled “Creating a new agent”- Copy an existing agent as a template
- Follow the Custom Agents guide for the structure
- Add routing keywords in
src/routing/domain-map.ts - Add the agent to the team registry
- Test thoroughly with real requests
- Submit a PR with usage examples
Contributing workflows
Section titled “Contributing workflows”- Create a YAML file following the workflow structure
- Verify all referenced agents exist
- Test the complete workflow end-to-end
- Submit a PR with a description of when to use this workflow
Contributing platform adapters
Section titled “Contributing platform adapters”- Research the platform’s configuration format
- Create an adapter in
src/adapters/ - Implement the
generate()method that produces the platform-native file - Add tests
- Submit a PR with a sample generated file
Code guidelines
Section titled “Code guidelines”Commit messages
Section titled “Commit messages”Follow Conventional Commits:
feat(agent): improve spider-man's accessibility guidelinesfix(adapter): handle special characters in cursor rulesdocs: add YOLO mode examplesPull request process
Section titled “Pull request process”- Create a branch:
feat/my-featureorfix/my-bug - Make your changes with clear commits
- Ensure tests pass:
npm test - Submit a PR with:
- Description of the change
- Motivation (why this change)
- Testing done
- Before/after examples (for agent changes)
Code style
Section titled “Code style”- TypeScript strict mode
- ESLint + Prettier (auto-formatted on save)
- Agent Markdown files follow the standard structure
Testing
Section titled “Testing”Agent testing
Section titled “Agent testing”Test agents by giving them real prompts and evaluating the output quality:
# Run agent evaluation suitenpm run test:agents
# Test a specific agentnpm run test:agent -- --name spider-manAdapter testing
Section titled “Adapter testing”# Generate files and compare with snapshotsnpm run test:adaptersE2E testing
Section titled “E2E testing”# Full generation pipeline testnpm run test:e2eCommunity
Section titled “Community”- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions, ideas, and show-and-tell
- Discord: Real-time chat with the community
Code of Conduct
Section titled “Code of Conduct”We follow the Contributor Covenant Code of Conduct. Be respectful, inclusive, and constructive.
License
Section titled “License”Assemble is licensed under the MIT License. By contributing, you agree that your contributions will be licensed under the same terms.