We'd love to accept your patches and contributions to this project. This repository holds two things: the A2A CLI specification (specification/SPEC.md, specification/COMPLIANCE.md) and its Go reference implementation (a2a). Contributions to either are welcome.
Code is only one way to help. The project grows through many kinds of contribution:
- Request a feature. Open a feature request to propose a new command, flag, or specification change.
- Report a bug. File a bug report with steps to reproduce, your CLI version, and your OS.
- Contribute code. Fix a bug or build a feature — see the workflow below.
- Improve the docs. Clarify the README, the specification, or these guidelines.
- Share feedback. Tell us how you use the tool, what works, and what's rough — on our Discord server or in an issue.
- Help the community. Answer questions, help reproduce and triage issues, and review pull requests.
- Read our Code of Conduct. By participating, you agree to follow it.
- For a quick chat or to say Hi, reach out on our Discord server.
- For anything actionable, open an issue or pull request.
Commit messages and pull request titles follow the Conventional Commits specification. PR titles are lint-checked. Choose the type and scope based on what you changed:
- CLI code —
feat:for new behavior,fix:for bug fixes (e.g.,feat: add subscribe command). - SPEC or COMPLIANCE file —
docs(spec):for changes tospecification/SPEC.mdorspecification/COMPLIANCE.md. - Other doc files —
docs:for all other documentation.
We use GitHub pull requests for reviews. See GitHub Help for how to use them.
- Fork the official repository to your own account.
- Sync your fork with the latest changes from
main. - Create a feature branch and make your changes there.
- Commit using a Conventional Commits message.
- Open a pull request from your feature branch to the official repository's
mainbranch. - Resolve feedback — work with reviewers to address comments.
Be patient — reviewing and merging a pull request can take time.
A few checks run on every pull request. Follow these tips to pass them:
-
Add tests for every new feature.
-
Open an issue first, then link it in the PR. For example:
Fixes #123orCloses #123. -
Use Conventional Commits for commit messages and PR titles.
-
For code changes, run these before you push:
go mod tidy -diff go build ./... go test -race ./... golangci-lint run