From adk
Debugs ADK agents by reading traces, analyzing logs, diagnosing common failures like tool errors, workflow issues, and LLM misbehavior, plus guiding the 8-step debug loop.
npx claudepluginhub botpress/skills --plugin adkThis skill uses the workspace's default tool permissions.
Every ADK agent records its behavior as traces and logs — every conversation turn, tool call, LLM reasoning step, and error. These are the source of truth for understanding what your agent did and why.
Explains ADK Dev Console UI at localhost:3001 during adk dev, including tabs (Chat, Observe), Agent Steps hierarchy, traces, and navigation.
Fetches and analyzes LangSmith traces to debug LangChain and LangGraph agents. Use for agent errors, tool calls, memory operations, and performance review.
Engineers production-ready ADK agents and multi-agent systems in Python/Java/Go with clean structure, tests, safe tools, and deployment automation.
Share bugs, ideas, or general feedback.
Every ADK agent records its behavior as traces and logs — every conversation turn, tool call, LLM reasoning step, and error. These are the source of truth for understanding what your agent did and why.
The ADK CLI provides all the tools you need to debug. All commands support --format json for structured output, which you should always use when consuming output programmatically.
Use this skill when the developer asks about:
Trigger questions:
adk check found errors"| File | Contents |
|---|---|
references/traces-and-logs.md | CLI debugging tools, log querying, trace structure, span types, onTrace hooks, reproduction with adk chat |
references/common-failures.md | Runtime failure patterns — validation, bot not responding, tool errors, workflow stuck, integration failures, build errors, config confusion |
references/llm-debugging.md | LLM behavior issues — wrong tool, hallucinated params, refusals, token limits, looping, reading model reasoning |
references/debug-workflow.md | The systematic 8-step debug loop: validate → reproduce → logs → traces → classify → fix → verify → prevent |
references/trace-summarization.md | How to fetch, walk, and summarize traces as free-form natural-language narratives — adapting depth to context |
references/conversation-analysis.md | How to summarize and explain full conversations — listing conversations, timeline analysis, correlating with traces, common patterns |
traces-and-logs.md for CLI commands and trace structurecommon-failures.md for the matching failure patternllm-debugging.md for the matching behavior issuedebug-workflow.md and follow the 8-step looptrace-summarization.md for how to fetch, walk, and narrate tracesconversation-analysis.md for multi-turn conversation summaries and explanationsadk-evals skill for writing evalssymptom → validate (adk check) → reproduce (adk chat) → logs (adk logs) → traces (adk traces) → root cause → fix → verify
--format json)adk check --format json # offline validation
adk logs error --format json # recent errors
adk logs --follow --format json # stream live
adk traces --format json # recent traces
adk traces --conversation-id <id> --format json # specific conversation
adk chat --single "msg" --format json # test message
adk dev --non-interactive --format json # structured dev output
adk conversations --format json # list recent conversations
adk conversations show <id> --format json # conversation timeline
adk conversations show <id> --include-llm --format json # timeline with LLM reasoning
| Type | What It Shows |
|---|---|
think | LLM reasoning — why it chose an action |
tool_call | Tool invocation — name, input, output, success/error |
code_execution_exception | Runtime error — message and stack trace |
end | Conversation turn completed |
Before debugging, verify:
adk check --format json — fix any reported issues firstadk dev (or adk dev --non-interactive --format json for structured output)agent.json exists with botId and workspaceId (created by adk link)agent.local.json has devId (set automatically by the first adk dev run)✅ Run adk check before debugging runtime issues
# CORRECT — catch config/schema problems offline first
adk check --format json
# Then debug runtime issues
❌ Skipping offline validation
# WRONG — jumping straight to runtime debugging wastes time on config issues
adk traces --format json # might be chasing a config problem
✅ Use --format json on all CLI commands
# CORRECT — structured output for reliable parsing
adk logs error --format json
adk traces --format json
adk chat --single "test" --format json
❌ Parsing human-readable output
# WRONG — human-readable format is for display, not parsing
adk logs error
adk traces
✅ Use adk logs error to filter errors
# CORRECT — focused error scan
adk logs error --format json
adk logs warning since=1h --format json
❌ Scrolling through all output
# WRONG — too much noise, easy to miss the actual error
adk logs --format json # 50 entries of everything
✅ Use onTrace hooks for programmatic monitoring
// CORRECT — structured, automated trace analysis
hooks: {
onTrace: ({ trace }) => {
if (trace.type === "tool_call" && !trace.success) {
console.error(`[TOOL ERROR] ${trace.tool_name}`, trace.error);
}
}
}
❌ Only checking console output
// WRONG — console.log in handlers misses the structured trace data
handler: async (input) => {
console.log("tool called"); // not useful for debugging
}
✅ Write a regression eval after fixing
// CORRECT — prevents the bug from coming back
export default new Eval({
name: 'fix-order-lookup',
type: 'regression',
conversation: [{ user: 'Look up order 123', assert: { tools: [{ called: 'lookupOrder' }] } }],
})
❌ Fixing and moving on
// WRONG — the same bug will return and you'll debug it again
Basic:
Intermediate:
Advanced:
Match depth to the question.
Answer directly — one sentence + the CLI command or concept. Don't run the full debug loop for informational questions.
Follow the full loop:
adk check --format json — rule out offline issuesadk chat --single "msg" --format json to create a clean reproductionadk logs error --format json for quick scan, adk traces --format json for detailsadk-evals skill and generate the eval file automatically