Skip to main content
Exams

Claude Certified Architect — Foundations Cheat Sheet (CCAR-F)

CCAR-F cheat sheet: exam facts, domain weights, decision rules, keyword-to-answer tables and high-yield facts for all 5 domains, on one page.

The CertGrove team · 11 min read

This is a one-page review for the Claude Certified Architect – Foundations (CCAR-F) exam. Each line pairs a signal you will see in a question with the direction the answer usually takes, distilled from exam guide v1.0. Read it in full during the last 10–15 days of prep, then skim only the tables and decision principles in the last 15 minutes before you sit down.

⚠ marks an answer that follows exam guide v1.0 where current Claude docs may have moved on. On the exam, go with the guide.

Exam facts at a glance

ItemDetail
Exam codeCCAR-F
Items60, multiple-choice and multiple-response; each item states how many to select
Time120 minutes, so about 2 minutes per item
Structure4 scenarios drawn at random from a bank of 6, about 15 items and 30 minutes each
Passing scoreScaled 720 on a 100–1,000 scale; criterion-referenced, not graded on a curve
Score reportPass/fail + scaled score; per-domain percentages are informational only
Fee$125 USD per attempt
DeliveryProctored by Pearson VUE, online or at a test center
ReschedulingUp to 24 hours before the appointment; later changes forfeit the fee
RetakesWait 14 / 30 / 90 days after the 1st / 2nd / 3rd fail; max 4 attempts per rolling 12 months
Validity12 months; on-time renewal is a free, non-proctored assessment

Read the ask before the options: note how many answers it wants ("Choose TWO") and whether it's phrased negatively ("Which will NOT…").

Domain weights and the 6 scenarios

DomainWeight≈ Items (approximate)
D1 · Agentic Architecture & Orchestration27%16
D3 · Claude Code Configuration & Workflows20%12
D4 · Prompt Engineering & Structured Output20%12
D2 · Tool Design & MCP Integration18%11
D5 · Context Management & Reliability15%9

Item counts are 60 × weight, rounded. The guide gives weights only. Real forms vary.

Spot which scenario you're in from its first item and you can predict the topics:

ScenarioTopics it pulls in
1 · Customer Support AgentVerification gate before refunds, refund-limit hook, escalation triggers, case facts block, complete handoff
2 · Code Generation with Claude CodeCLAUDE.md hierarchy, commands and skills, path rules, plan vs direct, resume/fork
3 · Multi-Agent ResearchHub-and-spoke, over-narrow decomposition, passing provenance, error propagation, conflicting sources
4 · Developer ProductivityGrep vs Glob, Edit fallback, MCP scope, codebase exploration, scratchpad
5 · Claude Code for CI/CD-p, --output-format json + --json-schema, false-positive criteria, independent reviewer, batch for overnight jobs
6 · Structured Data Extractiontool_use + JSON schema, nullable fields, validation-retry, batch + custom_id, confidence calibration

Decision principles: signal → answer direction

Most items come down to one of these:

  • Money, security, compliance, "100%" → enforce in code (hook, prerequisite gate, schema). Prompts and few-shot get you "usually right", never guaranteed.
  • Fix the root cause the evidence shows → it is often upstream (coordinator, input). Don't change a component that works.
  • Proportionate first step → cheapest fix first: tool description → explicit criteria + few-shot → routing layer → classifier.
  • Least privilege → 4–5 tools per agent, by role. Add a narrow tool for a frequent cross-role need.
  • Structured beats generic → errors carry a category and isRetryable; handoffs have fixed fields; output follows a JSON schema.
  • Isolate context → subagents inherit nothing, so pass what they need. Reviewers are separate instances.
  • Don't trust self-reported signals → self-rated confidence, sentiment and "I'm done" text are unreliable. Use stop_reason and explicit criteria.
  • A bigger context window doesn't fix attention dilution → split into passes, put key facts first, keep a scratchpad.
  • Never hide failures, never kill the whole workflow → recover locally, then propagate with partial results. A valid empty result is not an error.
  • Preserve information, don't let the model invent it → nullable fields, case facts block, claim → source, keep both values when sources conflict.
  • Ask instead of guessing → several matching records: ask for another identifier. Policy is silent: escalate.
  • Declarative and automatic beats manual → path rules over a giant CLAUDE.md; project config over reminding each person.
  • Only documented features → -p, .mcp.json, .claude/rules/. Not CLAUDE_HEADLESS, --batch or .claude/config.json.

Question keywords → answer type

Keyword in the stemAnswer usually is
"first step", "most effective first"The cheapest option that still fixes the root cause
"guarantee", "must always", "100%", complianceCode enforcement: hook, gate, schema
"maintainable", "consistent across the team"Declarative, project-scoped: .claude/rules/, .mcp.json, project skills
"long-term", "most robust"A heavier option (split tools, a pipeline) can win here
"in a single response", "simultaneously", lower latencySeveral Task calls in parallel in one response
"overnight", "weekly", "not time-sensitive", lower costMessage Batches API
"blocking", "pre-merge", "developer waits"Synchronous API, never batch
"a new team member doesn't get the rule"The rule lives in ~/.claude/; move it to the project
"Choose TWO", "Which will NOT…"Count the answers; for NOT, find the option that breaks a principle

