Uniqus · CCA-F Enablement0/10HomePrereqs010203040506QuizRevision

CCA-F — 1-Hour Revision Sheet

Everything distilled from the study kit, official task statements, the community guides, and 120 grilled questions. Order = exam weight. Time chips keep you honest. Pair with practice-quiz.html for drills.

The exam mindset 3 min

Every option "works." You pick the one Anthropic considers most production-reliable. 60 items (single + multi-response, count stated) · 120 min · 4 scenario blocks × 15 Qs · pass ≈ 72% raw (scaled 720).
#Cross-cutting principleCash value on the exam
1Prompts guide. Systems enforce.must / never / always / audit / financial-legal-safety ⇒ hook or code gate, never a prompt rule
2Criteria explain the rule. Examples teach the boundary.Stated criteria + borderline failures (sarcasm) ⇒ add 2–4 boundary examples with reasoning
3Preserve decision-critical context.Never "just summarize" — goals · constraints · facts/figures · assumptions · dates · sources · decisions + rationale
4Fix root causes before adding layers.Better descriptions before routing classifiers; programmatic enforcement before stronger prompts; never "bigger model" first

D1 · Agentic Architecture & Orchestration 27% · 15 min

The agent loop & stop_reason

Call Claude check stop_reason end_turn → done tool_use → run tools max_tokens → TRUNCATED, never parse append results, call again
Loop exit = stop_reason (structured signal). Iteration caps are a backstop only.
stop_reasonLoop behavior
end_turnDone — exit and return. The PRIMARY finish signal (never parse "done" from text)
tool_useExecute tool(s) → append full assistant content, then ONE user message with ALL tool_result blocks, matched by tool_use_id
max_tokensOutput TRUNCATED — never parse/repair as final; retry with higher cap or continue
pause_turnRe-send the conversation as-is — server resumes. No "Continue" message
Trap: "repair the truncated JSON" — produces valid syntax from incomplete data. And the API is stateless: no session_id, no server memory — the app resends full history every call (that's why long chats get slow/expensive).

Subagents & coordination

Coordinatorall traffic routes here search A search B analysis synthesis 85/15: scoped verify_fact tool OK
Hub-and-spoke: observability · consistent error handling · controlled information flow. Exception: grant ONE limited-scope tool when ~85% of round-trips are trivial.

D3 · Claude Code Configuration & Workflows 20% · 12 min

Memory: CLAUDE.md hierarchy & imports

Enterprise managed policy — always wins Project: ./CLAUDE.md or .claude/ — shared via VCS · beats user scope User: ~/.claude/CLAUDE.md — personal, NEVER shared more specific wins · subdirectory CLAUDE.md refines its subtree
Classic bug: team conventions "only work on my machine" ⇒ they live in the user-level file. Diagnostic: /memory shows exactly which memory files are LOADED (it is not just an editor).

The 5-way mechanism selector memorize

NeedMechanismTell-word
Always-relevant conventionsCLAUDE.md / .claude/rules"every session", "house style"
Task-specific, on-demandSkill (SKILL.md)"when doing X"
Human-triggeredSlash command"devs run before release"
Must ALWAYS happenHook"must/never/always/audit/log"
External systemMCP server"Jira/GitHub/DB"

Context ops & session lifecycle

CommandWhat it doesUse when
/compactLossy in-place summarizeMid-task pressure — persist key state to files FIRST
/clearWipe windowStarting an unrelated task
--resumeReopen session + historyContext mostly valid — state what changed
fork_sessionBranch a sessionTwo divergent strategies, shared baseline

Headless / CI

claude -p "review this diff" \
  --output-format json \      # parseable ENVELOPE only
  --json-schema schema.json \  # ENFORCES result structure
  --allowedTools "Read,Grep" \ # least privilege
  --max-turns 8                # bounded run; non-zero exit fails the step
Trap: --output-format json ≠ structure enforcement — it wraps output in a JSON envelope; the fields inside are free-form until --json-schema constrains them.

Working-with-Claude patterns

D4 · Prompt Engineering & Structured Output 20% · 12 min

Criteria, examples, precision

Guaranteed structure

tools=[{ "name": "record_invoice",
  "input_schema": { ...your OUTPUT schema... } }]
tool_choice={"type":"tool","name":"record_invoice"}
data = response.content[0].input   # already parsed & valid
Schema guarantees syntax, never semantics. Line items that don't sum, values in wrong fields ⇒ code validators. Self-check pattern: extract calculated_total ALONGSIDE stated_total — discrepancy becomes visible data.
Generate (forced) Validate in CODE pass → ship fail → retry WITH the error textbounded 2–3 attempts → human-review queue
Validation-retry loop. Retries fix FORMAT errors only — information genuinely absent from the source ⇒ null + review queue, never more retries.

Generation control & long-conversation behavior

LeverControlsClassic confusion
Prefill (partial assistant msg)How output BEGINS — model continues your opening ({, VERDICT:)They are NOT interchangeable. Stop seq on "Here" ⇒ EMPTY reply, not clean JSON
Stop sequenceWhere output ENDS — halts generation on match

D2 · Tool Design & MCP Integration 18% · 10 min

Tool design

Errors — the taxonomy & the traps

CategoryRetryable?Handling
Transient (timeout)yesretry w/ backoff — inside the tool if it can classify deterministically
Validation (bad input)fix & retryreturn immediately with what's wrong
Business (policy)nocustomer-friendly text
Permissionnoescalate

MCP protocol & config

PrimitiveControlled byTested use
ToolsModelactions the agent decides to take
ResourcesApplicationcontent catalogs (issues, schemas) — kills exploratory tool calls
PromptsUseruser-invoked templates
// .mcp.json — repo root, COMMITTED (team distribution)
{ "mcpServers": { "jira": {
    "command": "npx", "args": ["-y", "@acme/jira-mcp"],
    "env": { "JIRA_TOKEN": "${JIRA_TOKEN}" }   // env expansion — secret never in VCS
}}}
// personal/experimental servers → ~/.claude.json

D5 · Context Management & Reliability 15% · 10 min

Context budget

recall HIGHlost in the middlerecall HIGH input startinput end
Mitigations: key summaries FIRST · restate the ask near the END · explicit section headers · pre-extract relevant sections. (Truncation makes middle facts absent; lost-in-middle makes them unreliable.)

Provenance & conflicts

Caching & Batch — the numbers memorize

Prompt caching
Stable PREFIX only (position matters) · min 1,024 tokens · TTL ~5 min, refreshed on use · reads ~10% of input price, writes ~1.25× · stable content first, volatile last · cache ≠ memory.
Batch API
50% cost · up to 24 h processing window, NO latency SLA · results ANY order → custom_id · failures per-request (resubmit only those; dead-letter after N) · no mid-request tool loops · cadence = SLA − 24h − buffer (30h SLA ⇒ ~4h batches) · refine prompt on a sample before 50k docs.

Escalation & trust

Valid triggersFake proxies
Explicit request for a human (honor IMMEDIATELY) · policy gap/exception · no meaningful progressSentiment scores (mood ≠ complexity) · self-reported confidence (confidently wrong, uncalibrated)

Top 12 traps (ranked by how often they burn) 5 min

TrapThe distinction that saves you
Stop sequence to fix output startPrefill shapes the BEGINNING; stop sequences bound the END. Stop-seq on the preamble ⇒ empty reply
Keyword accuracy split → "fix descriptions/examples"Clean split on ONE word + good descriptions = system-prompt keyword steering
--output-format json "enforces" structureEnvelope only — --json-schema enforces
context: fork vs fork_sessionSkill isolation vs session branching
Batch "24h SLA"Window = ceiling, NO SLA — never promise completion times
Prompt cache as memoryBilling/latency optimization only; API is stateless
@import loads "when relevant"Imports are EAGER (depth ≤5, paths from importing file); lazy = skills
Date-mismatched figures = "conflict"Different periods ⇒ require dates (false conflict) · same period ⇒ annotate both (real)
"All self-review is useless"Correctness → independent instance · completeness checklist → same-session works
Post-process "five bucks" in codeMechanical → code · semantic interpretation → model + prompt rules
Rewriting descriptions for an 18-tool agentTwo similar tools = descriptions · too many tools = scope to role (4–5)
Repair truncated JSON / parse "done" from textstop_reason is the only loop signal; max_tokens = never parse

Command & file-location card 5 min

Slash commands

/memorywhich memory files are loaded (diagnostic)
/compactlossy summarize — persist to files first
/clearwipe — new unrelated task
/initbootstrap a CLAUDE.md

CLI flags (headless)

-p / --printnon-interactive run
--output-format jsonparseable envelope
--json-schemaENFORCE result structure
--allowedToolsleast privilege
--max-turns Nbounded run
--resumereopen session

File locations

./CLAUDE.md, .claude/project memory (VCS-shared)
~/.claude/CLAUDE.mduser memory (private)
.claude/rules/*.mdpath-scoped rules (paths: frontmatter)
.claude/commands/project slash commands
~/.claude/commands/personal slash commands
.mcp.jsonproject MCP servers (committed, ${ENV} secrets)
~/.claude.jsonpersonal MCP servers

tool_choice

automodel decides (default)
anyMUST call some tool (routers)
{type:"tool",name}must call THAT tool (extraction)
nonetext only
Last 60 seconds before the exam: 1,024 / 5 min / 10% / 1.25× · 50% / 24h / no SLA / custom_id · depth 5 · 2–4 boundary examples · 4–5 tools per role · Transient-Validation-Business-Permission · prompts guide, systems enforce.

Companion files: practice-quiz.html (338-Q adaptive drills) · flashcards/ccaf-flashcards.csv (Anki) · notebooks/07-08 (timed mocks). Verify exam logistics + scenario-bank size on anthropic.skilljar.com before booking.