Developer – Foundations
This is the only one of the four exams whose guide publishes the weight of each skill, not just of each domain. With 53 items and the official weights you can work out how many questions fall on each topic, and that completely changes where it is worth spending your time. The rest of this page follows from that calculation.
The facts
| Code | CCDV-F | Items | 53 |
|---|---|---|---|
| Time | 120 minutes (≈2 min 15 s per item) | Pass mark | 720 on a 100-1,000 scale |
| Format | Multiple choice and multiple response; each item states how many to select | ||
| Fee | $125 | Validity | 12 months |
Criterion-referenced: you compete against a fixed standard, not against other candidates. The report gives you the total scaled score and the % correct per domain, but passing depends on the total alone.
Skill map: how many items each topic is worth
The 25 skills in the blueprint, ordered by weight, converted into expected items out of 53. The priority column is mine, not the guide's: it crosses the weight with what you already know from your day job.
| Skill | Domain | Weight | Items | Priority |
|---|---|---|---|---|
| Claude Application Design | 2 | 8.6% | 4.6 | Top |
| Software Engineering Foundations | 2 | 7.4% | 3.9 | Quick review |
| Claude API Mechanics | 2 | 6.8% | 3.6 | Top |
| Technical Fundamentals | 5 | 6.1% | 3.2 | Quick review |
| Agent Construction with Claude | 1 | 5.3% | 2.8 | High |
| LLM Fundamentals | 5 | 5.2% | 2.8 | High |
| Agent Patterns and Frameworks | 1 | 4.9% | 2.6 | High |
| Prompt Engineering | 6 | 4.6% | 2.4 | Medium |
| Agent Architecture | 1 | 4.5% | 2.4 | Medium |
| Tool Implementation | 8 | 4.4% | 2.3 | Medium |
| Configuration Management | 2 | 4.1% | 2.2 | Medium |
| Agentic Customization | 8 | 4.1% | 2.2 | Medium |
| Context Engineering | 6 | 3.8% | 2.0 | Medium |
| Understanding Requirements | 2 | 3.4% | 1.8 | Low |
| AI Application Security | 7 | 3.2% | 1.7 | Medium |
| Claude Code Operation | 3 | 3.1% | 1.6 | Skip |
| Systems Life Cycle | 2 | 2.8% | 1.5 | Low |
| Cost and Token Management | 5 | 2.8% | 1.5 | Medium |
| Model Selection and Tradeoffs | 5 | 2.7% | 1.4 | Low |
| Output Handling | 6 | 2.6% | 1.4 | Low |
| Debugging and Error Handling | 4 | 2.6% | 1.4 | Low |
| Guardrails and Safe Deployment | 7 | 2.3% | 1.2 | Low |
| MCP Server Development | 8 | 2.1% | 1.1 | Low |
| Identity, Secrets, Key Management | 7 | 1.6% | 0.8 | Low |
| Claude Hooks | 7 | 1.0% | 0.5 | Skip |
2. Claude Code is worth 3.1% and Claude Hooks 1.0%: two items between them. That is exactly what you use most day to day and what pays least to study. Resist the temptation.
3. Software Engineering Foundations + Technical Fundamentals = 13.5%, seven items, and it is generic software engineering: REST, JSON, asynchrony, version control, code review, refactoring, websockets, SDKs that wrap REST APIs. Near-free points for you.
1 · Claude Application Design — 8.6%, the heaviest skill
The objective literally speaks of "how Claude interprets instructions across interfaces, content boundaries, schema design, session hygiene and plugin management". There is no official page with that title: it is the examiner's synthesis of five separate areas. Here are the five.
How interpretation changes with the interface
- Raw API: there is no system prompt beyond your own, with one exception — if you send
tools, the API automatically builds a system prompt containing the tool use instruction block, the JSON schemas, your system prompt and the tool configuration, in that order. It costs hundreds of tokens you did not write. - If you include the memory tool, the API adds its memory protocol to the system prompt on its own. There is no need to resend it.
- claude.ai, mobile and desktop have their own system prompt (date, formatting, product behaviour) that does not apply to the API. Anthropic publishes it in full in its release notes.
- Agent SDK: three starting points — no system prompt (minimal, tool calling only), the Claude Code preset (the CLI's full prompt), or your own.
claude -p uses the full prompt by default; the Agent SDK does not. When porting something from the CLI to the SDK you have to set the preset explicitly or the agent loses all its behavioural guidance and looks "stupid" for no apparent reason. And in the SDK, CLAUDE.md does not go into the system prompt: it is injected as conversation context and whether it loads depends on the setting sources.Content boundaries
Separate instructions, context, examples and variable input into their own XML tags, with consistent names. In long contexts (20k+ tokens): documents at the top, the question at the end — up to a 30% improvement in Anthropic's tests. And the hard rule you already know: third-party content goes only in tool_result blocks, never in the system prompt or in user text.
Schema design: the limits that get asked
| Limit | Value |
|---|---|
Tools with strict: true per request | 20 |
| Optional parameters, request total | 24 |
Parameters with union types (anyOf) | 16 |
| Grammar compilation timeout | 180 s |
Supported: basic types, scalar enum, const, anyOf, internal $ref, default, required, string formats. Not supported (400 if you use it): recursive schemas, external $ref, numeric constraints such as minimum/maximum, minLength/maxLength, and lookahead in pattern.
To reduce complexity, the official order is: mark only the critical tools strict → turn optionals into required (each optional almost doubles part of the state space) → flatten nesting → split across several requests or subagents.
Session hygiene
What survives compaction and what does not: the system prompt stays intact and the root CLAUDE.md is re-injected from disk; what is lost are the rules with paths: and the nested CLAUDE.md files, until a file that activates them is read again. The bodies of invoked skills are re-injected with a per-skill and total cap, discarding the oldest first.
And a recommendation that sounds counter-intuitive: it is often better to start clean than to compact, because the model can rebuild state from the filesystem if you give it a prescriptive opening ("check progress.txt, tests.json and the git log").
Plugins
A plugin is a self-contained directory with skills, agents, hooks, MCP servers and default settings. Only the manifest goes inside .claude-plugin/; the remaining folders live at the root. Four installation scopes: user (the default), project (shared via git), local (gitignored) and managed (read-only). Versioning is the cache key for updates, and it resolves in cascade: manifest version → marketplace version → commit SHA → digest → unknown.
2 · Claude through third parties — inside API Mechanics, 6.8%
The objective says "invoking Claude through third-party vendors". Today there are five platforms, not three, and the distinction most likely to be asked is who processes the data.
| Platform | Who operates it | SDK client | Auth |
|---|---|---|---|
| Claude API | Anthropic | Anthropic | API key |
| Amazon Bedrock | AWS | AnthropicBedrock / AnthropicBedrockMantle | AWS credentials |
| Claude Platform on AWS | Anthropic | AnthropicAWS | IAM or API key |
| Google Cloud / Vertex | AnthropicVertex | Google credentials | |
| Microsoft Foundry | Anthropic on Azure | AnthropicFoundry | Azure API key or Entra ID |
What changes in the code is only the client class and the authentication: client.messages.create(...) is identical.
Differences that come up
- Vertex:
modeldoes not go in the body (it goes in the URL) and, conversely,anthropic_versiondoes go in the body. It is the most quotable format difference. - Maximum request size: Bedrock 20 MB, Vertex 30 MB.
- Batch processing and data residency exist only in the Claude API and in Claude Platform on AWS. There are no Batches on Bedrock, Vertex or Foundry.
- Bedrock requires inference profiles for the newer models: invoking with the base model ID returns 400. Prefixes
global.,us.,eu.… - Global vs regional: regional routing guarantees residency and costs 10% more.
3 · Agentic frameworks — 4.9%
The blueprint names three explicitly: Strands, LangGraph and PydanticAI. You do not need to know how to program them; you need to know what each one is chosen for.
| Framework | Core idea | Chosen when |
|---|---|---|
| Strands (AWS) | A ready-made "model-driven" agentic loop, model-agnostic, with native MCP and multi-agent patterns | You want a loop without writing one and you deploy on AWS |
| LangGraph | Low-level orchestration by state graph: nodes do the work, edges decide what comes next | You need durable, resumable execution, human-in-the-loop and auditable topology |
| PydanticAI | Typed loop: the Pydantic model generates the schema and validates every run; if it fails, it re-prompts the model | The value is in the data contract and in provider portability |
From LangGraph, two named concepts that lend themselves to a question: reducers (without a reducer, a node's update overwrites the state key) and the difference between checkpointer (snapshots of one thread, short-term memory, time travel) and store (key-value across threads, long-term memory). Checkpoints are saved at step boundaries, not mid-node, so on resume the node re-runs in full: nodes have to be idempotent.
Official product matrix
- Client SDK (Messages API): direct access, you implement the loop. Maximum control.
- Agent SDK: an agent without implementing the tool loop, running in your process.
- Claude Code CLI: interactive or one-off use in the terminal.
- Managed Agents: long, asynchronous agents without managing sandboxes or sessions. It is a separate product from the Agent SDK, with a hosted REST API.
4 · Deployment: self-hosted vs Anthropic-hosted — inside Agent Construction, 5.3%
The objective mentions "managed agent deployment models (self-hosted vs. Anthropic-hosted)". The exact distinction:
- Self-hosting the Agent SDK: the SDK spawns one subprocess per session with a shell, a working directory and transcripts on local disk. N sessions are N subprocesses. Local state does not survive restarts, so in production you need an external session store that mirrors the transcripts.
- Managed Agents (Anthropic-hosted): a prebuilt harness on managed infrastructure. Four concepts: Agent (model, prompt, tools), Environment (where it runs), Session (a running instance) and Events (history persisted server-side). Each session gets its own isolated sandbox.
There is a third, intermediate model: a self-hosted sandbox inside Managed Agents, where orchestration stays with Anthropic and only tool execution moves to your infrastructure. Mind the nuance: tool inputs and outputs still flow to Anthropic's control plane.
5 · The two "free" skills — 13.5% together
Software Engineering Foundations (7.4%) and Technical Fundamentals (6.1%) are not about Claude: they are about software engineering. REST and JSON, asynchronous programming, version control, integration into the development cycle, code review, refactoring at small and large scale, and SDKs that wrap REST APIs and websockets. That is seven items you already know how to answer; do not spend time here beyond a read-through.
Understanding Requirements (3.4%) and Systems Life Cycle (2.8%) are not Claude-technical either: functional and infrastructure requirements derived from business needs, and systems life cycle management. Answer with classic engineering judgement: requirements and acceptance criteria first, architecture second; and nothing reaches production without observability or a rollback plan.
6 · How the official module teaches it (and what that means for the items)
The module Production-grade prompting, Agents & tool use does not teach definitions: it teaches diagnosis. Every takeaway has the shape "this symptom means this technique is missing". Items are written against that mould, so the typical question will not be "what is X?" but "this is failing, what is missing?".
The diagnostic table you have to know cold
| Symptom | What is missing |
|---|---|
| The output does not have the expected shape | An output constraint |
| Behaviour drifts between turns | An under-specified system prompt |
| Hallucinated structure | Few-shot examples |
| Untested inputs keep breaking the parser | Leave the prompt behind: structured outputs in the API |
| Tool selection degrades after N turns | The context window, not the schema |
| The wrong tool is picked from the first turn | The tool's description |
| Tool use error when retrying after a dropped stream | A half-built block, not the schema |
New figures and rules the module adds
- Exclusion condition: every tool description has to include a line saying when NOT to call it, written while designing the schema and not after the first failure shows up in a log. It is the sentence that resolves most wrong-tool bugs: two tools that both say "use it to search for information" are indistinguishable to Claude however different their schemas are.
- Tool outputs in production take 3 to 5 times more room than development fixtures. A session that holds up for 50 turns in testing can hit the ceiling at turn 8 once deployed.
- A connected MCP server spends context even if you never use its tools. The docs put a figure on it: a typical five-server setup consumes ~55,000 tokens in definitions before Claude does anything. Tool search cuts that by more than 85%.
- Image cost:
⌈width / 28⌉ × ⌈height / 28⌉visual tokens — Claude sees 28×28 px patches, not pixels. - Refactoring from in-context memory to external storage under production pressure costs an hour; taking the same decision deliberately at design time costs twenty minutes.
The image token ceiling is per tier, not per model
| Tier | Max side | Max visual tokens |
|---|---|---|
| High resolution (models 4.7 and later) | 2576 px | 4784 |
| Standard (all the rest) | 1568 px | 1568 |
Images that exceed either of the two limits are rescaled automatically to the largest size that preserves the aspect ratio, which caps the cost. Padding to the next multiple of 28 px is then applied. A high-resolution image can cost around three times more than the same image on a standard-tier model, so run the formula against the largest input you expect in production, not against the ones in your test set.
Streaming: where the module and the documentation disagree
On the basics they agree, and this is what to walk in knowing: a block is only closed at its content_block_stop and the message only ends at message_stop. The deltas of a tool use are partial JSON strings: do not parse them until the block closes.
The living documentation says otherwise: resume, do not discard — and on recent models do it by adding a user message asking it to continue, rather than putting the partial response back as an assistant message.
The point where they do agree, and probably the examinable one: tool use and thinking blocks cannot be recovered partially. You can only resume from the last text block. If an item offers you "accumulate and retry the partial
tool_use", that is the distractor.The four memory scopes, chosen by the shape of the session
| Scope | Cost | When |
|---|---|---|
| In context | The easiest to write | The first to fail if real sessions are short and numerous |
| External storage | Adds latency | State has to survive between sessions |
| Summarised memory | Lowers the cost | You lose whatever the summariser's prompt did not preserve |
| Stateless | None | Jobs that complete and close |
Workflow or agent, in the module's formulation
Workflow when you can write the exact steps in code. Agent when you can specify the goal and the tools but not the path between them. Getting it wrong only shows in production: agents where a workflow would have done add context cost and behaviour that lives in transcripts; workflows where an agent was needed break on the first input that leaves the path.
Reasoning
Turn it on only where a reasoning pass changes the answer, and calibrate the effort to the problem rather than raising it on every call. Thinking blocks go back to the API unmodified or the next request fails. Mind the module's distinction: choosing which model to run is a separate topic from whether to turn reasoning on, and it is taught in an earlier module.
10-day plan
Ordered by weight, not by syllabus. Each day closes with a batch of cards on the topic, and the last three days are nothing but mock exams and mistakes.
Interfaces and what each one injects. Read the Agent SDK page on modifying system prompts and the system prompt release notes. Port one of your own prompts from the CLI to the SDK and watch the difference.
Schemas: complexity limits, what strict JSON Schema accepts and what it does not. Session hygiene and what survives compaction. Plugins: scopes and versioning.
Messages, streaming and its errors, batch with its limits and states, and the five platforms with their data processor. Write a real batch call and watch the full cycle.
The four skills in domain 5: LLM fundamentals, technical fundamentals, model tradeoffs and cost management. Prompt caching in depth: TTL, invalidation and the silent failure of the token minimum.
Architecture, construction with the Agent SDK, and the three frameworks with their selection criteria. Self-hosted vs Managed Agents and the compliance consequence.
Tool implementation, MCP server development, and the tradeoffs between a built-in tool, your own tool, a Skill and MCP. Build a minimal MCP server if you never have.
Prompt and context engineering, output handling, and the whole of domain 7: indirect injection, guardrails, secrets. Skip the hooks: they are worth half an item.
53 items timed to 120 minutes. No breaks and no lookups. Note the accuracy per domain.
Targeted review of the mock's red domains. No new material.
Mock exam and a review of the numbers table. If the weighted score is not above 85%, move the date.
The three official sample questions
They come from the guide. They do not come from the live bank, but they set the cognitive level: all are scenario-based and all are solved with a principle, not with memory.
- Send everything synchronously in parallel to finish as soon as possible.
- Use the Message Batches API.
- Lower
max_tokenson the synchronous calls. - Switch to the smallest model whatever the quality.
max_tokens nor shrinking the model addresses the batch-vs-real-time tradeoff.- Raise the temperature so it is less predictable.
- Treat retrieved content as untrusted input, keep it separate from instructions, and use guardrails or hooks so that anything injected cannot trigger sensitive actions.
- Ask in the system prompt that they not include malicious instructions.
- Switch to a larger model that follows instructions better.
- Put the logic in each application's system prompt.
- Build an MCP server that exposes the operations as tools.
- Paste the inventory data into the context on every request.
- Rely on a built-in tool, which can reach any internal REST API.
The last 48 hours
- Review the numbers table and the version traps section. Almost all the memorisation lives there.
- Do a full pass of cards on the API and batch, Caching, Models and cost topics. Those are the ones with the most exact figures.
- One timed mock, not two. Resting pays more than a last-minute review.
- Get your ID ready with the name identical to the one on the registration, and clear your desk: no notes, phone, watch or second monitor.