Contributing
We welcome contributions to DotAgents. Here's how to get involved.
Getting Started
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/dotagents-mono.git
cd dotagents-mono - Set up the development environment:
nvm use
pnpm install
pnpm build-rs
pnpm dev - Create a feature branch:
git checkout -b feature/your-feature-name
Development Workflow
Before You Start
- Check GitHub Issues for existing work
- For large features, open an issue first to discuss the approach
- Read the Architecture Deep Dive to understand the codebase
Making Changes
- Write your code following existing patterns
- Add tests for new functionality
- Run the test suite:
pnpm test - Run type checking:
pnpm typecheck - Run linting:
pnpm lint
Submitting
- Commit with clear, descriptive messages
- Push to your fork
- Open a Pull Request against
main - Describe what you changed and why
Code Style
- TypeScript — Strict mode, explicit types
- React — Functional components with hooks
- Naming — camelCase for variables/functions, PascalCase for components/types
- Files — kebab-case for file names
- Tests — Co-located as
*.test.ts/*.test.tsx
Project Structure Rules
- Main process code goes in
apps/desktop/src/main/ - Renderer code goes in
apps/desktop/src/renderer/src/ - Shared types between processes go in
apps/desktop/src/shared/ - Cross-platform types go in
packages/shared/ - Tool definitions must be dependency-free (no service imports)
- Services use the singleton pattern
Testing
pnpm test # Watch mode
pnpm test:run # Single run (CI)
pnpm test:coverage # With coverage
Tests use Vitest. Write tests for:
- Service logic
- Utility functions
- Component behavior
- Protocol parsing (frontmatter, skill files, memory files)
Areas for Contribution
| Area | Description |
|---|---|
| MCP Servers | New tool integrations |
| Agent Skills | New bundled skills |
| Platform Support | Windows/Linux improvements |
| Mobile Features | Mobile app enhancements |
| Documentation | Improvements and new guides |
| Bug Fixes | Issue resolution |
| Performance | Optimization opportunities |
Community
- Discord — Chat with the community
- GitHub Issues — Report bugs and request features
- Website — Project homepage
License
By contributing, you agree that your contributions will be licensed under the AGPL-3.0 License.