adk-setup

Sets up a ready-to-code Python project with all tools and tests working.

Installation
Run `npx skills add "https://github.com/google/adk-python" --skill "adk-setup"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: adk-setup
description: >-
  Sets up a local ADK Python development environment in a git clone of the
  open-source adk-python repository: a uv virtual environment, all dependency
  extras, pre-commit hooks, and a first unit-test run. Runs only when
  explicitly requested, never on its own. Use when asked to set up, bootstrap,
  or repair a development checkout, install project dependencies, fix a
  missing or broken .venv, or prepare a machine for contributing a pull
  request. Don't use for debugging a running agent (use adk-debug), for commit
  and pull-request mechanics (use adk-git), or for re-running formatters on a
  checkout that is already set up (pre-commit run --all-files).
disable-model-invocation: true
---

# ADK Python Development Setup

Set up a working `adk-python` checkout: a uv-managed virtual environment with
every dependency extra, pre-commit hooks, and a green unit-test run.

## Prerequisites

1. **Python.** ADK supports 3.10 through 3.14 (`requires-python = ">=3.10"` in
   `pyproject.toml`). These steps use 3.11, the version the repo's own tooling
   defaults to.

   ```bash
   python3 --version
   ```

2. **uv.** Dependencies are pinned in `uv.lock`; a hand-rolled `pip`/`venv`
   environment will not reproduce the locked versions.

   ```bash
   uv --version
   ```

   Install it if missing:

   ```bash
   curl -LsSf https://astral.sh/uv/install.sh | sh
   ```

## Setup

Run these from the repository root.

1. **Create and activate the virtual environment:**

   ```bash
   uv venv --python "python3.11" ".venv"
   source .venv/bin/activate
   ```

2. **Install every dependency extra:**

   ```bash
   uv sync --all-extras
   ```

   `--all-extras` is what pulls in the `test` and `dev` extras. Syncing only
   the default dependencies leaves `pytest` and the linters uninstalled.

3. **Install pre-commit and tox as standalone tools:**

   ```bash
   uv tool install pre-commit
   uv tool install tox --with tox-uv
   ```

   Both are also in the `dev` extra; installing them as uv tools puts them on
   PATH so the git hook and multi-version test runs work without an activated
   venv.

4. **Install `addlicense` (optional, requires Go):**

   ```bash
   go install github.com/google/addlicense@latest
   ```

   Without it the pre-commit hook prints `Warning: addlicense not installed,
   skipping` and passes, so a missing Go toolchain does not block setup — CI
   catches missing license headers instead.

5. **Install the git hooks:**

   ```bash
   pre-commit install
   ```

   On each commit the hooks auto-format with `isort`, `pyink`, and `mdformat`,
   then run `ruff`, `addlicense`, `codespell`, and the repo's own compliance
   checks.

6. **Verify the environment:**

   ```bash
   pytest tests/unittests -n auto
   ```

   A green run here is the success criterion for setup. `-n auto` needs
   `pytest-xdist`, which arrives with the `test` extra in step 2.

## Key commands

| Task                                 | Command                                            |
| :----------------------------------- | :------------------------------------------------- |
| Run unit tests                       | `pytest tests/unittests`                           |
| Run unit tests in parallel           | `pytest tests/unittests -n auto`                   |
| Run one test file                    | `pytest tests/unittests/agents/test_base_agent.py` |
| Run tests on every supported Python  | `tox` (uv downloads any missing interpreters)      |
| Format and lint everything           | `pre-commit run --all-files`                       |
| Launch the web UI                    | `adk web {agents_dir}`                             |
| Run an agent from the CLI            | `adk run {agent_dir}`                              |
| Build the wheel                      | `uv build`                                         |

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us