Contributions are welcome! Please ensure all tests pass before submitting a pull request.
- Python 3.14 or higher
- uv (
brew install uv)
git clone https://github.com/PolyAI/adk.git
cd adk
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
pre-commit installpytestTest files are located in src/poly/tests/.
src/poly/cli.py- CLI interfacesrc/poly/project.py- Core project managementsrc/poly/resources/- Resource type implementationssrc/poly/handlers/- API handler implementationssrc/poly/tests/- Test suitesrc/poly/types/- Python type definitions for the Agent Studio runtime
The project uses ruff for linting and formatting, enforced via pre-commit hooks.
- Line length: 100 characters
- Formatting:
ruff format . - Linting:
ruff check .(auto-fix withruff check . --fix)
We use conventional commits:
| Commit prefix | Version bump | Example |
|---|---|---|
fix: |
Patch (2.0.4 → 2.0.5) | fix: handle missing config file |
feat: |
Minor (2.0.4 → 2.1.0) | feat: add poly export command |
feat!: / BREAKING CHANGE: |
Major (2.0.4 → 3.0.0) | feat!: redesign resource schema |
chore:, docs:, ci: |
No release | docs: update README |
When you add or change dependencies:
- License check — CI allows only MIT, Apache, BSD, MPL. Run locally:
uv run licensecheck --zero. Packages with missing PyPI license metadata are in[tool.licensecheck]ignore_packagesinpyproject.toml; add new ones there after verifying the license. - Attribution — Regenerate
licenses.jsonwithuv run pip-licensesand commit it. CI checks that it’s up to date.
This project uses python-semantic-release to automate versioning and publishing. Version bumps are determined from conventional commit messages (see above).
When a commit is merged to main, the release workflow automatically:
- Determines the next version from commit history
- Updates the version in
pyproject.toml - Creates a git tag and GitHub Release
We recommend using Claude Code for development. The repo includes a .claude/ directory with project-specific instructions and permissions pre-configured.