CLAUDE.md
A markdown file that provides persistent instructions to Claude Code. It acts as a project-level system prompt, loaded automatically when Claude Code starts in a directory. CLAUDE.md files can exist at multiple levels (project root, subdirectories, user home) and are merged together, with more specific files taking priority.
Exam context: This is heavily tested. Know the three scopes (project, directory, user), how they merge, and the difference between CLAUDE.md (checked into the repo) and .claude/CLAUDE.md (local, not committed).
See also: 3.2 CLAUDE.md Files
Hooks
Custom scripts that run at specific points during Claude Code's execution lifecycle. Hooks can trigger before or after tool calls, on notification events, or when a session starts. They are defined in the settings.json configuration and run as shell commands on your local machine.
Exam context: Know the available hook types (PreToolUse, PostToolUse, Notification, etc.), how to configure them, and how exit codes affect Claude Code's behaviour. A non-zero exit code from a PreToolUse hook blocks the tool call.
See also: 3.3 Hooks & Automation
Permissions
The security system that controls which tools and operations Claude Code can execute. Permissions operate on an allowlist/denylist model — you can explicitly permit or deny specific tools, file paths, and commands. The default mode requires user confirmation for potentially destructive operations.
Exam context: Know the three permission modes (default, allowlist, denylist) and how they interact. Understand which operations require confirmation by default and how to configure auto-approval for trusted operations.
See also: 3.4 Permissions & Security
Slash Commands
Custom reusable commands defined as markdown files in the .claude/commands/ directory. When a user types / in Claude Code, available slash commands appear as options. Each command file contains a prompt template that can include $ARGUMENTS placeholders for dynamic input.
Exam context: Know where slash command files live (.claude/commands/ for project-level, ~/.claude/commands/ for user-level), the file naming convention, and how $ARGUMENTS substitution works.
See also: 3.5 Slash Commands & MCP
CI/CD Integration
Running Claude Code in non-interactive mode within continuous integration and deployment pipelines. This uses the claude -p flag for single-prompt mode or piped input. CI/CD mode requires the ANTHROPIC_API_KEY environment variable and typically runs with --allowedTools to restrict available operations.
Exam context: The exam tests how to configure Claude Code for headless environments. Know the required flags (-p, --output-format json), environment variables, and how to restrict tool access in automated pipelines.
See also: 3.6 CI/CD Integration
Configuration Scope
The hierarchy of settings that controls Claude Code's behaviour. Settings can be defined at the project level (.claude/settings.json), user level (~/.claude/settings.json), or enterprise level. More specific scopes override broader ones, with enterprise settings taking the highest priority.
Exam context: Understand the three-level hierarchy and how settings merge. The exam may present scenarios where project and user settings conflict — know which one wins.
See also: 3.1 Configuration & Settings
Allowlist/Denylist
Permission configuration patterns for controlling tool access. An allowlist specifies exactly which tools are permitted (everything else is denied). A denylist specifies which tools are blocked (everything else is permitted). These are configured in settings.json under the permissions key.
Exam context: Know when to use an allowlist versus a denylist. Allowlists are more secure (deny by default), while denylists are more permissive. The exam favours allowlists for production and CI/CD environments.
See also: 3.4 Permissions & Security
settings.json
The JSON configuration file that controls Claude Code's behaviour, including permissions, hooks, MCP servers, and model preferences. It can exist at the project level (.claude/settings.json) or user level (~/.claude/settings.json). Project-level settings are typically committed to the repository.
Exam context: Know the key configuration sections (permissions, hooks, mcpServers) and the file's location at different scopes. Understand that project-level settings apply to all team members who clone the repo.
See also: 3.1 Configuration & Settings
.claude Directory
A directory at the project root that stores Claude Code's project-level configuration. It contains settings.json (committed to the repo for shared team settings), settings.local.json (git-ignored for personal settings), and the commands/ subdirectory for slash commands.
Exam context: Know what goes in .claude/ versus what stays in the project root. Understand which files are committed (settings.json, commands/) and which are local-only (settings.local.json).
See also: 3.1 Configuration & Settings
Subagents
Separate Claude Code instances spawned by the main agent using the Task tool to handle specific, scoped pieces of work. Each subagent runs in its own context with its own tool access, preventing context pollution in the main conversation. The main agent coordinates subagents and aggregates their results.
Exam context: Know when to use subagents versus handling everything in the main conversation. Subagents are useful for parallel tasks, large codebases, or when you want to isolate a task's context. Understand that subagents do not share memory with the parent.
See also: 3.5 Slash Commands & MCP