CCDVF-D1 · 14.7% of CCD-F · 2 anti-patterns
Agents & Workflows
✗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.
✓ ✗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.
✓ CCDVF-D2 · 33.1% of CCD-F · 4 anti-patterns
Applications & Integration
✗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.
✗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.
✓ ✗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.
✓ ✗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.
✓ CCDVF-D3 · 3.1% of CCD-F · 1 anti-patterns
Claude Code
✗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
✗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.
✓ CCDVF-D5 · 16.8% of CCD-F · 3 anti-patterns
Model Selection & Optimization
✗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.
✓ ✗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.
✓ ✗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
✗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.
✗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
✗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.
✓ ✗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
✗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.
✗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.