Thank you for your interest in contributing to AGIT! This document provides guidelines and information for contributors.
- Rust 1.75 or later
- Git
# Clone the repository
git clone https://github.com/agit-stuff/agit.git
cd agit
# Build
cargo build
# Run tests
cargo test
# Run with debug output
RUST_LOG=debug cargo run -- <command># Format code
cargo fmt
# Run linter
cargo clippy -- -D warnings
# Run all tests
cargo test --all-features
# Generate documentation
cargo doc --opensrc/
├── main.rs # CLI entry point
├── lib.rs # Library exports
├── cli/ # CLI commands
├── core/ # Business logic
├── domain/ # Data models
├── storage/ # Persistence layer
├── git/ # Git integration
├── mcp/ # MCP server
├── templates/ # AI instruction templates
├── safety/ # Atomic writes, locking
└── error/ # Error types
- Follow the Rust API Guidelines
- Use
rustfmtfor formatting - Address all
clippywarnings - Write documentation for public APIs
- Include tests for new functionality
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting (
cargo test && cargo clippy) - Commit with a clear message
- Push to your fork
- Open a Pull Request
Use clear, descriptive commit messages:
feat: Add support for custom roadmap files
- Implement roadmap command for viewing/editing
- Add roadmap blob type
- Update commit pipeline to use custom roadmap
Prefixes:
feat:New featurefix:Bug fixdocs:Documentationrefactor:Code refactoringtest:Test additions/changeschore:Maintenance tasks
- Write unit tests for all new functions
- Add integration tests for CLI commands
- Test edge cases and error conditions
- Aim for 80%+ code coverage
- Document all public APIs with rustdoc
- Include examples in documentation
- Update README.md for user-facing changes
- Add architecture docs for significant changes
- Open an issue for bugs or feature requests
- Use discussions for questions
- Join our community chat (coming soon)
By contributing, you agree that your contributions will be licensed under the same terms as the project (MIT OR Apache-2.0).