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
-
Dependencies: If a change moves
Gemfile.lockor the gemspec, check it for known advisories first:gem install bundler-audit -v '~> 0.9' bundler-audit check --updateIf your shell can't find
bundler-auditafter installing it, your gem bindir isn't onPATH;gem exec bundler-audit check --updateworks regardless on RubyGems 3.5+.CI runs the same command on those changes and again every Monday. If it flags an advisory in a gem your change did not touch, say so in the PR rather than bundling an unrelated upgrade into it. An advisory that genuinely cannot be fixed by an upgrade goes in
.bundler-audit.ymlwith a reason and an exit condition, where CI honors it and a reviewer can see it.
- 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! 🚀