High-yield facts by domain

D1 · Agentic Architecture & Orchestration (27%)

flowchart LR
  A[Call Messages API] --> B{stop_reason}
  B -- tool_use --> C[Run tool]
  C --> D[Append tool_result to history]
  D --> A
  B -- end_turn --> E[Done]
  B -- max_tokens --> F[Truncated, not finished]
  • Loop control → branch on stop_reason, not on content[0].type or whether text exists. An iteration cap is only a safety net.
  • Claude "can't see" the tool result → the tool_result was never appended to the conversation.
  • Report misses a whole topic category → the coordinator decomposed too narrowly. Fix decomposition, not the subagent.
  • Subagents talk to each other → wrong. Hub-and-spoke: everything goes through the coordinator.
  • Coordinator can't spawn subagents → allowedTools lacks "Task" ⚠ (newer docs call it the Agent tool).
  • Synthesis loses citations → metadata was stripped at the coordinator boundary. Pass structured findings with source and date.
  • Refunds sometimes skip verification → prerequisite gate: process_refund runs only once a verified customer ID exists.
  • Human handoff → self-contained: customer ID, summary, root cause, amount, recommendation. The human has no transcript.
HookUse it toCan it block?
PreToolUseDeny or modify a call before it runs (e.g. refund > $500 → escalate)Yes
PostToolUseNormalise results before the model sees them (e.g. dates to ISO 8601)No; the side effect already happened
Session choiceWhen
--resume <name>Same line of work, files unchanged
fork_sessionCompare two approaches from one baseline
New session + structured summaryFiles changed a lot since; old context is stale
  • 3 of 50 files changed → tell the resumed session which files changed and re-analyse only those.
  • Fixed pipeline vs dynamic → known steps, structured input: prompt chaining. Open-ended investigation: dynamic decomposition.

D2 · Tool Design & MCP Integration (18%)

  • Model confuses two tools → expand descriptions first: purpose, input format, examples, edge cases, "use X instead of Y when…".
  • Good descriptions, still misrouted → look for keyword rules in the system prompt that override them.
  • One tool does too much, or names overlap → split into narrow tools with clear names.
  • 18+ tools on one agent → cut to 4–5 by role.
MCP primitiveWhat it is forExam signal
ToolsActions the model invokes"process a refund", "create a ticket"
ResourcesContent the client reads inAgent keeps calling list_tables → expose the catalog as a resource
PromptsReusable templates the user picksRarely the answer; know it exists
Error categoryAgent response
Transient (timeout, unavailable)Retry with backoff
Validation (bad input)Fix the input, then retry
Business (policy violation)Not retryable; alternative flow or escalate, explain to the customer
PermissionChange credentials or escalate
  • Structured error → isError: true + errorCategory + isRetryable + a human-readable description. Generic "Operation failed" is always wrong.
  • No results → isError: false with 0 results is a valid answer, don't retry. An unreachable source is an error, never an empty list.
tool_choiceBehaviour
autoMay call a tool or answer in text
anyMust call some tool
{"type": "tool", "name": "…"}Must call that exact tool (use for a mandatory first step, then go back to auto)
MCP configScope
.mcp.jsonProject: committed, team-shared, secrets via ${ENV_VAR}
~/.claude.jsonUser: personal, experimental; both load together
  • Jira, GitHub, other standard integrations → community MCP server first; build custom only for unique needs.
  • Grep vs Glob → Grep searches file contents (callers, imports, error strings); Glob matches paths and names.
  • Edit fails on a non-unique anchor → fall back to Read + Write ⚠.

D3 · Claude Code Configuration & Workflows (20%)

CLAUDE.md levelLocationShared?
User~/.claude/CLAUDE.mdNo, personal only
ProjectCLAUDE.md or .claude/CLAUDE.mdYes, committed
DirectoryCLAUDE.md in a subfolderYes, applies to that subtree

Levels are combined, not overridden. Check what loaded with /memory ⚠ (newer versions also show it in /context).

