2.5 · 8.6% of the exam · Topic 5 of 6
Claude Application Design
Claude Code, Desktop, claude.ai, the API, and the SDKs do not interpret a product the same way. The application draws a boundary between instructions and untrusted content, declares the schema it will parse, keeps sessions from going stale, and treats plugins as dependencies.
Learning objectives
- Pick a surface from where the user works and from what the application must control.
- Keep untrusted document and user text out of the instruction channel.
- Design the schema as the contract the application parses, not as a hope about prose.
- Discard or replace a session whose tool results no longer match the files or the account.
- Manage plugins as shared, versioned dependencies rather than one person's local install.
Detailed theory
The surface is part of the design
Claude application design is 8.6% of the exam, the largest skill in this domain. The published scope is how Claude interprets instructions on Claude Code, Desktop, claude.ai, the API, and the SDKs, plus content boundaries, schema design, session hygiene, and plugin management.
Claude Code is a repository agent with tools, files, and project configuration. Desktop and claude.ai are products with their own tools and memory. The API and SDKs are libraries inside an application you own: you send messages, you run tools, you store history. An instruction that lives only in a Code CLAUDE.md does not exist on a raw Messages call. A schema you enforce in your service does not enforce itself in a chat window.
Content boundaries and schemas
Public notes for this exam treat retrieved and user-supplied text as untrusted data. It stays separate from the instructions that tell the model what to do. A document pasted into the system prompt is in the instruction channel. A document placed in a user turn, labeled as source material, is data the instructions can talk about.
Schema design is the contract between the model and the code that consumes the result. The application declares the fields it will parse and rejects a body that does not match. Prose that "usually looks like JSON" is not a contract. The schema belongs with the caller, in version control, which is the foundation in 2.4.
Session hygiene and plugins
A session is the history you choose to send again. Tool results inside it can name files, orders, or policies that have since changed. This repository's session teaching is that resuming after the world has changed makes the model reason from old tool output. Asking it to re-read does not remove those stale results from the history. The hygiene move is a new session plus a short summary of what is still true.
Plugins add tools and instructions to a Claude product surface. They are dependencies. A design that works only because one developer installed a plugin will fail for everyone else. Record the plugin and the version the application expects, the same way you record a library. Configuration in 2.6 is where shared project files carry team dependencies and personal files stay personal.
Core concepts
Surface
- What
- Claude Code, Desktop, claude.ai, or the API and SDKs.
- Why
- Each one loads different tools and different configuration.
- When
- The user already lives in that product, or you must own the loop.
- When not
- You assume a CLAUDE.md rule applies to an API service.
Content boundary
- What
- Instructions in one place, untrusted text in another.
- Why
- Text in the instruction channel is treated as instructions.
- When
- The input is a user, a document, a web page, or a tool result you did not author.
- When not
- The text is a policy your team wrote and you intend as an instruction.
Schema
- What
- The shape the application parses and rejects on mismatch.
- Why
- Downstream code needs fields, not a paragraph that happens to contain them.
- When
- A later step reads an amount, an id, or a list.
- When not
- The user only wanted prose and nothing in your system branches on it.
Session hygiene
- What
- The history you resend still matches the world.
- Why
- The API will treat stale tool results as facts.
- When
- Files, records, or policy changed after the tool ran.
- When not
- The same task is continuing and the tool results are still the ones you would fetch now.
Plugin
- What
- An installable extension of a Claude surface, versioned like a dependency.
- Why
- Behavior that depends on an undeclared plugin is not reproducible.
- When
- The surface is Code or Desktop and the capability comes from a plugin.
- When not
- You are on the raw API. There, the equivalent is a tool you implemented and shipped in your service.
Practical examples
A policy pasted into the system prompt
A support bot puts the customer's pasted email into the system prompt so the model "sees it first." The email says to ignore the refund rules. It is now in the instruction channel. The design move is to keep the refund rules in the system prompt and pass the email as labeled user content.
A session that cites a deleted file
Yesterday's tool result says the bug is in parser.ts. The file was renamed this morning. Resuming the session and asking for a fix produces advice about a path that is gone. A new session with a summary that names the new path does not keep the old tool result in the history.
Claude-specific considerations
- On the API you choose the boundary by which field you use. System is for instructions you wrote. The user message carries the untrusted payload.
- SDKs do not add a server-side session. Hygiene is which array you send on the next call.
- Claude Code loads project instructions from the repository. That does not configure an API application deployed elsewhere.
- A plugin required for a team workflow belongs in the shared project setup. A plugin only one person uses stays on that machine and is not part of the team's design.
Architecture decisions
Tradeoffs
A product surface gives you tools and a window quickly, and you do not own the loop. The API gives you the loop and makes you build storage, schema checks, and session handling. The left column is a product surface. The right column is your service.
Quick reference
- Code, Desktop, claude.ai, and the API do not share instructions or tools automatically.
- Untrusted text stays out of the system prompt.
- A schema is the shape your code parses. Prose is not a schema.
- Stale tool results stay in a resumed session. Start a new one with a summary.
- A team plugin is a declared dependency. A personal plugin is not the design.
- Owning the loop means the API or an SDK, and it means you store history.
Decision rules for the exam
Common exam traps
Exam tips
- No practice questions for this skill are stored in the repository. The architect tool-design bank is a different domain.
- A question about where an instruction is loaded is a surface question. CLAUDE.md does not configure a raw API call.
- A question about a stale transcript is session hygiene, not a larger context window as the first move.
Common mistakes
One prompt file hoped to drive every surface.
Name the surface, then name which channel it reads.
Branching production code on a paragraph.
Parse a schema and fail closed.
Calling a plugin "installed" because one laptop has it.
Declare it where the rest of the team gets it, and pin the version.
Practice questions
Original questions for this topic. They are study items, not questions from the live exam.
Scenario questions
Build exercise
Draw one feature on two surfaces
Intermediate · 40 minutes
What you will learn
- What changes between Claude Code and the API.
- Where untrusted text goes.
- What the schema must contain.
- When a session is thrown away.
Step 1
Pick a feature that reads a customer document and writes a structured result
Describe it in one paragraph with one side effect, such as creating a ticket.
Why: The boundary and the schema both show up.
You should see: The outcome, the untrusted input, and the side effect.
Step 2
Place it on Claude Code and on the API
For each surface, write where instructions live, who executes tools, and who stores history.
Why: The design is not portable until those three are answered.
You should see: Two short columns that do not say "the same prompt."
Step 3
Write the schema and the boundary
List the fields the ticket step needs. State that the document is user content.
Why: Those are the two design artifacts the next engineer needs.
You should see: A field list and a sentence that names the instruction channel and the data channel.
Step 4
Define a stale session
Name one fact a tool result might hold that can go stale, and write the replacement: new session plus the facts you keep.
Why: Hygiene is a design decision, not a longer window.
You should see: The stale fact, and the summary fields that survive.
Review checklist
Checks are saved in this browser.
Key takeaways
- The surface decides who stores history and who runs tools.
- Instructions and untrusted content stay apart.
- Schemas are contracts. Sessions must still match the world.
- Plugins the team needs are declared. Personal installs are not the design.
Sources
- CCDV-F exam guide, Domain 2 skill weights — Public blueprint summary: surfaces, content boundaries, schema design, session hygiene, plugin management.