Help us improve
Share bugs, ideas, or general feedback.
From google-agents-cli
Guides building ADK agents end-to-end: scaffold, build, evaluate, deploy, publish, observe. Includes troubleshooting and code preservation.
npx claudepluginhub google/agents-cliHow this skill is triggered — by the user, by Claude, or both
Slash command
/google-agents-cli:google-agents-cli-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **STOP — Do NOT write code yet.** If no project exists, scaffold first with `agents-cli scaffold create <name>`. If the user already has code, use `agents-cli scaffold enhance .` to add the agents-cli structure. Run `agents-cli info` to check if a project already exists. Skipping this leads to missing eval boilerplate, CI/CD config, and project conventions.
Scaffolds new Google ADK agent projects or enhances existing ones with deployment, CI/CD, and infrastructure. Use when creating, upgrading, or adding deployment to an agent project.
Engineers production-ready ADK agents and multi-agent systems in Python/Java/Go with clean structure, tests, safe tools, and deployment automation.
Recommends ADK architectures, tool contracts, scaffolds, and deployment plans for production agents on Google Cloud Vertex AI Agent Engine.
Share bugs, ideas, or general feedback.
STOP — Do NOT write code yet. If no project exists, scaffold first with
agents-cli scaffold create <name>. If the user already has code, useagents-cli scaffold enhance .to add the agents-cli structure. Runagents-cli infoto check if a project already exists. Skipping this leads to missing eval boilerplate, CI/CD config, and project conventions.
agents-cli is a CLI and skills toolkit for building, evaluating, and deploying agents on Google Cloud using the Agent Development Kit (ADK). It works with any coding agent — Gemini CLI, Claude Code, Codex, or others. Install with uvx google-agents-cli setup.
Requires: google-agents-cli
= 0.2.0 If version is behind, run: uv tool install "google-agents-cli=0.2.0" Check version: agents-cli info Install uv first if needed.
Re-read the relevant skill before each phase — not after you've already started and hit a problem. Context compaction may have dropped earlier skill content. If skills are not available, run uvx google-agents-cli setup to install them.
| Phase | Skill | When to load |
|---|---|---|
| 0 — Understand | — | No skill needed — read .agents-cli-spec.md if present, else clarify goals with the user |
| 1 — Study samples | — | Check Notable Samples table below — clone and study matching samples before scaffolding |
| 2 — Scaffold | /google-agents-cli-scaffold | Before creating or enhancing a project |
| 3 — Build | /google-agents-cli-adk-code | Before writing agent code — API patterns, tools, callbacks, state |
| 4 — Evaluate | /google-agents-cli-eval | Before running any eval — evalset schema, metrics, eval-fix loop |
| 5 — Deploy | /google-agents-cli-deploy | Before deploying — target selection, troubleshooting 403/timeouts |
| 6 — Publish | /google-agents-cli-publish | After deploying, if registering with Gemini Enterprise (optional) |
| 7 — Observe | /google-agents-cli-observability | After deploying — traces, logging, monitoring setup |
If agents-cli is not installed:
uv tool install google-agents-cli
uv command not foundInstall uv following the official installation guide.
The platform formerly known as "Vertex AI" is now Gemini Enterprise Agent Platform (short: Agent Platform). Users may refer to products by different names. Map them to the correct CLI values:
| User may say | CLI value |
|---|---|
| Agent Engine, Vertex AI Agent Engine, Agent Runtime | --deployment-target agent_runtime |
| Vertex AI Search, Agent Search | --datastore agent_platform_search |
| Vertex AI Vector Search, Vector Search | --datastore agent_platform_vector_search |
| Agent Engine sessions, Agent Platform Sessions | --session-type agent_platform_sessions |
The vertexai Python SDK package name is unchanged.
Before writing or scaffolding anything, understand what you're building.
If .agents-cli-spec.md exists in the current directory, read it — it is your primary source of truth. Otherwise:
Do NOT proceed to planning, scaffolding, or coding. Ask the user the questions below and wait for their answers. You MUST have the user's answers before moving on. Do not assume, research, or fill in the blanks yourself. The user's intent drives everything — skipping this step leads to wasted work.
Always ask:
Ask based on context:
agent_platform_vector_search (embeddings, similarity search) or agent_platform_search (document search, search engine)./google-agents-cli-adk-code.Once you have the user's answers, write the spec to .agents-cli-spec.md in the current directory and get the user's approval. See /google-agents-cli-scaffold for how these choices map to CLI flags. At minimum include these sections — expand with more detail if the user wants a thorough spec:
# Agent Spec
## Overview
Describe the agent's purpose and how it works.
## Example Use Cases
Concrete examples with expected inputs and outputs.
## Tools Required
Each tool with its purpose, API details, and authentication needs.
## Constraints & Safety Rules
Specific rules — not just generic statements.
## Success Criteria
Measurable outcomes for evaluation.
## Reference Samples
Check the Notable Samples in Phase 1 — list any that match this use case.
Optional sections for more detailed specs: Edge Cases to Handle, Architecture & Sub-Agents, Data Sources & Auth, Non-Functional Requirements.
Once you have a clear understanding, proceed to Phase 1.
Ask yourself: is there a sample that can help me design this and cut time? Scan the keywords below. Multiple samples can match — clone and study all that are relevant.
# Clone a sample to study — read the key files, understand the patterns, then apply
# them to your own scaffolded project. Do NOT use `adk@<sample>` scaffolding.
git clone --filter=tree:0 --sparse https://github.com/google/adk-samples /tmp/adk-samples 2>/dev/null; \
cd /tmp/adk-samples && git sparse-checkout add python/agents/<sample-name>
ambient-expense-agent — Agent that runs on a schedule or reacts to events, with no interactive user.
Keywords: scheduled, cron, daily, pubsub, event-driven, alerts, email, ambient
Key files: expense_agent/fast_api_app.py, expense_agent/agent.py, expense_agent/config.py, terraform/adk-ae-oauth — Agent with OAuth 2.0 user consent, deployed to Agent Runtime with Gemini Enterprise.
Keywords: OAuth, authentication, user consent, Google Drive, Agent Runtime, Gemini Enterprise
Key files: README.md, adk_ae_oauth/tools.py, adk_ae_oauth/auths.pygenmedia-for-commerce — Full-stack agent with React UI, MCP tools, media/image handling, and Gemini Enterprise registration.
Keywords: MCP, media, video generation, Veo, virtual try-on, retail, full-stack, React, Gemini Enterprise
Key files: genmedia4commerce/agent.py, genmedia4commerce/agent_utils.py, genmedia4commerce/fast_api_app.pydeep-search — Research agent that iterates until quality is met, with source citations.
Keywords: research, citations, iterative, grounding, multi-agent, human-in-the-loop, web search, report
Key files: app/agent.py, app/config.pysafety-plugins — Reusable safety guardrails that plug into any agent runner.
Keywords: safety, guardrails, model armor, filters
Key files: safety_plugins/plugins/model_armor.py, safety_plugins/plugins/agent_as_a_judge.py, safety_plugins/main.pydata-science — Agent that executes code in a managed sandbox for data analysis.
Keywords: SQL, BigQuery, code execution, sandbox
Key files: data_science/sub_agents/analytics/agent.pymemory-bank — Conversational agent with cross-session memory via Memory Bank (Cloud Run and Agent Runtime).
Keywords: memory, cross-session, recall, context, remember, Memory Bank
Key files: app/agent.py, app/agent_runtime_app.py, app/fast_api_app.pyIf no sample matches, proceed to Phase 2. But first — are you sure? Re-read the user's request and compare it against the keywords above. Skipping a matching sample means rebuilding patterns that already exist.
IMPORTANT — Exit criteria: After studying a sample, ask yourself: can I apply anything from this sample to help me deliver the design? Note what you'll reuse before moving on. Do NOT proceed until you've answered this.
This list is useful at any phase — revisit it when you hit deployment, publishing, or infrastructure questions. A sample's Terraform or registration pattern may be exactly what you need later.
Use /google-agents-cli-scaffold to create a new project or import an existing one into the agents-cli format (adding deployment, CI/CD, infrastructure). It covers architecture choices (deployment target, agent type, session storage) and project creation or enhancement.
Skip this phase if the project was already created or enhanced by agents-cli — run agents-cli info from the project root to check.
Implement the agent logic:
GEMINI.md / CLAUDE.md for directory name)agents-cli run "your prompt" to verify the agent works after changes — this is the fastest way to check behavior without leaving the terminalIf the user asks for interactive testing, suggest agents-cli playground — it opens a web-based playground for manual conversation with the agent.
For ADK API patterns and code examples, use /google-agents-cli-adk-code.
NEVER write pytest tests that assert on LLM output content (e.g., checking for keywords in responses, verifying persona, validating tone). LLM outputs are non-deterministic — these tests are flaky by nature and belong in eval, not pytest. Use
agents-cli runfor quick checks andagents-cli eval runfor systematic validation.
For agentic_rag projects, provision the datastore before testing: agents-cli infra datastore, then agents-cli data-ingestion. Use infra datastore — not infra single-project (same datastore provisioning but faster, skips unrelated Terraform).
This is the most important phase. Evaluation validates agent behavior end-to-end.
MANDATORY: Activate /google-agents-cli-eval before running evaluation.
It contains the evalset schema, config format, and critical gotchas. Do NOT skip this.
Do NOT skip this phase. After building the agent, you MUST proceed to evaluation. Do NOT write pytest tests to validate agent behavior — that is what eval is for.
uv run pytest vs agents-cli eval run — know the difference:
uv run pytest — Tests code correctness: imports work, functions return expected types, API contracts hold. Does NOT test whether the agent behaves well.agents-cli eval run — Tests agent behavior: response quality, tool usage, persona consistency, safety compliance. This is what validates your agent actually works.agents-cli run "prompt" — Quick one-off smoke test during development. If testing multiple prompts use the --start-server option to persist the local server, which reduces overhead for repeated calls and allows resuming local sessions via --session-id. Use this for fast iteration, not pytest.NEVER write pytest tests that check LLM response content (e.g., asserting pirate keywords appear, checking if the agent mentions allergies). LLM outputs are non-deterministic. Use eval with LLM-as-judge criteria instead.
agents-cli eval runExpect 5-10+ iterations here.
Once evaluation thresholds are met:
agents-cli info to see current configagents-cli scaffold enhance . --deployment-target <target>
See /google-agents-cli-deploy for the deployment target decision matrix (Agent Runtime vs Cloud Run vs GKE).agents-cli deployIMPORTANT: Never deploy without explicit human approval.
Not all agents require this — currently supporting Gemini Enterprise. See /google-agents-cli-publish for registration modes, flags, and troubleshooting.
After deploying, use observability tools to monitor agent behavior in production. See /google-agents-cli-observability for Cloud Trace, prompt-response logging, BigQuery Analytics, and third-party integrations.
Agents routinely skip steps with plausible-sounding excuses. Recognize these and push back:
| Shortcut | Why it fails |
|---|---|
| "The user's request is clear enough, no need to clarify" | You're guessing at requirements. Phase 0 exists to confirm intent before scaffolding — even one question can prevent a full rework. |
"The agent responded correctly in agents-cli run, so eval isn't needed" | One prompt is not a test suite. Eval catches regressions, edge cases, and tool trajectory issues that a single run never will. |
| "I'll use a newer/better model" | The scaffolded model was chosen deliberately. Changing it without being asked violates code preservation (Principle 1) and often breaks things — wrong location, deprecated version, or 404. Your training data is likely out of date — rely on the skills and the model listing command, not your knowledge of model names. |
| "I can skip the scaffold and set up manually" | Manual setup misses eval boilerplate, CI/CD config, and project configuration manifest conventions. Use agents-cli create even for quick experiments. |
Code modifications require surgical precision — alter only the code segments directly targeted by the user's request and strictly preserve all surrounding and unrelated code.
Mandatory Pre-Execution Verification:
Before finalizing any code replacement, verify the following:
model, version, api_key), comments, and formatting outside the identified target remain identical.Example:
root_agent = Agent(
name="recipe_suggester",
model="gemini-1.5-flash", # UNINTENDED - model was not requested to change
instruction="You are a recipe suggester."
)
root_agent = Agent(
name="recipe_suggester", # OK, related to new purpose
model="gemini-flash-latest", # PRESERVED
instruction="You are a recipe suggester." # OK, the direct target
)
Model Selection — CRITICAL:
# Use 'global' or any supported region (e.g. 'us-east1')
uv run --with google-genai python -c "
from google import genai
client = genai.Client(vertexai=True, location='global')
for m in client.models.list(): print(m.name)
"
https://adk.dev/agents/models/google-gemini/index.md. See also stable model versions.Running Python Commands:
uv to execute Python commands (e.g., uv run python script.py)uv sync before executing scriptsBreaking Infinite Loops:
terraform import instead of retrying creationterraform CLI)Troubleshooting:
/google-agents-cli-adk-code first — it covers most common patternscurl https://adk.dev/llms.txt) for deep divesagents-cli <command> --help — the output ends with a Source: line pointing to the exact source file implementing that command. Read it to understand the logic and diagnose failures. Use agents-cli info to get the full CLI install path if you need to browse across multiple files.When something breaks, follow this sequence — don't skip steps or shotgun fixes:
agents-cli run "prompt" to isolate agent behavior from deployment issues. Add -v (--verbose) to print the full JSON event payloads — useful for inspecting tool calls, intermediate steps, and silent failures.Stop-the-line rule: If a change breaks something that was working, stop feature work and fix the regression first. Don't push forward hoping to circle back — regressions compound.
.env files and env var assignments (e.g., GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION) are typically required for the agent to function — never remove or modify them unless the user explicitly asks.env file exists in the project root, treat it as essential configuration.env entries — see /google-agents-cli-deploy for secret management guidanceWhen you need specific infrastructure files (Terraform, CI/CD, Dockerfile) but don't want to modify the current project, use /google-agents-cli-scaffold to create a temporary project in /tmp/ and copy over what you need.
| File | Contents |
|---|---|
references/internals.md | Underlying tools and commands that agents-cli wraps (adk, pytest, ruff, uvicorn) |
| Command | Purpose |
|---|---|
agents-cli setup | Install skills to coding agents |
agents-cli setup --skip-auth | Install skills, skip authentication step |
agents-cli setup --dry-run | Preview what setup would do without executing |
agents-cli update | Reinstall/update skills to latest version |
| Command | Purpose |
|---|---|
agents-cli scaffold create <name> | Create a new project |
agents-cli scaffold enhance . | Add deployment / CI-CD to project |
agents-cli scaffold upgrade | Upgrade project to newer agents-cli version |
| Command | Purpose |
|---|---|
agents-cli playground | Interactive local testing (ADK web playground) |
agents-cli run "prompt" | Run agent with a single prompt (non-interactive). Add -v for full JSON event payloads. |
agents-cli lint | Check code quality |
agents-cli lint --fix | Auto-fix linting issues |
agents-cli lint --mypy | Also run mypy type checking |
agents-cli install | Install project dependencies (uv sync) |
| Command | Purpose |
|---|---|
agents-cli eval run | Run evaluation against evalsets |
agents-cli eval run --evalset F | Run a specific evalset |
agents-cli eval run --all | Run all evalsets |
agents-cli eval compare BASE CAND | Compare two eval result files |
| Command | Purpose |
|---|---|
agents-cli deploy | Deploy to dev (requires human approval) |
agents-cli infra single-project | Provision single-project GCP infrastructure without CI/CD (Terraform, optional) |
agents-cli infra cicd | Set up CI/CD pipeline + staging/prod infrastructure |
agents-cli publish gemini-enterprise | Register agent with Gemini Enterprise |
| Command | Purpose |
|---|---|
agents-cli info | Show CLI install path, skills location, and project config |
Use agents-cli info to discover the CLI install path — this is where the CLI source code lives. Read files under that path to understand CLI internals, command implementations, or template logic. The command only shows project details when run inside a generated agent project (i.e., one with agents-cli-manifest.yaml in the project root directory).
| Command | Purpose |
|---|---|
agents-cli login --interactive | Authenticate with Google for ADK services (-i / --interactive is required for interactive browser-based authentication) |
agents-cli login --status | Show authentication status |
[!NOTE] When using an API key to authenticate, the
logincommand does not persist them automatically, it just aids in retrieving them and providing instructions on how they can be persisted.
Troubleshooting hint: If skills seem outdated or incomplete, reinstall:
agents-cli setup --skip-authOnly do this when you suspect stale skills are causing problems.
/google-agents-cli-scaffold — Project creation, requirements gathering, and enhancement/google-agents-cli-adk-code — ADK Python API quick reference and production sample agents/google-agents-cli-eval — Evaluation methodology, evalset schema, and the eval-fix loop/google-agents-cli-deploy — Deployment targets, CI/CD pipelines, and production workflows/google-agents-cli-publish — Gemini Enterprise registration/google-agents-cli-observability — Cloud Trace, logging, BigQuery Analytics, and third-party integrations