NeedMechanism
Standard that always appliesCLAUDE.md
Convention for one file type across the repo (**/*.test.tsx).claude/rules/*.md with a paths: glob in frontmatter
Procedure invoked on demandSkill: .claude/skills/<name>/SKILL.md (or command in .claude/commands/)
CLAUDE.md too bigSplit with @path/to/file.md imports and topic rules
  • Skill frontmatter → context: fork runs it in an isolated subagent (good for verbose output), allowed-tools restricts tools, argument-hint prompts for parameters.
  • Plan mode vs direct → decide by ambiguity, not size: architecture, many files, several valid approaches → plan; clear bug with a stack trace → direct.
  • Refinement → model misreads the requirement: 2–3 input/output examples. Tricky edge cases: write tests first. Unfamiliar domain: interview pattern.
  • Several fixes → interdependent: one message. Independent: one at a time.
CI/CD needFlag
Job hangs waiting for inputclaude -p / --print
Output parsed by another program--output-format json + --json-schema
Add rules, keep defaults--append-system-prompt (vs --system-prompt, which replaces)
  • Reviews repeat old comments → put prior findings in the prompt; report only new or unresolved issues.
  • Reviewing code Claude just wrote → a separate instance, never the generating session.

D4 · Prompt Engineering & Structured Output (20%)

  • Too many false positives → concrete report/skip criteria + code examples per severity. "Be conservative" is wrong.
  • One category at ~40% false positives drags trust in all findings → temporarily disable that category, fix its criteria, re-enable.
  • Few-shot done right → 2–4 examples targeting ambiguous cases, with the reasoning, varied document structures ⚠.
  • Few-shot can't fix → malformed JSON (use schema), invented values (nullable), wrong tool (description), wrong totals (validation).
  • tool_use + JSON schema → guarantees structure, not correctness. Strict mode removes syntax errors.
  • Model invents absent values → make the field optional/nullable; add "other" + detail and "unclear" to enums.
  • Validation-retry → resend the document + the failed output + the specific error. Pointless if the data isn't in the source; return null or route to a human.
  • Semantic checks → extract calculated_total alongside stated_total; flag conflict_detected.
Synchronous Messages APIMessage Batches API
CostStandard50% cheaper
LatencyImmediateUp to 24 hours, no SLA
Multi-turn tool callingYesNo
Matching resultsn/acustom_id per request
Use forPre-merge checks, anything a person waits onOvernight reports, weekly audits, bulk extraction
  • Batch partly fails → resubmit only the failed custom_ids, with a change (e.g. chunk oversized documents).
  • 30h SLA with a 24h batch window → 6h of slack, so submit about every 4 hours.
  • Confidence scores → use them for routing, calibrate them; they never replace criteria.

D5 · Context Management & Reliability (15%)

  • Amounts, dates, IDs lost after summarising → a structured case facts block included in every prompt, never summarised.
  • Lost in the middle → key findings first, section headers; reorder the input rather than repeat it.
  • Tool returns 40 fields → trim to the needed ones before they enter history.
  • Escalation triggers → customer asks for a human (immediately) · policy is silent or an exception applies · no progress after a genuine attempt.
  • Not triggers → frustration on a simple case, low self-rated confidence. Resolve it.
  • Several customers match → ask for email, phone or order number; never pick the most recent.
  • FCR 55% vs an 80% target → explicit escalation criteria + few-shot before any classifier.
  • Error propagation → report failure type, what was tried, partial results, alternatives. A timeout returned as results: [] with success is silent suppression.
  • Answers drift into generic "typical patterns" → context degradation: scratchpad file, subagents for narrow questions, /compact early.
  • Long exploration may crash → state manifest: phase, explored paths, findings, next steps.
  • 97% overall accuracy → can hide a weak segment. Measure by document type and field; stratified sampling includes high-confidence output.
  • Two credible sources conflict → keep both values with sources. Don't pick the newest or average them; different dates may be a trend.
  • Every report claim → claim + source + excerpt + date, plus a coverage gap section for sources that couldn't be checked.

Trap answers and out-of-scope distractors

Wrong options tend to follow a few patterns:

TrapWhy it's wrongPick instead
"Make it mandatory in the system prompt" for a hard rulePrompts are probabilisticHook or code gate
Classifier or new service as the first stepCheap fixes not triedDescriptions, criteria, few-shot
Fixing a component that worksIgnores the evidenceGo where the evidence points
Self-rated confidence 1–10, sentiment, parsing "done"Unreliable signalsstop_reason, explicit criteria, calibration
Invented flags (CLAUDE_HEADLESS, --batch)Not documented-p, .mcp.json, .claude/rules/
Team config in ~/.claude, tokens in the repoWrong scopeProject scope + ${ENV_VAR}
Bigger model or context windowDoesn't fix dilutionSplit passes, scratchpad
Give the agent every toolHurts selection4–5 tools per role
Same-session self-review, "think harder"Shares the generator's blind spotsIndependent instance
Report only issues found in 2 of 3 runsHides intermittent bugsPer-file pass + integration pass
Make developers split their PRsPushes work onto peopleFix the pass design
Required field for data that may be absentForces fabricationNullable

Out of scope per the guide. An option built on these is usually a distractor: fine-tuning or training, API auth/billing/accounts, OAuth and key rotation, deploying or hosting MCP servers, Claude's internals or training (RLHF, Constitutional AI), embeddings and vector DBs, computer use, vision, streaming/SSE, rate limits and pricing math, cloud-provider configs, benchmarks, tokenization, and prompt caching beyond knowing it exists.

Key takeaways

  • Hard constraints (money, security, compliance) go in code; everything else starts with the cheapest fix that targets the root cause.
  • stop_reason drives the loop; tool_result must be appended; subagents get context only through their prompt.
  • Structure everywhere: typed errors with isRetryable, fixed handoff fields, JSON schema with nullable fields, a case facts block.
  • Scope matters: project (.claude/, .mcp.json) for teams, user (~/.claude/) for personal setup.
  • Batch for anything nobody waits on; synchronous for anything that blocks a person.

Frequently asked questions

The CertGrove teamBilingual study notes for developers preparing for Claude Certified Architect — Foundations.