adk-samples / llm-auditor
AGENTS.md11k starsChanged 45 days agoApache-2.0View on GitHub
Show how to compose a SequentialAgent in ADK Kotlin: two LlmAgents that run in order, where the second consumes what the first produced. The domain task — fact-check an answer, then correct it — is a vehicle for three ADK concepts that are hard to demonstrate in isolation: 1. Sequential multi-agent composition with a shared model instance. 2. A built-in tool (GoogleSearchTool) grounding one sub-agent. 3. An AfterModelCallback post-processing a sub-agent's raw output before it reaches the user. This is…
- Reads credentials
1 other project uses a version of this.
Trending
More talk lately.about the whole repository
Most recently taken up by
- google/adk-recipesword for word, first seen Oct 13, 2026
Who's talking about google/adk-samples
- @stephanjanssen.be“Google just open sourced a Python Agent Development Kit @ github.com/google/adk-p... Native Streaming and …”Bluesky · Apr 9, 2025 · 12 likes
- google/adk-python“stream_query and HTTP Streaming to Vertex AI Agent Return Empty/Exhausted Responses (Works via ADK Web)”GitHub · Jul 8, 2025 · 5 reactions
- google/adk-recipes“Support running agents fully locally without Vertex AI (offline mode)”GitHub · Apr 14, 2025 · 4 reactions
- google/adk-recipes“[BUG]: Deployment of Data Science agent to Agent Engine fails ”GitHub · Oct 1, 2025 · 3 reactions
- A Hacker News story“CaMeL-Powered Secure Agent Demo with ADK”Hacker News · Aug 9, 2025 · 3 points
The biggest 5 of 32 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 32
Talked about on GitHub, Bluesky, Hacker News and Stack Overflow (32 times).
On GitHub · 23
- Jul 8, 2025stream_query and HTTP Streaming to Vertex AI Agent Return Empty/Exhausted Responses (Works via ADK Web) — google/adk-python5 reactions
- Apr 14, 2025Support running agents fully locally without Vertex AI (offline mode) — google/adk-recipes4 reactions · 7 comments
- Oct 1, 2025[BUG]: Deployment of Data Science agent to Agent Engine fails — google/adk-recipes3 reactions · 1 comment
- Oct 28, 2026docs: fix 5 broken internal anchor links and 1 dead external link — google-gemini/gemini-cli1 reaction · 4 comments
- Oct 20, 2026Update adk-samples references and python/agents discovery paths for google/adk-recipes restructure — google/agents-cli1 reaction · 2 comments
18 more on GitHub
- Oct 12, 2026list: scan the template dir we cloned, not the clone root — GoogleCloudPlatform/agent-starter-pack1 reaction
- Feb 12, 2026interrupted sometimes didn't work — google/adk-python1 reaction · 10 comments
- Jan 8, 2026Implement 5 ADK agent projects that can be easily run by newbies — addyosmani/adk-product-engineers1 reaction
- Nov 20, 2025[BUG]: deep-search/gemini-fullstack: Wrong prompt to access session state — google/adk-recipes1 reaction
- Jun 21, 2025unable to import StdioServerParameters — google/adk-recipes1 reaction · 2 comments
- Jun 17, 2025VertexAiRagRetrieval needs llama-index package — google/adk-recipes1 reaction · 3 comments
- Jun 5, 2025Bug: display_name in file uploads causes error with Google.GenAI backend (non-Vertex) — google/adk-python1 reaction · 6 comments
- May 18, 2025Missing Image — google/adk-recipes1 reaction
- Apr 11, 2025Duplicate key name — google/adk-recipes1 reaction · 1 comment
- Oct 18, 2026Fix(audit,#17387): Day4 Track2 tranche 1 -- Lab8/Lab9 reformulations honnetes, cures accents — jsboige/CoursIA0 reactions · 14 comments
- Sep 17, 2026Rename sample references to recipe across repository — google/adk-recipes0 reactions
- Sep 12, 2026docs(deep-search): fix cloud deployment instructions and scaffold path (#2575) — google/adk-recipes0 reactions · 4 comments
- Sep 12, 2026docs: fix 404 link to relocated Deep Search sample — google/adk-docs0 reactions · 1 comment
- Sep 9, 2026Add repo skills instructions and documentation links to AI issue response workflow — google/adk-recipes0 reactions
- Jul 24, 2026Fix broken adk-samples links from deleted sample agents and notebooks — google/adk-docs0 reactions · 1 comment
- Jun 12, 2026ci: run the spam-detection bot via the adk-samples reusable workflow — google/adk-go0 reactions · 1 comment
- May 27, 2026Add Deep Search Agent project to portfolio showcase — asafsilner/silner-showcase-prime0 reactions
- Feb 12, 2026fix: path typo in story teller example — google/adk-recipes0 reactions · 3 comments
On Bluesky · 4
- Apr 9, 2025Google just open sourced a Python Agent Development Kit @ github.com/google/adk-p... Native Streaming and #MCP support out of the box 👀… — @stephanjanssen.be12 likes and reposts
- Jul 12, 2026Exploring the ADK Samples repo from Google—it’s like a guidebook for building intelligent agents. Seeing multi-language support reflects… — @iam.slys.dev1 likes and repost
- Dec 9, 2025📦 google / adk-samples ⭐ 6,900 (+67) 🗒 Python A collection of sample agents built with Agent Development Kit (ADK) — @github-trending.bsky.social1 likes and repost
- May 20, 2025Explore practical use-cases & build! 🧪 Hands-on Patent Search Codelab: codelabs.developers.google.com/patent-searc... 📚 Check out sample… — @kweinmeister.bsky.social0 likes and reposts · 1 reply
On Hacker News · 3
- Aug 9, 2025CaMeL-Powered Secure Agent Demo with ADK3 points · 1 comment
- Jun 13, 2025A collection of sample agents built with Agent Development (ADK)2 points
- Aug 13, 2025CaMeL agent to protect against indirect prompt injection1 point · 1 comment
On Stack Overflow · 2
- Aug 30, 2025Google ADK SequentialAgent sub_agents not waiting for user input1 vote
- Aug 29, 2025Issue with deploying ADK Agent on Google Agent Engine0 votes
Other versions1 project uses a version of this.
Word for word · 1
- google/adk-recipes★ 11k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
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.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository43 other files it gives its agents.
- AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/sandbox/home/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/tests/eval/fixtures/alex/repos/portland-trip/AGENTS.mdAGENTS.md
- core/python/ambient-expense-agent/AGENTS.mdAGENTS.md
- core/python/ambient-quality-agent/AGENTS.mdAGENTS.md
- core/python/cross-session-memory/AGENTS.mdAGENTS.md
- core/python/deep-search/AGENTS.mdAGENTS.md
- core/python/genmedia-for-commerce/AGENTS.mdAGENTS.md
- core/python/long-horizon-harness/AGENTS.mdAGENTS.md
- core/python/oauth-user-consent-flow/AGENTS.mdAGENTS.md
- core/python/rag-agent-search/AGENTS.mdAGENTS.md
- core/python/rag-vector-search/AGENTS.mdAGENTS.md
- core/python/safety-plugins/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/sandbox/home/CLAUDE.mdCLAUDE.md
- core/python/genmedia-for-commerce/CLAUDE.mdCLAUDE.md
- align-recipe-pyprojectSkill
- extract-python-environment-variablesSkill
- generate-manifestSkill
- generate-python-runnability-testSkill
- github-pr-reviewSkill
- make-python-recipe-deployableSkill
- prepare-python-recipeSkill
- repo-oracleSkill
- scaffold-python-recipeSkill
- blog-writerSkill
- content-research-writerSkill
- approvalsSkill
- coding-workflowSkill
- connected-apps-mcpSkill
- deliverablesSkill
- filesystemSkill
- recommendationsSkill
- agents-cli-aquaSkill
- custom-investigationSkill
- rcaSkill
- bootstrap-google-toolsSkill
- find-skillsSkill
- google-workspaceSkill
- policySkill
- routinesSkill
- retail-product-searchSkill
- retail-virtual-tryonSkill
The file
We split this AGENTS.md into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 110
All commands run from this directory (contrib/kotlin/llm-auditor).
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
LLM Auditor — Fact-Checking and Revision Pipeline (Kotlin)
Intent
Show how to compose a SequentialAgent in ADK Kotlin: two LlmAgents that
run in order, where the second consumes what the first produced. The domain
task — fact-check an answer, then correct it — is a vehicle for three ADK
concepts that are hard to demonstrate in isolation:
- Sequential multi-agent composition with a shared model instance.
- A built-in tool (
GoogleSearchTool) grounding one sub-agent. - An
AfterModelCallbackpost-processing a sub-agent's raw output before it reaches the user.
This is the Kotlin counterpart of the llm_auditor recipe in adk-python.
When To Use
Study this recipe when you need a pipeline where one agent's output is
another's input, or when a sub-agent's raw response needs cleaning before it
is surfaced. It is not the recipe for parallel fan-out, agent-to-agent
delegation via transfer_to_agent, or tool authoring — it uses a built-in tool
rather than defining one.
Eval
The only automated test is a runnability smoke test,
src/test/kotlin/.../RunnabilityTest.kt: it builds rootAgent and checks its
name and sub-agents without calling the model. build.gradle.kts gives it a
placeholder GOOGLE_API_KEY, because Gemini() will not construct without a
key; no real credentials are needed. CI runs it with gradle test, so CI
verifies that the recipe compiles against the pinned adk-kotlin release and
that the agent graph builds, not that it behaves correctly. Verify behaviour by hand:
export GOOGLE_API_KEY="..."
gradle runThen paste a question-answer pair with a deliberate factual error, as in the
README's example (Why is the sky blue? / Because the water is blue.). A
correct run shows the critic listing each claim with a verdict, then the
reviser emitting a corrected answer with no ---END-OF-EDIT--- marker
visible — that marker leaking into output is the specific regression the
after-model callback exists to prevent.
End-to-end flow
user: "Double check this: Question: ... Answer: ..."
│
├─ critic_agent ── GoogleSearchTool ──▶ web
│ identifies each claim, verifies it, emits verdicts
│
└─ reviser_agent
reads the original answer + the critic's findings,
minimally edits the text, terminates with ---END-OF-EDIT---
│
└─ AfterModelCallback strips the marker and anything after itSequentialAgent runs the two in declaration order and passes conversation
state along; the reviser sees the critic's output as prior context.
Most interesting files to study (in order)
LlmAuditorAgent.kt— the whole composition, ~45 lines. OneGeminiinstance is built once and handed to both sub-agents, so the model is configured in a single place.rootAgentis@JvmFieldfor Java callers.ReviserAgent.kt— the most instructive file.removeEndOfEditMarkis anAfterModelCallbackthat rewrites theLlmResponsebefore it is emitted: it walkscontent.parts, truncates the first part containingEND_MARK, and drops every part after it. Note it usescopy()throughout — responses are immutable.CriticAgent.kt— minimal by comparison; the interesting line istools = listOf(GoogleSearchTool()), which is all that grounding requires.CriticPrompt.kt/ReviserPrompt.kt— the prompts carry most of the behaviour. The reviser prompt is what instructs the model to end with---END-OF-EDIT---; the callback and the prompt are a matched pair, so changing one without the other breaks the output.Main.kt— three lines.ReplRunnersupplies the interactive loop.WebMain.kt— the same agent served over HTTP viaAdkDevServer.
Data handling
Nothing is persisted. WebMain.kt uses AdkServerConfig.inMemory(), so session
and artifact state live in the process and vanish on exit. The critic sends
claim text to Google Search, so user input reaches an external service — do
not paste confidential content into it.
Gotchas / things to know
- The prompt and the callback are coupled.
END_MARKis defined alongside the reviser prompt and matched by the callback. Edit the prompt's terminator and the marker will start appearing in user-visible output. - The callback stops at the first matching part (
break), discarding later parts. That is deliberate — everything after the marker is scratch — but it means a response that legitimately continues after the marker loses content. - The dev server binds loopback. Since adk-kotlin 0.9.0,
AdkDevServerlistens on127.0.0.1. Reaching it from a container or another machine needs an explicithostonAdkServerConfig; the README says how. - KSP is on the classpath but generates nothing. There are no
@Toolannotations here — the critic uses a built-in tool. Theksp(...)line is inert and kept only for symmetry with recipes that do define tools. - No Gradle wrapper. CI falls back to the runner's
gradle, so the build is not pinned to a Gradle version.
Where to run things
All commands run from this directory (contrib/kotlin/llm-auditor). Requires
JDK 17+ and GOOGLE_API_KEY.
| Task | Command |
| Build | gradle build |
| CLI (REPL) | gradle run |
| Dev UI on :8080 | gradle run -PmainClass=com.google.adk.samples.agents.llmauditor.WebMainKt |
| What CI runs | gradle test (compiles, then runs the runnability test) |
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.

