agent-review
Skill0 starsChanged 13 days agoApache-2.0View on GitHub
Report-only review of an existing Google ADK Python agent, read statically so it works on a project that does not yet run. Checks loader and naming rules, model policy (deprecated, preview and hardcoded ids), the constructor kwargs that raise, tool contracts (docstrings, type hints, return shapes, raising versus returning errors), state writes that never persist, App wiring, ADK 2.x drift such as the deprecated workflow shells and global_instruction, backend configuration, and whether the instruction has branches an eval case could cover. Optionally imports the agent the way ADK does, to prove it loads. Use when asked to "review / lint / check my ADK agent", "is this ADK 2 compatible", "why won't adk find my agent", "why does my agent fail at startup", or before trusting an agent you did not write. Don't use for evalset quality (use `/adk:eval-review`), runtime misbehaviour (use `/adk:agent-debug`), or building a new agent (use `/adk:agent-create`).
11 other projects use a version of this.
Adopted by
Most recently taken up by
- blamechris/chroxytheir own version, first seen Nov 8, 2026
- khoralabs/skillstheir own version, first seen Nov 1, 2026
- IlyaSemenov/agent-review-skilltheir own version, first seen Oct 31, 2026
- mementomori-co/maker-masterytheir own version, first seen Oct 25, 2026
- facebookresearch/autoform-bottheir own version, first seen Oct 25, 2026
- fabioc-aloha/Alex_ACT_Editiontheir own version, first seen Oct 13, 2026
Used with
Projects with it also use commit.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SentrySkillcommit
Create commit messages following Sentry conventions. Use when committing code changes, writing commit messages, or formatting git history. Follows conventional commits with Sentry-specific issue references.
Also in 3 projects that use this
Other versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- DmNote-App/DmNote★ 4.2ksame name
- foldkit/foldkit★ 1.1ksame name
- Tsuzat/Edra★ 675same name
- facebookresearch/autoform-bot★ 136same name
- blamechris/chroxy★ 8same name
- IlyaSemenov/agent-review-skill★ 4same name
- ethanaubuchon/dossier-tradecraft★ 3same name
- mementomori-co/maker-mastery★ 2same name
- khoralabs/skills★ 1same name
- ngc-shj/claude-code-config★ 1same name
1 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
- adkSkill
- agent-createSkill
- agent-debugSkill
- eval-analyzeSkill
- eval-ciSkill
- eval-createSkill
- eval-criteriaSkill
- eval-reviewSkill
- eval-runSkill
- eval-simulationSkill
The file
We split this skill into the rules it gives an agent
2 rules. 0 are common, 2 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 55
Confirm before editing anything: If the user wants fixes applied, make the smallest change that addresses each finding, and re-run the …
- Distinctive: line 115
Report only: Do not edit as part of reviewing, even for something obvious.
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Review an ADK agent
Static first, because a review that needs the project to run is useless exactly when you need it most. Nothing here imports the agent unless you ask for the load check.
This skill reports. It does not edit. Fixes happen after the user has seen the findings and chosen.
${CLAUDE_SKILL_DIR} is set by the skill runtime to this skill's own
directory. Use it verbatim in every command below; a sibling skill's scripts
are at ${CLAUDE_SKILL_DIR}/../<skill>/scripts/.
Flow
Review.
python3 ${CLAUDE_SKILL_DIR}/scripts/lint_agent.py <agent-dir>Optionally prove it loads, which needs an interpreter with ADK:
python3 ${CLAUDE_SKILL_DIR}/scripts/load_agent.py <agent-dir>- Report in severity order, leading with the count: "2 errors, 5 warnings". An error means ADK will reject it or the behaviour cannot work; a warning means it runs, but not as intended.
- Options. Typically: fix the errors, address the model policy, add an App export, migrate the deprecated workflow shells, or move on to eval coverage.
- Confirm before editing anything. If the user wants fixes applied, make the smallest change that addresses each finding, and re-run the review.
The fourteen dimensions
| # | Dimension | What goes wrong |
| 1 | loader and naming | nothing loadable exported; a name that is not an identifier, or is user; two agents in the tree with one name (AGT015); an app directory adk cannot load (ENV015) |
| 2 | model policy | retiring gemini-2.0-flash / gemini-2.5-flash (a plugin policy, so a warning), preview ids, hardcoded dated ids; a max_output_tokens below 1024 on a thinking model (AGT084) |
| 3 | agent configuration | sampling kwargs passed directly; generate_content_config carrying tools, system_instruction or response_schema; max_parallel_workers= on an LlmAgent (AGT085) |
| 4 | tool contracts | no docstring, no Args:, untyped parameters, raising instead of returning, no status |
| 5 | state | session.state[...] = ... on a service-fetched session; an instruction {key} nothing writes or seeds (AGT080) |
| 6 | App wiring | no App, so plugins, caching and resumability cannot reach a run |
| 7 | 2.x drift | SequentialAgent / ParallelAgent / LoopAgent, global_instruction, YAML config agents |
| 8 | environment | no backend configured; missing project or location |
| 9 | eval readiness | an instruction with no branch, so there is nothing to test |
| 10 | blocking calls | time.sleep, requests, subprocess in a synchronous tool |
| 11 | context caching | a cached prefix that changes per request, a long instruction nothing caches, an out-of-range ContextCacheConfig, caching no eval case can exercise (AGT060–AGT063), and plugin imports that need 2.11 or a public path (AGT065, AGT066), and a prefix too small for the cache floor (AGT067) |
| 12 | skills | a SKILL.md ADK will reject, instructions too long to disclose progressively, an agent instruction that repeats a skill's body, a description too vague to trigger it, lifecycle settings out of range (AGT070–AGT075), two sibling skills described in mostly the same words (AGT083) |
| 13 | context engineering | an EventsCompactionConfig ADK rejects, long conversations with no compaction, a sub-agent scoped wider than its job, a tool returning a large inline blob instead of an artifact (AGT076–AGT079), memory tools inside an AgentTool (AGT082) |
| 14 | streaming tools | an async-generator tool on a text model, or on a live model whose evals lack live_model_config (AGT081) |
Decision rules
- Errors are things ADK rejects or behaviour that cannot work. A reserved
name, a forbidden
generate_content_configfield, a state write that never persists. Fix these first: some stop the agent loading at all. - Warnings run but mislead. A deprecated workflow shell still works today, and so does a retiring model id. Say when the clock is ticking rather than implying it is broken — and where the clock is this plugin's policy rather than ADK's, say whose policy it is.
- A hardcoded model id is a warning, not a style note. Dated ids get retired, and the agent stops working on a date nobody wrote down.
- A raising tool is worth explaining, not just flagging. An exception ends the invocation; a returned error is an observation the model can act on. That is the difference between an agent that self-corrects and one that gives up.
- A streaming tool belongs to a live agent.
AGT081as a warning means a text agent has an async-generator tool: on 2.12+ its secondyieldaborts arun_asyncrun, on 2.9 its body never runs. As an info it means the agent is live but no eval config setslive_model_config, so evals never exercise the streaming. Point at../agent-create/references/live-agents.md. - Released behaviour decides the severity.
AGT082(memory tools inside anAgentTool) warns because through 2.13.0 they search a fresh, empty store; main after 2.13.0 shares the parent's memory, so with--adk-versionabove 2.13.0 it drops to info.ENV015is an error when the loader refuses the app directory name (a hyphen, dot, space or non-ASCII letter) and an info for a keyword or leading digit, which loads today.AGT085(max_parallel_workers=on anLlmAgent) is an error on every release, which refuses the kwarg at construction; above 2.13.0 it is an error only for a value below 1 or a missingparallel_worker=True. Never flag@node/Node. - Two infos that read like style notes and are not.
AGT083: the model picks a skill from its name and description alone, so two descriptions in the same words let the broader skill take the other's requests; suggest rewording and a negative sibling activation case (/adk:eval-create).AGT084: an output cap under 1024 on a thinking model is a ceiling, not a thinking budget, so hard turns come back truncated; suggestthinking_configor the instruction instead. Both are static and version-independent. - The load check is optional and it costs an import. Offer it when the static review is clean but the agent is reported not to work, or when the user is mid-migration.
- Report only. Do not edit as part of reviewing, even for something obvious.
References
| Question | File |
| Every finding id, what triggers it, and its ADK source | review-checklist.md |
| The model policy and why it exists | model-policy.md |
| Decoding a failed load | load-check.md |
| Context caching: the decision, the prefix rules, measuring it | ../agent-create/references/context-caching.md |
| Skills: frontmatter limits, progressive disclosure, lifecycles | ../agent-create/references/skills-and-progressive-disclosure.md |
Context engineering: compaction, include_contents, artifacts | ../agent-create/references/context-engineering.md |
Live agents: streaming tools, stop_streaming, run_live vs run_async | ../agent-create/references/live-agents.md |
The 1.x-to-2.x drift table lives in the router skill:
../adk/references/adk-1x-to-2x-migration.md.
Scripts
| Command | Does | Exit codes |
scripts/lint_agent.py <agent-dir> [--strict] [--no-backend] [--adk-version V] [--json] | the static review, fourteen dimensions (streaming tools: AGT081, warn on a text model, info on a live one whose evals lack live_model_config); --adk-version stands in for the resolved runner in version-gated checks (AGT066, AGT074, AGT082) | 0 clean, 1 findings, 2 no agent |
scripts/load_agent.py <agent-dir> [--json] | imports it the way ADK does | 0 loaded, 1 did not load, 2 no runner |
Completion checklist
- The review ran and its counts were reported.
- Every error was explained with its consequence, not just its rule.
- Model policy findings name the replacement.
- Deprecated APIs were linked to their 2.x replacement.
- Nothing was edited without the user asking.
- If the agent has no evalset, the user was pointed at
/adk:eval-create.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

