<map version="1.0.1">
<node ID="ID_245" TEXT="CCDV-F — Claude Certified Developer, Foundations"><richcontent TYPE="NOTE"><html><head></head><body><p>Amit Phadke · exam 3 Nov 2026 · tracker: https://www.amitphadke.com/learning/ccdv-f/tracker/</p></body></html></richcontent><node ID="ID_118" TEXT="Exam facts"><node ID="ID_112" TEXT="53 questions · 120 min"></node><node ID="ID_113" TEXT="Pass 720 / 1000 scaled"></node><node ID="ID_114" TEXT="USD 125 · valid 12 months"></node><node ID="ID_115" TEXT="Retakes: 14 / 30 / 90 days · max 4 in 12 months"></node><node ID="ID_116" TEXT="Reschedule ≥ 24 h before"></node><node ID="ID_117" TEXT="Tue 3 Nov 2026 · check-in 10:00 · start 10:30 IST"></node></node><node ID="ID_19" TEXT="Exam domains (weights)"><node ID="ID_3" TEXT="Applications &amp; Integration — 33.1%"><node ID="ID_1" TEXT="Ch 1: Messages API foundations"></node><node ID="ID_2" TEXT="Ch 2: Tool use, prompt caching, batches and production plumbing"></node></node><node ID="ID_5" TEXT="Model Selection &amp; Optimisation — 16.8%"><node ID="ID_4" TEXT="Ch 3: Model selection, cost optimisation, prompt and context engineering"></node></node><node ID="ID_7" TEXT="Agents &amp; Workflows — 14.7%"><node ID="ID_6" TEXT="Ch 4: Agents and workflows"></node></node><node ID="ID_9" TEXT="Prompt &amp; Context Engineering — 11%"><node ID="ID_8" TEXT="Ch 3: Model selection, cost optimisation, prompt and context engineering"></node></node><node ID="ID_12" TEXT="Tools &amp; MCPs — 10.6%"><node ID="ID_10" TEXT="Ch 2: Tool use, prompt caching, batches and production plumbing"></node><node ID="ID_11" TEXT="Ch 5: Tools and MCP"></node></node><node ID="ID_14" TEXT="Security &amp; Safety — 8.1%"><node ID="ID_13" TEXT="Ch 7: Security, safety, evals, testing and debugging"></node></node><node ID="ID_16" TEXT="Claude Code — 3.1%"><node ID="ID_15" TEXT="Ch 6: Claude Code mastery (on your real project)"></node></node><node ID="ID_18" TEXT="Eval, Testing &amp; Debugging — 2.6%"><node ID="ID_17" TEXT="Ch 7: Security, safety, evals, testing and debugging"></node></node></node><node ID="ID_111" TEXT="Chapters (9 weeks)"><node ID="ID_26" TEXT="0 · Setup, accounts and the eligibility gate"><node ID="ID_20" TEXT="2026-09-05 → 2026-09-06"></node><node ID="ID_21" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Everything administrative is out of the way so that from Chapter 1 every session is pure learning.</p></body></html></richcontent></node><node ID="ID_25" TEXT="Key facts"><node ID="ID_22" TEXT="53 Qs · 120 min · pass 720/1000 scaled · valid 12 months · USD 125 · retakes 14/30/90 days, max 4 in 12 months · reschedule ≥24 h before"></node><node ID="ID_23" TEXT="Weights: AI 33.1 · MSO 16.8 · AW 14.7 · PCE 11.0 · TM 10.6 · SS 8.1 · CC 3.1 · ETD 2.6"></node><node ID="ID_24" TEXT="Check-in 10:00 IST, start 10:30 IST, Tue 3 Nov 2026 — ID on desk, phone away, single monitor"></node></node></node><node ID="ID_37" TEXT="1 · Messages API foundations"><node ID="ID_27" TEXT="2026-09-07 → 2026-09-13"></node><node ID="ID_28" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Read any Messages request or response and explain every field; build a streaming, multi-turn, multimodal chat client.</p></body></html></richcontent></node><node ID="ID_36" TEXT="Key facts"><node ID="ID_29" TEXT="Required: model, max_tokens, messages. system is top-level. Roles alternate, first is user."></node><node ID="ID_30" TEXT="stop_reason: end_turn · max_tokens (truncated) · stop_sequence · tool_use · refusal (HTTP 200) · pause_turn (send back) · model_context_window_exceeded"></node><node ID="ID_31" TEXT="usage: input_tokens, output_tokens, cache_creation_input_tokens, cache_read_input_tokens"></node><node ID="ID_32" TEXT="Stream events: message_start → content_block_start/delta/stop → message_delta (stop_reason, output usage) → message_stop"></node><node ID="ID_33" TEXT="Force shape: instruction &lt; prefill '{' + stop_sequences (legacy, 400 on 4.6+) &lt; forced tool with input_schema &lt; structured outputs output_config.format (check stop_reason before parsing)"></node><node ID="ID_34" TEXT="Images: base64/URL/file blocks, JPEG/PNG/GIF/WebP, ≤10 MB, tokens ≈ (w/28)×(h/28); PDFs as document blocks (text + page images), 32 MB, 600 pages (100 on 200K models)"></node><node ID="ID_35" TEXT="Stateless API: resend full history each call → context grows → cache the prefix, summarise old turns"></node></node></node><node ID="ID_48" TEXT="2 · Tool use, prompt caching, batches and production plumbing"><node ID="ID_38" TEXT="2026-09-14 → 2026-09-20"></node><node ID="ID_39" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Run the tool-use loop from memory, cut cost with caching and batches, and make a client that survives 429s and 529s.</p></body></html></richcontent></node><node ID="ID_47" TEXT="Key facts"><node ID="ID_40" TEXT="Tool loop: tools + messages → stop_reason tool_use → run it yourself → user msg with tool_result(tool_use_id, content, is_error?) → repeat until end_turn"></node><node ID="ID_41" TEXT="tool_choice: auto (default) · any (must use some) · tool:{name} (must use that) · none; disable_parallel_tool_use for one-at-a-time"></node><node ID="ID_42" TEXT="Parallel calls: several tool_use blocks → all results in ONE user message"></node><node ID="ID_43" TEXT="Cache: cache_control ephemeral on a block; prefix = tools→system→messages up to it; min 512–4,096 tokens by model (Sonnet 5 = 1,024, Haiku 4.5 = 4,096); TTL 5 min (refreshes) or 1 h; write 1.25×/2×, read 0.1×; ≤4 breakpoints; reads free vs ITPM"></node><node ID="ID_44" TEXT="Batches: custom_id per request, up to 100k reqs, ≤24 h, 50% off, results 29 days, join on custom_id, types succeeded/errored/canceled/expired"></node><node ID="ID_45" TEXT="Errors: 400 yours · 401 key · 413 too large · 429 rate limit (retry-after) · 500 api · 529 overloaded; SDK retries 408/409/429/5xx ×2"></node><node ID="ID_46" TEXT="Rate limits per org per model: RPM, ITPM, OTPM; tiers grow with spend"></node></node></node><node ID="ID_59" TEXT="3 · Model selection, cost optimisation, prompt and context engineering"><node ID="ID_49" TEXT="2026-09-21 → 2026-09-27"></node><node ID="ID_50" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Pick the right model and the cheapest configuration for a workload, and write prompts the Anthropic way. This chapter is ~28% of the exam.</p></body></html></richcontent></node><node ID="ID_58" TEXT="Key facts"><node ID="ID_51" TEXT="Haiku = volume/classify/route · Sonnet = default apps/coding/agents · Opus = hardest reasoning/orchestration. Smallest model that passes the eval."></node><node ID="ID_52" TEXT="Cost ladder: trim → cache → batch → smaller model → less thinking. Measure with usage + count_tokens. Output ≈ 5× input price."></node><node ID="ID_53" TEXT="Technique order: clear &amp; direct → examples → let it think → XML tags → role (system) → prefill → chain prompts → long-context tips"></node><node ID="ID_54" TEXT="Thinking: manual budget_tokens ≥1024 and &lt; max_tokens (Haiku 4.5) · adaptive + effort low/medium/high/xhigh/max on 4.6+ (default high) · billed as output · no prefill · pass thinking blocks back with tools"></node><node ID="ID_55" TEXT="Long context: docs first in tags, question last, ask for quotes; lost-in-the-middle → important stuff at start/end"></node><node ID="ID_56" TEXT="Context mgmt: summarise old turns, keep last N, RAG for facts, stable prefix cached, volatile last; context editing/compaction on newer models"></node><node ID="ID_57" TEXT="Pin IDs in prod (dated pre-4.6, dateless-but-pinned 4.6+); aliases for experiments; ≥60 days deprecation notice; 3.x retired; same models on Bedrock / Vertex / Foundry with platform IDs"></node></node></node><node ID="ID_69" TEXT="4 · Agents and workflows"><node ID="ID_60" TEXT="2026-09-28 → 2026-10-04"></node><node ID="ID_61" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Choose between a single call, a workflow and an agent for any scenario; name the five patterns; build a guarded agent with the Agent SDK.</p></body></html></richcontent></node><node ID="ID_68" TEXT="Key facts"><node ID="ID_62" TEXT="Workflow = code-defined path (predictable, testable, cheap). Agent = model-chosen path in a loop (open-ended only). Simplest thing first."></node><node ID="ID_63" TEXT="Patterns: chaining (gates between steps) · routing (classify→specialist) · parallel (sectioning / voting) · orchestrator–workers (model plans) · evaluator–optimizer (cap it)"></node><node ID="ID_64" TEXT="Agent guards: clear stop condition, max_turns, cost budget, loop detection, strict tool schemas + is_error, approval before side effects, compaction"></node><node ID="ID_65" TEXT="Agent SDK = Claude Code's loop as a library: built-in tools, permissions, compaction, MCP, subagents, hooks, sessions; allowed_tools / permission_mode / max_turns"></node><node ID="ID_66" TEXT="Subagent = own context window, own prompt/tools, returns summary; costs more; good for isolation and parallelism"></node><node ID="ID_67" TEXT="Server tools (web search/fetch, code exec) run on Anthropic's side; Skills = SKILL.md folders of know-how, loaded progressively; MCP = standard plug for external tools"></node></node></node><node ID="ID_80" TEXT="5 · Tools and MCP"><node ID="ID_70" TEXT="2026-10-05 → 2026-10-11"></node><node ID="ID_71" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Explain MCP's architecture and primitives, build and register your own server, and know when plain tool use is the better choice.</p></body></html></richcontent></node><node ID="ID_79" TEXT="Key facts"><node ID="ID_72" TEXT="MCP = JSON-RPC protocol; host (app) → client (1 per server) → server. Lifecycle: initialize (version + capabilities) → operate → shutdown"></node><node ID="ID_73" TEXT="Transports: stdio (local child process) · Streamable HTTP (remote, OAuth 2.1, SSE streaming). Old HTTP+SSE deprecated"></node><node ID="ID_74" TEXT="Primitives: tools (model-controlled; tools/list, tools/call) · resources (app-controlled; URIs; resources/read) · prompts (user-controlled; prompts/get). Client side: roots, sampling, elicitation"></node><node ID="ID_75" TEXT="Claude Code: claude mcp add; scopes local (~/.claude.json) &lt; project (.mcp.json, committed) &lt; user; /mcp; tools = mcp__server__tool"></node><node ID="ID_76" TEXT="API MCP connector: mcp_servers=[{type:url,...}] beta; remote HTTP only; tools only; executed server-side"></node><node ID="ID_77" TEXT="Plain tools: one app, you run the loop. MCP: reuse across clients, discovery, third-party. Skills: know-how, not actions"></node><node ID="ID_78" TEXT="Security: tool poisoning, rug pull, confused deputy, token passthrough; least privilege, roots, consent, validation, approval for side effects"></node></node></node><node ID="ID_91" TEXT="6 · Claude Code mastery (on your real project)"><node ID="ID_81" TEXT="2026-10-12 → 2026-10-18"></node><node ID="ID_82" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Turn daily Claude Code use into exam-grade knowledge of memory, settings, hooks, subagents, headless mode and CI. Only ~3% of the exam — keep it to the schedule and do not over-invest.</p></body></html></richcontent></node><node ID="ID_90" TEXT="Key facts"><node ID="ID_83" TEXT="Memory: ~/.claude/CLAUDE.md (user) → ./CLAUDE.md (project, committed) → ./CLAUDE.local.md (personal); @imports; /memory; /init"></node><node ID="ID_84" TEXT="Settings precedence: managed &gt; CLI flags &gt; .claude/settings.local.json &gt; .claude/settings.json &gt; ~/.claude/settings.json"></node><node ID="ID_85" TEXT="Extend: commands (.claude/commands, user-invoked, $ARGUMENTS) · skills (.claude/skills/*/SKILL.md, model-invoked) · hooks (settings, enforcement) · subagents (.claude/agents, own context) · MCP · plugins"></node><node ID="ID_86" TEXT="Hooks: PreToolUse/PostToolUse/Stop/UserPromptSubmit/SessionStart/PreCompact…; JSON on stdin; exit 0 ok, exit 2 block (+stderr to Claude), exit 1 non-blocking; default timeout 600 s"></node><node ID="ID_87" TEXT="Modes: default · acceptEdits · plan (read-only) · bypassPermissions (sandbox only); deny rules win"></node><node ID="ID_88" TEXT="Headless: claude -p, --output-format json|stream-json, --allowedTools, --max-turns, --resume; GitHub Action anthropics/claude-code-action"></node><node ID="ID_89" TEXT="/compact summarise · /clear wipe · /cost (=/usage) tokens+USD · /context · /model · /effort · /permissions · /mcp · /agents · /review (=/code-review) · /resume · /fork"></node></node></node><node ID="ID_101" TEXT="7 · Security, safety, evals, testing and debugging"><node ID="ID_92" TEXT="2026-10-19 → 2026-10-25"></node><node ID="ID_93" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Threat-model any Claude application and name the defence; build an eval you trust; debug from stop_reason, usage and traces. First timed practice exam.</p></body></html></richcontent></node><node ID="ID_100" TEXT="Key facts"><node ID="ID_94" TEXT="Threats: direct/indirect injection · exfiltration · excessive agency · prompt leak · jailbreak · insecure output handling (OWASP LLM Top 10)"></node><node ID="ID_95" TEXT="Defence in depth: model safety → prompt design → validation in/out → tool least privilege + hooks → human approval → logging. Prompt ≠ security boundary"></node><node ID="ID_96" TEXT="External content (docs, web, tool results, MCP descriptions) = untrusted data; fence in tags; allow-list destinations; scoped creds; no secrets in context"></node><node ID="ID_97" TEXT="Safety: stop_reason refusal → handle, don't retry; usage policy → high-risk uses need human oversight; moderation = Haiku few-shot temp 0 pre/post screen"></node><node ID="ID_98" TEXT="Evals: criteria first → cases (input, expected, edge + adversarial) → graders: code (exact/regex) · LLM judge + rubric (subjective, temp 0) · human (gold) → run on every change, Batches for cost"></node><node ID="ID_99" TEXT="Debug: stop_reason → usage vs window → tool trace (ids, is_error, loops) → prompt; reproduce at temp 0; log request ids; add regression case"></node></node></node><node ID="ID_108" TEXT="8 · Practice exams and final revision"><node ID="ID_102" TEXT="2026-10-26 → 2026-11-02"></node><node ID="ID_103" TEXT="Goal"><richcontent TYPE="NOTE"><html><head></head><body><p>Three practice exams at 80%+, every domain above 75%, cheat sheet internalised, logistics done.</p></body></html></richcontent></node><node ID="ID_107" TEXT="Key facts"><node ID="ID_104" TEXT="Answer keys: cheapest → cache/batch/Haiku · structure → forced tool/schema · team-shared → project scope · must-always → hook · unknown steps → agent · external content → untrusted · destructive → approve first"></node><node ID="ID_105" TEXT="Eliminate wrong-problem answers: temperature≠length, streaming≠cost, batch≠chat, bigger model≠prompt fix"></node><node ID="ID_106" TEXT="2:15 per question; flag at 3 min; count selections on multi-response"></node></node></node><node ID="ID_110" TEXT="★ · Exam day — Tue 3 Nov 2026"><node ID="ID_109" TEXT="2026-11-03 → 2026-11-03"></node></node></node><node ID="ID_125" TEXT="Method"><node ID="ID_119" TEXT="1.5 h/day: 45 min read, 45 min build"></node><node ID="ID_120" TEXT="Build every lab with Claude Code on the real project"></node><node ID="ID_121" TEXT="Sunday: notes file, self-check, domain quiz, retrospective"></node><node ID="ID_122" TEXT="Every morning: clear due traps (2–5 min)"></node><node ID="ID_123" TEXT="Weakest domain gets the gap day (28 Oct)"></node><node ID="ID_124" TEXT="Go / no-go by 2 Nov morning: ≥80% weighted, no domain &lt;70%"></node></node><node ID="ID_134" TEXT="Answer keys (scenario questions)"><node ID="ID_126" TEXT="cheapest → cache / batch / Haiku"></node><node ID="ID_127" TEXT="structure → forced tool / structured outputs"></node><node ID="ID_128" TEXT="team-shared → project scope (.mcp.json, settings.json)"></node><node ID="ID_129" TEXT="must always → hook, not CLAUDE.md"></node><node ID="ID_130" TEXT="unknown number of steps → agent / orchestrator"></node><node ID="ID_131" TEXT="external content → untrusted data"></node><node ID="ID_132" TEXT="destructive action → human approval first"></node><node ID="ID_133" TEXT="temperature ≠ length · streaming ≠ cost · batch ≠ chat"></node></node><node ID="ID_244" TEXT="All traps (50)"><node ID="ID_141" TEXT="Ch 0"><node ID="ID_136" TEXT="The pass mark is 720 — is that 72% of questions right?"><node ID="ID_135" TEXT="→ No. 720 is a scaled score on 100–1000; raw percentage needed is unknown, so target 80%+ on practice exams."></node></node><node ID="ID_138" TEXT="Retake waits after a 1st, 2nd, 3rd fail?"><node ID="ID_137" TEXT="→ 14, 30, 90 days; max four attempts in a rolling 12 months; USD 125 each. Reschedule ≥24 h before."></node></node><node ID="ID_140" TEXT="Which domain deserves the most study time?"><node ID="ID_139" TEXT="→ Applications &amp; Integration at 33.1% — Messages API, tools, caching, batches, streaming, errors."></node></node></node><node ID="ID_154" TEXT="Ch 1"><node ID="ID_143" TEXT="Answer cut off mid-sentence."><node ID="ID_142" TEXT="→ stop_reason=max_tokens — raise max_tokens; temperature has nothing to do with length."></node></node><node ID="ID_145" TEXT="Where is the system prompt sent?"><node ID="ID_144" TEXT="→ Top-level system parameter — never as a message with role 'system'."></node></node><node ID="ID_147" TEXT="Does streaming reduce cost or total latency?"><node ID="ID_146" TEXT="→ No. It improves perceived latency only; tokens billed are identical."></node></node><node ID="ID_149" TEXT="Prefill lives in which role and position?"><node ID="ID_148" TEXT="→ Assistant role, as the final message; Claude continues from it (legacy — 400 on Claude 4.6+; use structured outputs)."></node></node><node ID="ID_151" TEXT="response.content is a string?"><node ID="ID_150" TEXT="→ No — a list of blocks (text, tool_use, thinking). Iterate, don't index blindly."></node></node><node ID="ID_153" TEXT="Which parameter is required besides model and messages?"><node ID="ID_152" TEXT="→ max_tokens."></node></node></node><node ID="ID_171" TEXT="Ch 2"><node ID="ID_156" TEXT="Who runs a client-side tool?"><node ID="ID_155" TEXT="→ Your code. Claude only returns a tool_use block with name and input."></node></node><node ID="ID_158" TEXT="Which role carries tool_result blocks?"><node ID="ID_157" TEXT="→ user. One message, one tool_result per tool_use, ids must match."></node></node><node ID="ID_160" TEXT="Order of content in the cached prefix?"><node ID="ID_159" TEXT="→ tools → system → messages. Change anything before the breakpoint and the cache is invalidated."></node></node><node ID="ID_162" TEXT="Does caching cut output tokens?"><node ID="ID_161" TEXT="→ No — only input cost and time-to-first-token. Output is priced the same."></node></node><node ID="ID_164" TEXT="Batch API for a chatbot?"><node ID="ID_163" TEXT="→ Never — asynchronous, up to 24 h. Batch = bulk, offline, 50% cheaper."></node></node><node ID="ID_166" TEXT="Minimum cacheable prefix length?"><node ID="ID_165" TEXT="→ Model-dependent: 512 (Opus 5) · 1,024 (Sonnet 5/4.5) · 2,048 (Opus 4.7) · 4,096 (Haiku 4.5, Opus 4.5/4.6); shorter is silently not cached."></node></node><node ID="ID_168" TEXT="tool_choice value that forces one specific tool?"><node ID="ID_167" TEXT="→ {type:'tool', name:'...'}; 'any' forces some tool; 'auto' is default; 'none' disables."></node></node><node ID="ID_170" TEXT="429 vs 529?"><node ID="ID_169" TEXT="→ 429 rate limit (your volume, honour retry-after); 529 overloaded (Anthropic side, back off with jitter)."></node></node></node><node ID="ID_186" TEXT="Ch 3"><node ID="ID_173" TEXT="Cheapest quick win for a high-volume prompt with a big stable system prompt?"><node ID="ID_172" TEXT="→ Prompt caching (then batch if offline, then a smaller model). Not temperature."></node></node><node ID="ID_175" TEXT="Thinking tokens are billed as…"><node ID="ID_174" TEXT="→ Output tokens, at output price; budget_tokens &lt; max_tokens."></node></node><node ID="ID_177" TEXT="First prompt-engineering technique to try?"><node ID="ID_176" TEXT="→ Be clear and direct with success criteria — before few-shot, CoT or role."></node></node><node ID="ID_179" TEXT="Long document placement?"><node ID="ID_178" TEXT="→ Top of the prompt in &lt;document&gt; tags; question last; ask for quotes first."></node></node><node ID="ID_181" TEXT="Alias vs dated model ID in prod?"><node ID="ID_180" TEXT="→ Dated ID. Aliases move to new snapshots without warning."></node></node><node ID="ID_183" TEXT="Which tier for classification at scale?"><node ID="ID_182" TEXT="→ Haiku — smallest model that passes the eval; route hard cases upward."></node></node><node ID="ID_185" TEXT="Temperature changes cost or length?"><node ID="ID_184" TEXT="→ Neither. Randomness only."></node></node></node><node ID="ID_199" TEXT="Ch 4"><node ID="ID_188" TEXT="Predictable multi-step task — agent or workflow?"><node ID="ID_187" TEXT="→ Workflow. Agents only when the path is unknown in advance."></node></node><node ID="ID_190" TEXT="Five workflow patterns?"><node ID="ID_189" TEXT="→ Chaining, routing, parallelisation (sectioning/voting), orchestrator–workers, evaluator–optimizer."></node></node><node ID="ID_192" TEXT="Subagent context?"><node ID="ID_191" TEXT="→ Its own window — isolation and focus, but extra tokens and only a summary returns."></node></node><node ID="ID_194" TEXT="Human-in-the-loop placement?"><node ID="ID_193" TEXT="→ Before destructive/irreversible actions."></node></node><node ID="ID_196" TEXT="Who decides sub-tasks in orchestrator–workers vs parallelisation?"><node ID="ID_195" TEXT="→ Orchestrator: the model. Parallelisation: your code."></node></node><node ID="ID_198" TEXT="Agent loops forever — first guard?"><node ID="ID_197" TEXT="→ Max turns / loop detection; then better tool results."></node></node></node><node ID="ID_212" TEXT="Ch 5"><node ID="ID_201" TEXT="Resources vs tools?"><node ID="ID_200" TEXT="→ Tools = model-called actions. Resources = data the application reads into context. Prompts = user-invoked templates."></node></node><node ID="ID_203" TEXT="Which MCP scope do you commit?"><node ID="ID_202" TEXT="→ Project (.mcp.json). Local is per-user per-project; user is all projects."></node></node><node ID="ID_205" TEXT="Transport for a remote server?"><node ID="ID_204" TEXT="→ Streamable HTTP (with OAuth). stdio is local child processes only."></node></node><node ID="ID_207" TEXT="Host / client / server?"><node ID="ID_206" TEXT="→ Host = app; client = one connection per server inside the host; server = capability provider."></node></node><node ID="ID_209" TEXT="MCP tool result trust level?"><node ID="ID_208" TEXT="→ Untrusted input — possible prompt injection; validate, fence, never let it change permissions."></node></node><node ID="ID_211" TEXT="API MCP connector executes tools where?"><node ID="ID_210" TEXT="→ Server-side by the API; you get mcp_tool_use/mcp_tool_result blocks and run nothing."></node></node></node><node ID="ID_225" TEXT="Ch 6"><node ID="ID_214" TEXT="'Must always run the linter after edits' — CLAUDE.md or hook?"><node ID="ID_213" TEXT="→ Hook (PostToolUse). CLAUDE.md is guidance; hooks are enforcement."></node></node><node ID="ID_216" TEXT="/compact vs /clear?"><node ID="ID_215" TEXT="→ /compact summarises and continues; /clear wipes the context."></node></node><node ID="ID_218" TEXT="Which settings file is committed for the team?"><node ID="ID_217" TEXT="→ .claude/settings.json. settings.local.json is personal; ~/.claude/settings.json is user-wide."></node></node><node ID="ID_220" TEXT="Hook exit code that blocks?"><node ID="ID_219" TEXT="→ 2 — stderr goes back to Claude. 0 continues."></node></node><node ID="ID_222" TEXT="Subagent cost?"><node ID="ID_221" TEXT="→ Extra tokens — separate context window; only a summary returns."></node></node><node ID="ID_224" TEXT="bypassPermissions where?"><node ID="ID_223" TEXT="→ Sandboxed containers only."></node></node></node><node ID="ID_238" TEXT="Ch 7"><node ID="ID_227" TEXT="Fetched web content / tool results are…"><node ID="ID_226" TEXT="→ Untrusted data — fence it, restrict tools, approve side effects. Not fixed by a stronger system prompt alone."></node></node><node ID="ID_229" TEXT="LLM-as-judge for exact values?"><node ID="ID_228" TEXT="→ No — code graders for exact/format checks; judge for subjective quality."></node></node><node ID="ID_231" TEXT="Secrets in the system prompt?"><node ID="ID_230" TEXT="→ Never — prompts can leak; use env/secret manager."></node></node><node ID="ID_233" TEXT="When to run evals?"><node ID="ID_232" TEXT="→ On every prompt/model/tool change, same case set, track pass rate; use Batches for cost."></node></node><node ID="ID_235" TEXT="Debug order?"><node ID="ID_234" TEXT="→ stop_reason → usage → tool trace → prompt."></node></node><node ID="ID_237" TEXT="Human approval timing?"><node ID="ID_236" TEXT="→ Before destructive/irreversible actions."></node></node></node><node ID="ID_243" TEXT="Ch 8"><node ID="ID_240" TEXT="Time per question?"><node ID="ID_239" TEXT="→ ≈2 min 15 s; flag at 3 min; first pass 75 min, review 30."></node></node><node ID="ID_242" TEXT="Reschedule rule?"><node ID="ID_241" TEXT="→ If practice &lt; 80% on 31 Oct, reschedule ≥24 h before the appointment; a fail = USD 125 + 14-day wait (then 30, then 90; max 4 attempts/12 months)."></node></node></node></node></node>
</map>
