CCD-F Reference · 17 Anti-Patterns · All 8 Domains

17 anti-patterns to avoid on the CCD-F exam.

CCD-F exam distractors are almost always anti-patterns dressed up to look correct. If you can spot the anti-pattern, you can eliminate wrong answers before reading them in detail. 5 are critical (drop you below the 720/1000 pass mark if missed), 11 are common, and 1 are edge cases.

Free referenceAll 8 domainsDistractor playbook
← Back to CCD-F Exam GuideTest yourself: free CCD-F diagnostic →
CCDVF-D1 · 14.7% of CCD-F · 2 anti-patterns

Agents & Workflows

AP-CCDVF-D1-01
Critical

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.

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-02
Common

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.

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 · 4 anti-patterns

Applications & Integration

AP-CCDVF-D2-01
Critical

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.

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-02
Common

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.

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-03
Common

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.

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-04
Common

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.

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 · 1 anti-patterns

Claude Code

AP-CCDVF-D3-01
Edge case

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.

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 · 1 anti-patterns

Evaluation, Testing & Debugging

AP-CCDVF-D4-01
Common

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.

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 · 3 anti-patterns

Model Selection & Optimization

AP-CCDVF-D5-01
Critical

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.

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-02
Common

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.

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-03
Common

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.

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 · 2 anti-patterns

Prompt & Context Engineering

AP-CCDVF-D6-01
Common

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.

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-02
Common

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.

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 · 2 anti-patterns

Security & Safety

AP-CCDVF-D7-01
Critical

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.

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-02
Common

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.

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 · 2 anti-patterns

Tools & MCPs

AP-CCDVF-D8-01
Critical

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.

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-02
Common

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.

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 free CCD-F diagnostic. No signup, about 10 minutes. Most distractors are one of the 17 patterns above - see how many you can spot.

Start the free diagnostic← Back to Exam Guide