Thank you for your interest in contributing to Agentic! This guide will help you get started with contributing to our AI agent orchestration framework.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/agentic.git cd agentic - Set up development environment:
bin/setup
- Run tests to ensure everything works:
bundle exec rake
- Ruby Style: Follow StandardRB conventions
- Testing: Use RSpec for tests, aim for >90% coverage on new code
- Documentation: Use YARD comments for all public APIs
- Commit Messages: Follow Conventional Commits
- Check existing issues and discussions
- Open an issue for significant changes to discuss approach
- Review architectural documentation:
ArchitectureConsiderations.md- Overall system designArchitecturalFeatureBuilder.md- Implementation guidelines.architecture/principles.md- Core architectural principles
Before implementing any feature:
- Review Architecture: Consult architectural documentation
- System Layer Identification: Determine which layer(s) your feature affects:
- Foundation Layer (core abstractions, registries)
- Runtime Layer (task execution, orchestration)
- Verification Layer (quality assurance, validation)
- Extension System (plugins, domain adapters)
- Interface Design: Define clear interfaces following established patterns
- Implementation Checklist: Use the checklist in
ArchitecturalFeatureBuilder.md
-
Create a feature branch from main:
git checkout -b feature/your-feature-name
-
Write tests first (TDD approach encouraged):
bundle exec rspec spec/path/to/new_feature_spec.rb -
Implement your feature following our patterns:
- Use dependency injection
- Follow the Observable pattern for state changes
- Implement proper error handling with detailed context
- Add comprehensive logging
-
Run the full test suite:
bundle exec rake -
Check code style:
bundle exec rake standard # Auto-fix style issues: standardrb --fix
-
Update documentation as needed
- Unit Tests: Test individual classes and methods
- Integration Tests: Test component interactions
- Feature Tests: Test end-to-end workflows
The project uses VCR to record HTTP interactions. When adding new API calls:
- Record cassettes during initial test runs
- Commit cassettes with your changes
- Use descriptive cassette names that relate to the test scenario
# spec/agentic/your_feature_spec.rb
require 'spec_helper'
RSpec.describe Agentic::YourFeature do
describe '#method_name' do
it 'does something useful' do
# Arrange
feature = described_class.new
# Act
result = feature.method_name
# Assert
expect(result).to be_successful
end
end
end- Bug Fix: Fix incorrect behavior
- Enhancement: Improve existing functionality
- New Feature: Add new capability
- Breaking Change: Modify public API (requires special care)
-
Create an ADR (Architectural Decision Record) for significant features:
cp .architecture/templates/adr.md .architecture/decisions/adrs/ADR-XXX-your-feature.md
-
Follow the feature implementation process from
ArchitecturalFeatureBuilder.md -
Add comprehensive tests including edge cases
-
Update documentation including README if needed
- Discuss in an issue first - breaking changes require community input
- Follow semantic versioning - breaking changes increment major version
- Provide migration guide in CHANGELOG.md
- Deprecate before removing when possible
- All tests pass:
bundle exec rake - Code follows style guide:
bundle exec rake standard - Documentation is updated
- CHANGELOG.md is updated (for user-facing changes)
- Commit messages follow conventional format
## Summary
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] Enhancement
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] All tests pass locally
## Documentation
- [ ] Code comments updated
- [ ] README updated (if needed)
- [ ] CHANGELOG updated (if needed)
- [ ] ADR created (for significant changes)
## Additional Notes
Any additional context or considerations- Automated checks must pass (CI, linting, tests)
- Code review by maintainers
- Architectural review for significant changes
- Documentation review for user-facing changes
- Patch (0.0.X): Bug fixes, documentation
- Minor (0.X.0): New features, non-breaking enhancements
- Major (X.0.0): Breaking changes
- Update
lib/agentic/version.rb - Update
CHANGELOG.md - Create release PR
- Tag and release via
bundle exec rake release
- Be respectful and inclusive
- Ask questions when you're unsure
- Share knowledge and help others
- Give constructive feedback in reviews
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions and general discussion
- Code Comments: Implementation-specific questions
If you're developing plugins or extensions:
- Review extension patterns in
lib/agentic/extension/ - Follow plugin interfaces defined in extension system
- Add comprehensive tests for extension points
- Document extension API changes
- Profile before optimizing using Ruby profiling tools
- Consider LLM API costs in design decisions
- Test performance impact of changes
- Use caching appropriately following established patterns
- Review security implications of changes
- Follow secure coding practices
- Consider content filtering for user inputs
- Implement appropriate permissions for new capabilities
# Run specific tests
bundle exec rspec spec/path/to/file_spec.rb
# Run tests with coverage
COVERAGE=true bundle exec rspec
# Generate documentation
bundle exec yard doc
# Interactive console with gem loaded
bundle exec rake consoleThe project includes configuration for:
- VS Code:
.vscode/directory with recommended extensions - RuboCop: For linting integration
- YARD: For documentation generation
If you have questions not covered in this guide:
- Check existing documentation in the repository
- Search GitHub issues for similar questions
- Open a GitHub Discussion for general questions
- Open a GitHub Issue for specific bugs or feature requests
Thank you for contributing to Agentic! 🚀