Chapter 03 · CCD-F · all 5 domains
17 anti-patterns to avoid on the CCD-F exam.
Exam distractors are almost always anti-patterns dressed up to look correct. Spot the anti-pattern and eliminate wrong answers before reading them in detail. This reference covers 17 patterns across 8 CCD-F domains.
Exam guide · 4 chapters
OverviewCCDVF-D1 · 14.7% of CCD-F
Agents & Workflows
2 anti-patterns
Open the 53-question mock → · Get Pro →
AP-CCDVF-D1-01Critical
Wrong call
Building a custom agent loop from scratch when a workflow would do
Reaching for the Claude Agent SDK and a full tool-use loop for a task whose steps are actually known and fixed in advance - more code, more failure surface, no benefit.
Right call
Apply the workflow-vs-agent decision criteria before reaching for the SDK
Use a workflow for deterministic, known-step tasks. Reserve the Agent SDK and custom loops for genuinely open-ended tool use.
AP-CCDVF-D1-02Common
Wrong call
Subagents inheriting the parent's full conversation and memory
Forwarding the entire parent context to every subagent. Burns tokens, contaminates the subagent's reasoning with irrelevant turns, and breaks the isolation guarantee that makes sub-agent patterns predictable.
Right call
Scope subagent memory to the task brief, per the agent design pattern
Pass only the explicit task description and the narrow inputs a subagent needs. Context isolation is the reason to use a subagent - preserve it.
CCDVF-D2 · 33.1% of CCD-F
Applications & Integration
4 anti-patterns
AP-CCDVF-D2-01Critical
Wrong call
Parsing raw text output instead of using the Messages API's structured mechanics
Regex-scraping a plain-text response for the data you need instead of using tools, streaming, vision, thinking, and caching as the API was designed to expose them.
Right call
Use the API surface as designed: tools, streaming, vision, thinking, caching
The Messages API's structured mechanics exist precisely so you don't have to parse prose. Use them.
AP-CCDVF-D2-02Common
Wrong call
Skipping code review and version control because 'Claude wrote it'
Merging Claude-generated code directly without the review, testing, or version-control discipline applied to human-written code, on the assumption that it's already correct.
Right call
Apply the same software-engineering foundations to Claude-generated code
REST APIs, JSON, async programming, version control, and code review apply to Claude-generated code exactly as they do to any other code.
AP-CCDVF-D2-03Common
Wrong call
One-size-fits-all app design regardless of interface
Designing the same interaction pattern for Claude Code, Desktop, claude.ai, and the API/SDK, ignoring that each interface imposes different constraints on state, latency, and control.
Right call
Design deliberately per interface
Claude Code, Desktop, claude.ai, and the API/SDK each call for different application design choices. Design for the interface you're actually shipping to.
AP-CCDVF-D2-04Common
Wrong call
Shipping configuration once and never revisiting it
Setting CLAUDE.md, settings.json, and model version pinning at launch and never touching them again, so plugin dependencies and model versions silently drift.
Right call
Apply systems-life-cycle-management discipline across the app's life
Treat configuration management as an ongoing responsibility, not a one-time setup step.
CCDVF-D3 · 3.1% of CCD-F
Claude Code
1 anti-pattern
AP-CCDVF-D3-01Edge case
Wrong call
Treating Claude Code as 'just a chat window'
Ignoring CLAUDE.md, Skills, Commands, and Agent Memory, and using Claude Code as an undifferentiated chat interface even though it's only 3.1% of this exam.
Right call
Use Claude Code's core components deliberately, even at a narrow weight
Rules, Skills, Commands, Agents, and Agent Memory are each testable, distinct components - know what each does even though the domain is light.
CCDVF-D4 · 2.6% of CCD-F
Evaluation, Testing & Debugging
1 anti-pattern
AP-CCDVF-D4-01Common
Wrong call
Guessing whether a failure is 'the model' or 'the integration' without tracing
Assuming a wrong output means the model is bad, without checking whether the actual bug is in how the response was parsed, validated, or routed downstream.
Right call
Trace failures to isolate the layer before choosing a fix
Identify the error type and trace it to the integration layer or the model output specifically - the fix is different for each.
CCDVF-D5 · 16.8% of CCD-F
Model Selection & Optimization
3 anti-patterns
AP-CCDVF-D5-01Critical
Wrong call
Always defaulting to the highest-tier model 'to be safe'
Using Opus for every call regardless of task complexity, adaptive-thinking need, or latency budget.
Right call
Choose Opus, Sonnet, or Haiku on quality-latency-cost trade-offs
Match the model tier to what the task actually needs, including whether adaptive thinking is worth the latency cost.
AP-CCDVF-D5-02Common
Wrong call
Ignoring token and context-window fundamentals until truncation breaks something
Not accounting for context-window limits or sampling non-determinism, so long-running sessions silently truncate or drift without anyone noticing until output breaks downstream.
Right call
Treat tokens, context windows, and sampling as first-class constraints
Budget for context-window limits and account for sampling non-determinism as a designed-for constraint, not a surprise.
AP-CCDVF-D5-03Common
Wrong call
No caching strategy - resending the same system prompt every call
Sending an unchanged system prompt and context on every request with no cache breakpoints, paying full-price tokens repeatedly for identical content.
Right call
Manage cost through budgeting, caching, and cache checkpointing
Use prompt caching and cache checkpoints deliberately wherever the prefix repeats across calls.
CCDVF-D6 · 11% of CCD-F
Prompt & Context Engineering
2 anti-patterns
AP-CCDVF-D6-01Common
Wrong call
Letting tool output bloat the context indefinitely
Appending every tool result verbatim to the running context with no pruning or compaction, until the context window fills with stale intermediate output.
Right call
Prune and compact tool output, isolate context via subagents
Manage the context window actively: prune tool-output bloat, compact where safe, and isolate noisy sub-tasks in subagents.
AP-CCDVF-D6-02Common
Wrong call
Trusting structured-looking output without validation
Accepting a response that looks like well-formed JSON or a clean structured answer without actually validating it, on the assumption that confident formatting means correct content.
Right call
Apply defensive parsing and response validation, with skepticism toward confident-sounding output
Validate structured output against a schema and stay skeptical of fluent-but-wrong answers - formatting confidence is not correctness.
CCDVF-D7 · 8.1% of CCD-F
Security & Safety
2 anti-patterns
AP-CCDVF-D7-01Critical
Wrong call
No mitigation for prompt injection from untrusted input
Feeding web pages, PR descriptions, or uploaded documents directly into the agent's context with no awareness that any of that content could contain adversarial instructions.
Right call
Treat all external content as untrusted input, with prompt-injection-aware handling
Apply prompt-injection awareness and mitigation, plus least-privilege identity and access management, to anything the agent reads that it didn't author.
AP-CCDVF-D7-02Common
Wrong call
Hardcoding API keys or secrets in prompts or committed config
Embedding a live API key directly in a system prompt or committing it to version control 'just for now,' with no secrets-management layer.
Right call
Manage identity, secrets, and API keys outside prompts and version control
Secrets management and least-privilege access are separate from prompt content - keep them out of anything the model or a repo can leak.
CCDVF-D8 · 10.6% of CCD-F
Tools & MCPs
2 anti-patterns
AP-CCDVF-D8-01Critical
Wrong call
Writing a tool description that's technically accurate but ambiguous to the model
A tool description that a human engineer would understand but that leaves the model unable to reliably distinguish it from a similarly-named tool.
Right call
Treat the tool description as the deterministic selector, like an API contract
Invest in tool-description clarity the way you'd invest in a public API contract - it's what actually drives tool selection.
AP-CCDVF-D8-02Common
Wrong call
Choosing an MCP server when a built-in tool or Skill would be simpler
Standing up a full MCP server (with its own transport, auth, and deployment surface) for a capability a built-in tool or a Skill already covers.
Right call
Choose deliberately among built-in tools, custom tools, Skills, and MCPs
Match the mechanism to the use case's actual complexity - MCP for cross-system integration, Skills for reusable in-session workflows, built-ins where they suffice.
Ready to test yourself?
Take the CCD-F diagnostic, no sign-up. Most distractors are one of the 17 patterns above.
▪Last reviewed ·