Skip to content
CCAF Preparation

Domain 3 · 20% of exam

Claude Code Configuration & Workflows flashcards

72 cards distilled from the six task statements in this domain, one question per fact the exam can actually ask for. Anything you mark “Again” comes back at the end of the round.

Use these once you have read the lessons — they test recall, not understanding. For the reasoning behind any answer, the domain curriculum explains it, and the cheat sheet condenses it.

Card 1 of 720 known · 0 to revisit

Every card in this deck

The whole deck as a list, for scanning or printing.

Where does user-level CLAUDE.md live, and is it shared with teammates?
~/.claude/CLAUDE.md — personal only, not version-controlled, not shared via git.
What are the two valid project-level CLAUDE.md locations?
.claude/CLAUDE.md or a root CLAUDE.md — both are shared via git.
What is the managed policy CLAUDE.md, and can it be excluded?
An enterprise-deployed CLAUDE.md at an OS-specific system path; it cannot be excluded by any individual setting.
How do multiple applicable CLAUDE.md files resolve conflicts?
They are concatenated into context, not overridden — on a genuine conflict, Claude may pick one arbitrarily.
What is the settings.json precedence order, highest to lowest?
Managed > command line arguments > local > project > user.
How do project settings.json and settings.local.json differ?
settings.json is checked into git and shared with the team; settings.local.json is not checked in, for personal preferences.
What is the @ import syntax in CLAUDE.md?
A bare @ immediately before a path, on its own line, e.g. @./standards/naming.md — no @import keyword despite the exam guide's name for the feature.
What is the maximum @ import recursion depth in current docs?
4 hops (older documentation said 5).
Does @ import parsing trigger inside backticked code spans?
No — import parsing skips markdown code spans and fenced code blocks, so a backticked path is only mentioned, not imported.
What does /memory do?
Diagnostic only — lists which memory files are currently loaded; it never triggers loading.
What is the recommended maximum size for a single CLAUDE.md file?
Under 200 lines — longer files consume more context and reduce adherence.
A new team member doesn't get the team's conventions after cloning the repo — what's the classic root cause?
The conventions live in a teammate's user-level ~/.claude/CLAUDE.md instead of project-level config, so git never shared them.
How do you share a personal preference across git worktrees of the same project?
Import a home-directory file from the project CLAUDE.md, e.g. @~/.claude/my-project-instructions.md, since CLAUDE.local.md doesn't follow you across worktrees.
What does /init do?
Generates a starting CLAUDE.md from codebase analysis, or suggests improvements if one already exists.
What file structure does a skill require vs a command?
A skill is a directory with SKILL.md inside (.claude/skills/name/SKILL.md); a command is a flat file (.claude/commands/name.md).
If a skill and a command share the same name, which wins?
The skill takes precedence.
What does $ARGUMENTS expand to, and what happens if it's absent from the body?
All arguments passed at invocation; if $ARGUMENTS is unused in the body, Claude Code appends them as "ARGUMENTS: <value>".
How are positional arguments indexed in skills?
0-based — $0 is the first argument, $1 the second, via $N as shorthand for $ARGUMENTS[N].
What does the !`command` syntax do in a skill body?
Runs the shell command before the prompt is sent to Claude; the placeholder is replaced with the command's real output.
What does context: fork do?
Runs the skill in an isolated subagent context with no access to the parent conversation's history.
What does the agent field control on a forked skill, and what's its default?
Which subagent type executes the fork (Explore, Plan, general-purpose, or a custom .claude/agents/ subagent); defaults to general-purpose.
Per current Claude Code docs, what does allowed-tools actually do?
Pre-approves the listed tools for the invoking turn only — it does not restrict tool access.
Per the CCAR-F exam guide, what does allowed-tools do?
Restricts the skill's tool access to the listed tools — the exam answer, even though current docs describe pre-approval instead.
What is the real tool-access boundary in current Claude Code, if not allowed-tools?
disallowed-tools — a bare tool name removes it from Claude's context entirely.
What does argument-hint do?
Shows an autocomplete hint (e.g. [issue-number]) for expected arguments when a skill is invoked.
disable-model-invocation: true vs user-invocable: false — what's the difference?
disable-model-invocation hides the skill's description from context (user-only invocation); user-invocable: false hides it from the / menu (Claude-only invocation).
What is the Skill() permission rule syntax?
Skill(name) matches an exact invocation; Skill(name *) is a prefix match covering any arguments.
How do MCP server prompts appear as slash commands?
/mcp__servername__promptname, discovered dynamically, accepting space-separated arguments.
Skills vs CLAUDE.md — the core decision rule?
CLAUDE.md is always-loaded universal standards; skills are on-demand, task-specific workflows loaded only when invoked.
What frontmatter field scopes a .claude/rules/ file to specific files?
paths — a YAML array of glob patterns.
Give the brace-expansion syntax for matching .ts and .tsx in one pattern.
src/**/*.{ts,tsx}
What happens to a .claude/rules/ file with no frontmatter at all?
It loads at launch with the same priority as .claude/CLAUDE.md — always-on, not conditional.
Are .claude/rules/ files discovered inside subdirectories of .claude/rules/?
Yes — all .md files are discovered recursively.
Where do personal path rules live, and what's their priority vs project rules?
~/.claude/rules/; they load before project rules, so project rules win on a genuine conflict.
Why choose path-specific rules over a directory-level CLAUDE.md for test conventions spread across 50 directories?
One glob-scoped rule file covers every matching file regardless of directory; directory-level CLAUDE.md would need a copy in every directory.
Why choose path-specific rules over root CLAUDE.md for Terraform conventions?
Root CLAUDE.md loads for every session regardless of file type; path-scoped rules load only when editing matching files, saving tokens.
Three ways to enter plan mode?
Shift+Tab, prefixing a single prompt with /plan, or starting the CLI with claude --permission-mode plan.
What does plan mode block, and what's the one exception?
Edits, until the plan is approved — except in sessions where bypass permissions is available.
What does Ctrl+G do during plan mode?
Opens the proposed plan in your default text editor for direct editing before Claude proceeds.
What happens when a plan is approved?
Plan mode exits and the session switches to the permission mode the chosen approval option describes.
How do you leave plan mode without approving anything?
Press Shift+Tab again.
What tools does the Explore subagent deny?
Write and Edit — it is read-only.
What thoroughness levels can the Explore subagent be invoked with?
quick, medium, or very thorough.
Do Explore and Plan subagents load CLAUDE.md?
No — they skip CLAUDE.md and the parent session's git status to keep research fast and cheap; every other subagent loads both.
What decides plan mode vs direct execution — difficulty or ambiguity?
Ambiguity. A hard but well-defined fix is direct execution; a simple-sounding task with multiple valid approaches is plan mode.
What's the recommended four-phase workflow?
Explore → Plan → Implement → Commit.
How do you make plan mode the project default?
Set permissions.defaultMode: "plan" in .claude/settings.json.
What does each of the six permission modes run without asking?
default → reads only · acceptEdits → reads, edits, common filesystem commands · plan → reads plus classifier-approved commands · auto → everything, with safety checks · dontAsk → pre-approved tools only (more restrictive than auto) · bypassPermissions → everything, no prompts.
First-line fix when Claude interprets a prose transformation inconsistently?
Concrete input/output examples (2-3 pairs), not more precise prose.
What's the most effective technique for complex transformations with many edge cases?
Test-driven iteration — write tests first, then share test failures.
When is the interview pattern the right technique?
Unfamiliar domains, where the developer might miss important considerations.
When should feedback be batched into a single message vs given sequentially?
Batch when the fixes interact with each other; give feedback sequentially when the issues are independent.
What does /compact <instructions> do?
Replaces conversation history with a summary focused on what you specify.
How do you branch a session to try a divergent fix without losing the original?
Combine --continue or --resume with --fork-session (or /branch), creating a new session ID.
Does /rewind undo changes made by Bash commands?
No — checkpointing only tracks edits made through Claude's own file-editing tools.
What is the Writer/Reviewer pattern?
One session implements; a second, independent session with no shared reasoning context reviews it; the first session then addresses the feedback.
Interview pattern vs concrete examples — what's the key difference?
The interview pattern surfaces missing considerations in unfamiliar domains; examples fix inconsistent interpretation of a transformation the developer already understands.
What flag runs Claude Code non-interactively in CI?
-p / --print — the single most tested fact in Domain 3.
What are the three --output-format values?
text (default), json (structured, includes cost fields), stream-json (newline-delimited JSON streaming).
Where does --json-schema output land when combined with --output-format json?
In the structured_output field of the JSON envelope.
What cost fields appear in --output-format json output?
total_cost_usd and a per-model cost breakdown.
What does --bare skip, and why use it in CI?
Auto-discovery of hooks, skills, plugins, MCP servers, auto memory, and CLAUDE.md — for reproducible runs across machines.
What does dontAsk mode do, and when is it recommended?
Denies anything not pre-approved via permissions.allow or the read-only command set — recommended for locked-down CI.
What is the stdin size cap for claude -p, and what happens over it?
10MB — exceeding it produces a clear error and non-zero exit status.
What happens when SIGTERM stops a claude -p run?
Aborts the in-progress turn, kills the running Bash process tree, runs SessionEnd hooks, and exits with code 143.
Why is the same session that generated code weaker at reviewing it?
It retains the reasoning context that justified its own choices, making it less likely to question them.
What's the fix for duplicate PR comments across repeated CI review runs?
Include prior review findings in context and instruct Claude to report only new or still-unaddressed issues.
What is CLAUDE.md's role in CI-invoked Claude Code?
It's read exactly as in interactive mode — the way to supply testing standards, fixtures, and review criteria.
When is the Batch API unsuitable for CI?
For blocking pre-merge checks — it has up to 24-hour processing time with no latency SLA.
What GitHub App permissions does Claude Code Actions require?
Read & write on Contents, Issues, and Pull requests.
What are the default trigger_phrase and --max-turns for the GitHub Action?
@claude and 10 turns.
How can a CI gate detect MCP or plugin load failures from stream-json output?
Check whether plugin_errors or mcp_server_errors is non-empty in the system/init event — the keys are omitted entirely when there are no errors.