Thank you for your interest in contributing to Agentik! This document provides guidelines and information for contributors.
Note: Agentik is in early development. The codebase is evolving rapidly and major architectural changes may occur. Please open an issue to discuss significant changes before investing time in a pull request.
This project is a work in progress. Many features are incomplete or not yet implemented. We appreciate your patience and understanding as we build out the core functionality.
- Check existing issues to avoid duplicates
- Use the issue templates when available
- Provide as much context as possible
- Include steps to reproduce for bugs
- Open an issue with the "enhancement" label
- Describe the use case and expected behavior
- Be open to discussion about implementation approaches
- Fork the repository and create your branch from
main - Open an issue first for significant changes
- Write tests for new functionality
- Follow the code style (run
cargo fmtandcargo clippy) - Update documentation as needed
- Submit a pull request
- Rust 1.75 or later
- Node.js 18 or later (for MCP servers)
- Git
# Clone your fork
git clone https://github.com/YOUR_USERNAME/agentik.git
cd agentik
# Build all crates
cargo build
# Run tests
cargo test
# Check formatting
cargo fmt --check
# Run linter
cargo clippycrates/
├── agentik-core/ # Core types - start here
├── agentik-providers/ # AI provider implementations
├── agentik-session/ # Session and context management
├── agentik-agent/ # Agent orchestration
├── agentik-tools/ # Built-in tools
├── agentik-mcp/ # MCP integration
├── agentik-repomap/ # Repository analysis
├── agentik-metrics/ # Usage tracking
└── agentik-cli/ # CLI application
- Use
rustfmtfor formatting - Use
clippyfor linting - Follow Rust API Guidelines
- Document public APIs with rustdoc comments
- Use
thiserrorfor error types - Prefer explicit error handling over
.unwrap()
- Use ESLint and Prettier
- Follow TypeScript best practices
- Document exported functions
- Use present tense ("Add feature" not "Added feature")
- Use imperative mood ("Move cursor to..." not "Moves cursor to...")
- Keep the first line under 72 characters
- Reference issues when applicable
Example:
Add session recovery by ID prefix
Implement resume_by_prefix() to allow users to resume sessions
using partial IDs like "abc123" instead of full UUIDs.
Fixes #42
- Keep PRs focused on a single change
- Include tests for new functionality
- Update documentation as needed
- Ensure CI passes before requesting review
- Be responsive to feedback
- Write unit tests for new functionality
- Place tests in the same file using
#[cfg(test)] - Use
tempfilefor tests that need filesystem access - Run
cargo testbefore submitting PRs
By contributing to Agentik, you agree that your contributions will be licensed under the MIT License.
Feel free to open an issue for any questions about contributing. We're happy to help!