We love your input! We want to make contributing to the A2A Ruby SDK as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
- Fork the repo and create your branch from
main. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Make sure your code lints.
- Issue that pull request!
-
Clone the repository:
git clone https://github.com/a2aproject/a2a-ruby.git cd a2a-ruby -
Install dependencies:
bin/setup
-
Run tests:
bundle exec rspec -
Run linting:
bundle exec rubocop -
Start console:
bin/console
We use RuboCop to maintain consistent code style. Please ensure your code follows our style guide:
# Check style
bundle exec rubocop
# Auto-fix issues
bundle exec rubocop -aWe use RSpec for testing. Please ensure:
- All new features have corresponding tests
- All tests pass before submitting PR
- Maintain or improve code coverage
# Run all tests
bundle exec rspec
# Run specific test file
bundle exec rspec spec/a2a/client_spec.rb
# Run with coverage
COVERAGE=true bundle exec rspec- Update relevant documentation for any API changes
- Add YARD comments for new public methods
- Update README.md if needed
- Add examples for new features
Generate documentation:
bundle exec yard doc-
Create a feature branch:
git checkout -b feature/amazing-feature
-
Make your changes and commit:
git commit -m "Add amazing feature" -
Push to your fork:
git push origin feature/amazing-feature
-
Create a Pull Request with:
- Clear title and description
- Reference any related issues
- Include tests for new functionality
- Update documentation as needed
We use GitHub issues to track public bugs. Report a bug by opening a new issue.
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
We welcome feature requests! Please:
- Check if the feature already exists or is planned
- Open an issue with the
enhancementlabel - Describe the feature and its use case
- Discuss the implementation approach
We use Semantic Versioning. For the versions available, see the tags on this repository.
- Update version in
lib/a2a/version.rb - Update
CHANGELOG.md - Create a pull request
- After merge, create a release tag
- Gem is automatically published via GitHub Actions
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
By contributing, you agree that your contributions will be licensed under the MIT License.
Feel free to contact the maintainers:
- Open an issue for public discussion
- Email: team@a2a-ruby.org
Thank you for contributing! 🎉