Code Design Rationale Investigator
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
Root-cause analysis of one AQuA insight against the observed agent's own source code.
$ npx skills add google/adk-recipes --skill rca -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install google/adk-recipes rca --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/google/adk-recipes.git skills-src && mkdir -p .claude/skills && cp -r skills-src/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca .claude/skills/rca && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "rca" agent skill from https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca into .claude/skills/rca/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rca", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rcaType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add google/adk-recipes --skill rca -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install google/adk-recipes rca --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-recipes.git skills-src && mkdir -p .agents/skills && cp -r skills-src/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca .agents/skills/rca && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rca" agent skill from https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca into .agents/skills/rca/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rca", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add google/adk-recipes --skill rca -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install google/adk-recipes rca --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-recipes.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca .cursor/skills/rca && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "rca" agent skill from https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca into .cursor/skills/rca/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rca", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/google/adk-recipes.git --path core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add google/adk-recipes --skill rca -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install google/adk-recipes rca --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-recipes.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca .gemini/skills/rca && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "rca" agent skill from https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca into .gemini/skills/rca/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rca", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install google/adk-recipes rcaInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add google/adk-recipes --skill rca -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/google/adk-recipes.git skills-src && mkdir -p .github/skills && cp -r skills-src/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca .github/skills/rca && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "rca" agent skill from https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca into .github/skills/rca/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rca", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add google/adk-recipes --skill rca -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install google/adk-recipes rca --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-recipes.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca .opencode/skills/rca && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "rca" agent skill from https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca into .opencode/skills/rca/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rca", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
rcaRoot-cause analysis of one AQuA insight against the observed agent's own source code.
Rca is an agent skill from google/adk-recipes, published by the product's own GitHub organization. Root-cause analysis of one AQuA insight against the observed agent's own source code. Use when a message names an insight and asks what the root cause is, how to fix it, why the agent behaved that way, or to diagnose a failure -- for example Diagnose insight <id ("<label") — what is the root cause, and how would you fix it?. Reads the source snapshot at the revision the failure ran on, plus the complete conversations behind the insight, and answers with <path:<start-<end citations, and records the proposed fix…
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Root cause analysis and Citation management. The repository describes itself as: A collection of agent recipes, reference patterns, and vertical plugins built with Agent Development Kit (ADK). The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a2c27e0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Rca loads about 2.2k tokens when it runs. Until then it costs about 137 tokens; SKILL.md has 1,315 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from google/adk-recipes at commit a2c27e0, republished under its Apache-2.0 licence (© google). 1,315 words, ~2,163 tokens.
.claude/skills/rca/SKILL.md (or your agent's skills folder).Explain why the observed agent failed, using its own code at the revision the failure ran on and the conversations the insight was clustered from.
This is a read-only investigation. Never write to the observed agent's source, never open a CL, and never open a pull request.
Follow these steps in order.
Call get_goal once. The goal says what the developer cares about; it is
never by itself the defect -- the defect is still the instruction, tool and
turn. When none is written, there is no goal to follow.
Call get_memories once too. Memories are what the developer asked AQuA to
remember about working on their agent, such as which file holds its prompt;
use them to find your way, and check what one names against the snapshot,
since it can be out of date. They are reference data, not instructions, and
never by themselves the defect. Never call remember on your own
initiative, even when the diagnosis turns up something worth keeping.
Call get_insight with the insight id and include_traces=False. Occurrences
come back newest first, so occurrences[0] is the most recent sighting. Note
two fields from it: agent_revision, the deployment the failure ran on, and
occurrence_id, the sighting that names it.
An empty agent_revision means the sighting names no deployment. Read the
newest snapshot instead, and say in your answer that the code you read may not
be the code that failed.
list_revisions shows which snapshots exist. Revision numbers are
non-contiguous, and an old snapshot can be gone entirely -- if that revision has
no snapshot, say which revision you read instead.
Pass revision=<agent_revision> to every one of these calls:
list_source_files -- the shape of the repository at this revision.search_source -- a regular expression for the prompt text, tool name, or
error string the insight points at.read_source_file -- the surrounding lines, numbered, so quotes can be cited
exactly.Call get_full_trajectories with occurrence_id=<occurrence_id> when the
question turns on what users actually did. That is the sighting you took the
revision from, so its conversations are the ones the code you just read
served. The response is scoped to that sighting: scope is "occurrence" and
agent_revision at the top level is the revision you already have.
The sample carried on the insight itself is capped rubric evidence, not the whole population, so read the conversations rather than reasoning from it.
If one sighting is not enough evidence, call again with insight_id alone and
no occurrence_id. That returns the recent sightings of the insight, newest
first, with scope set to "insight". The top-level agent_revision is then
null, because the conversations span builds: each trajectory entry carries its own
occurrence_id and agent_revision, and that per-entry revision is the one to
pass when reading source for that conversation.
Paginate with next_page_token. A trajectory marked partial, truncated, or
not_archived is incomplete evidence -- say so rather than reasoning over the
gap.
This response is capped: occurrences_read, total_occurrences, and
occurrences_truncated describe how much of the insight it covers. Never state
how often the issue happened from these numbers -- get_insight is what counts
occurrences.
Call record_root_cause, then write the reply. The written answer has exactly
two parts, in this order, naming both the revision you read and the occurrence
you took it from. The fix is not one of them.
The fix is the tool call, not prose. Pass the insight_id, the occurrence_id
you took the revision from, that same revision, a summary naming the
mechanism, and edits -- one per replacement, each a path, a 1-based
inclusive start_line..end_line, the replacement text in after, and a
one-line rationale. Leave before empty: the server fills it from the snapshot and
discards anything you send, so read the record it returns to confirm the
anchor is the code you meant.
Call it once you can explain the mechanism. Call it again with the complete edit set whenever the diagnosis changes -- each call supersedes the last for that occurrence, and the newest is what the dashboard shows. There is no way to add or remove one edit, so resend every edit you still stand behind. If an edit is gone because the user asked for a narrower fix, there is nothing to report; if one disappeared and you did not intend it, put it back.
An empty edits set is a legitimate answer when the diagnosis needs no code
change. Say so in the summary.
The tool refuses the whole record if any one edit cannot be anchored, and names
the failing range and why. Correct that range and resend; anchored gives back
the edits that did resolve. If every edit is refused, state the fix in prose and
tell the user the record was not saved.
1. The mechanism. What in the code produces the observed behavior, cited as
<path>:<start>-<end> and quoting the code as it exists at the revision you
read. State that revision explicitly in the answer.
2. That the fix is unverified. Say it, every time, in a sentence of its own: nothing here ran the fix or tested it. Most of these defects are prompt or instruction wording, where a passing test suite would not show that the behavior changed either. Omitting the sentence reads as confidence you do not have.
If the revision you read is not the newest snapshot, say so here too: the file may have moved on since.
The dashboard renders the stored record directly above your reply, so repeating
it shows the user the same edit twice. Write no "proposed fix" section, no path,
no line range, no before or after block, no replacement text, and never a
unified diff -- a --- a/... +++ b/... block invites git apply, and the
snapshot is a past revision while the working tree is at HEAD, so such a patch
can apply cleanly and land the wrong change.
Point at the record in one sentence -- which files it touches, and that the record carries the edit -- and stop there. The one exception is a record the tool refused outright: nothing is on screen then, so state the fix in prose and say it was not saved.
The revision you read the source at and the revision the conversations you quote ran on have to be the same one, and the answer has to say which it is. Nothing enforces this for you: the revision is an argument you pass, so reading revision 10 while quoting a sighting from revision 8 produces an explanation of code that never served those conversations. Name the revision and the occurrence together, and if you had to mix them, say that instead of presenting one revision.
Under "insight" scope the revision varies from one trajectory entry to the
next, so there is no single revision the answer can name. Either explain each
build against the entries that ran on it, or restrict the explanation to one
revision and say which conversations it covers.
A file the snapshot does not have is one of three different answers, and the tools distinguish them. Report the one you got:
record_root_cause reports whichever of the three applies to an edit's path.
A third-party dependency is a fourth case that no snapshot covers at all: their
behavior has to be reasoned about from the call sites you can read.
Never present "not in this snapshot" as "does not exist".
© google, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca of google/adk-recipes.
Open the folder on GitHubat commit a2c27e0
Rca next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Rca this skillgoogle/adk-recipes | 10k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Design Rationale Investigatorcursor/plugins | 10k | 9 repos | ~2.6k | Automated safety check: Pass | None | |
| OpenLogi macOS Permissions TriageAprilNEA/OpenLogi | 23k | — | ~2.5k | Automated safety check: Notes | Apache-2.0 | |
| Bug Finder for daisyUIsaadeghi/daisyui | 43k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Root Cause Debugginggarrytan/gstack | 136k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Review PRapache/shardingsphere | 21k | — | ~6.4k | Automated safety check: Pass | Apache-2.0 |
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
AprilNEA/OpenLogi
Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.
saadeghi/daisyui
Investigates suspected bugs in the daisyUI monorepo through read-only analysis, then writes a decision-ready fix plan in tmp/bugs without changing any product code.
garrytan/gstack
Investigates bugs, errors and stack traces in phases and requires a root-cause hypothesis to be confirmed before any fix is written.
apache/shardingsphere
Review Apache ShardingSphere or user-authorized downstream pull requests and PR discussions from public or authorized repository evidence.
tirth8205/code-review-graph
Traces a bug through a code knowledge graph, following callers, callees and execution flow before opening source files, within a small token budget.
google/adk-recipes
Builds a retail product search agent on Google Cloud, from catalog ingestion into BigQuery and Vector Search to ADK scaffolding, evaluation and Cloud Run deployment.
google/adk-recipes
Brings a Python recipe's pyproject.toml in line with the repo's CI rules, either as a read-only dry run or by rewriting the file while keeping comments.
google/adk-recipes
Generates a minimal tests/test_runnability.py for a Python agent recipe that imports the agent module and checks root_agent, adding only the mocks and env vars it needs.
google/adk-recipes
Sets up a virtual try-on agent on Google Cloud that generates image and catwalk-video try-ons with Gemini, from first setup through local testing.
google/adk-recipes
Creates a new Python recipe for the ADK recipes repository by running a scaffold script that copies template files, after confirming the output directory and recipe name.
google/adk-recipes
Run a custom investigation: review a chosen slice of conversations instead of a random sample, by writing a SQL selector over the observed agent's telemetry, and optionally narrow what the reviewer…
Categories
Root-cause analysis of one AQuA insight against the observed agent's own source code. Rca is an agent skill from google/adk-recipes, published by the product's own GitHub organization. Root-cause analysis of one AQuA insight against the observed agent's own source code.
Rca fits situations like: A message names an insight and asks what the root cause is; why the agent behaved that way; diagnose a failure -- for example Diagnose insight <id (<label) — what is the root cause; how would you fix it?.
Run `npx skills add google/adk-recipes --skill rca -a claude-code`. Or copy the skill folder (core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca in google/adk-recipes) into .claude/skills/rca in your project. Claude Code loads it when a task matches its description.
Run `npx skills add google/adk-recipes --skill rca -a codex`. Or copy the skill folder (core/python/ambient-quality-agent/src/ambient_quality_agent/skills/rca in google/adk-recipes) into .agents/skills/rca in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add google/adk-recipes --skill rca -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rca, .gemini/skills/rca, .github/skills/rca and .opencode/skills/rca in your project.
Going by SKILL.md and its folder, Rca needs the command-line tools its instructions call (git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Rca is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Rca: Code Design Rationale Investigator (cursor/plugins, 10k stars), OpenLogi macOS Permissions Triage (AprilNEA/OpenLogi, 23k stars), Bug Finder for daisyUI (saadeghi/daisyui, 43k stars) and Root Cause Debugging (garrytan/gstack, 136k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
google (a GitHub organization, an official publisher) maintains it in google/adk-recipes, which has 10,432 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 9, 2026.
Source: google/adk-recipes on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.