---
name: adk-setup
description: Set up a local development environment for the ADK Python project. Use when the user wants to get started developing, set up their environment, install dependencies, or prepare for contributing.
disable-model-invocation: true
---

Set up the local development environment for ADK Python.

## Prerequisites

Check the following before proceeding:

1. **Python 3.11+**

   ```bash
   python3 --version
   ```

2. **uv package manager** (required — do not use pip/venv directly)
   ```bash
   uv --version
   ```
   If not installed:
   ```bash
   curl -LsSf https://astral.sh/uv/install.sh | sh
   ```

## Setup Steps

Run these commands from the project root:

3. **Create and activate a virtual environment:**

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

4. **Install all dependencies for development:**

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

5. **Install development tools:**

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

6. **Install addlicense (requires Go):**

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

   > [!NOTE]
   > If Go is not installed, tell the user:
   > "Go is required for the addlicense tool. Please install Go from https://go.dev/dl/ and then re-run the `adk-setup` skill to complete the setup."

7. **Set up pre-commit hooks:**

   ```bash
   pre-commit install
   ```

8. **Verify everything works by running tests locally:**
   ```bash
   pytest tests/unittests -n auto
   ```

## Key Commands Reference

| Task                                 | Command                                           |
| :----------------------------------- | :------------------------------------------------ |
| Run unit tests (Fast)                | `pytest tests/unittests`                          |
| Run tests across all Python versions | `tox`                                             |
| Format codebase                      | `pre-commit run --all-files`                      |
| Run tests in parallel                | `pytest tests/unittests -n auto`                  |
| Run specific test file               | `pytest tests/unittests/agents/test_llm_agent.py` |
| Launch web UI                        | `adk web path/to/agents_dir`                      |
| Run agent via CLI                    | `adk run path/to/my_agent`                        |
| Build wheel                          | `uv build`                                        |
