We'd love to accept your patches and contributions to this project.
To contribute to this project, you will need the following tools installed:
- Python 3.10+
- uv - Fast Python package installer and resolver.
- Node.js & npm - For markdown formatting tools.
- Docker - Required for running the local linter.
The A2A documentation is built using MkDocs with the Material theme.
-
Create a virtual environment:
uv venv .doc-venv
-
Activate the virtual environment:
source .doc-venv/bin/activate # Unix/macOS # .doc-venv\Scripts\activate # Windows
-
Install dependencies:
uv pip install -r requirements-docs.txt
-
Build the documentation: This script regenerates the JSON schema from the protocol definition, builds the SDK documentation, and then builds the MkDocs site.
./scripts/build_docs.sh
-
Serve the documentation locally: Run the following command to start a local server with live reloading:
mkdocs serve
-
View the documentation: Open http://localhost:8000 in your browser.
We use Super Linter to ensure code quality across the repository. You can run the linter locally using Docker:
./scripts/lint.shWe use markdownlint for formatting markdown files. You can fix most formatting issues automatically by running:
./scripts/format.shWe follow the Conventional Commits specification for our commit messages and PR titles to automate releases. We enforce the following rules depending on which files are changed:
- Core Specification (
docs(spec):): Use for changes to the core specification (docs/specification.md). - General Documentation (
docs:): Use for other files underdocs/(without thespecscope). - Protocol Updates (
feat:/fix:): Reserved exclusively for changes to the protocol definition (specification/a2a.proto).
Tip
If a documentation change alters how the protocol should be used, update the .proto file as well (even just its comments) so that a new protocol release is triggered.
All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult GitHub Help for more information on using pull requests.
You may follow these steps to contribute:
- Fork the official repository. This will create a copy of the official repository in your own account.
- Sync the branches. This will ensure that your copy of the repository is up-to-date with the latest changes from the official repository.
- Work on your forked repository's feature branch. This is where you will make your changes to the code.
- Test your changes. Build and preview the documentation locally to ensure everything looks correct.
- Format and lint your code. Run ./scripts/format.sh and ./scripts/lint.sh to ensure your changes meet our standards.
- Commit your updates. Use conventional commit messages on your feature branch.
- Submit a pull request. Submit a PR from your fork's feature branch to the official repository's
mainbranch. - Resolve any feedback. Work with reviewers to address any comments or requested changes.
Be patient! It may take some time for your pull request to be reviewed and merged.