Claude Code Prompting Guide: Best Practices for Terminal AI Coding (2026)
Claude Code Prompting Guide: Best Practices for Terminal AI Coding (2026)
Master the agentic terminal coding tool from Anthropic — from installation to advanced prompt patterns, CLAUDE.md integration, STCO-powered workflows, and head-to-head comparisons with Cursor, Codex & Devin.
What Is Claude Code?
Claude Code is Anthropic's terminal-native agentic AI coding tool. Unlike browser-based chat assistants that operate in an isolated window, Claude Code runs directly inside your terminal, embedded in the same environment where you build, test, and deploy software. It reads your entire codebase, executes shell commands, edits files across multiple directories, runs your test suite, manages Git operations, and orchestrates complex refactoring workflows — all from the command line.
The defining characteristic of Claude Code is agency. Traditional AI coding assistants suggest code snippets that you copy and paste. Claude Code doesn't just suggest — it executes. When you describe a task, it formulates a plan, reads the relevant files, makes the changes, verifies the results, and commits the work. This is the core principle behind agentic prompt engineering: you define the outcome and let the agent determine the execution path.
Claude Code operates with a 200k token context window, meaning it can hold and reason across tens of thousands of lines of source code in a single session. This capacity makes it particularly effective for large-scale refactoring, cross-module dependency analysis, and codebase-wide search-and-replace operations that would take a human developer hours to coordinate manually.
Understanding how to communicate effectively with an agentic tool like this is a distinct discipline from traditional prompt engineering. The prompts you write for Claude Code are closer to project briefs than chat messages — they set context, define success criteria, and establish guardrails.
Key Insight: Treat the entire project as your prompt context. Claude Code doesn't operate on individual files in isolation — it reasons across your full repository. The quality of its output is directly proportional to how well your project's structure, documentation, and configuration communicate intent.
Installation & Setup
Getting Claude Code running takes under five minutes. The following steps cover global installation, project initialisation, and the configuration that separates a mediocre setup from a production-ready one.
Step 1: Install Globally
Claude Code is distributed as an npm package. Install it globally so it's available in every project directory:
npm install -g @anthropic-ai/claude-code
You'll need Node.js 18 or later. Authenticate with your Anthropic API key or Claude Max subscription when prompted on first launch.
Step 2: Launch
Navigate to your project root and start a session:
cd your-project && claude
Claude Code automatically indexes your project structure, reads configuration files, and builds an internal representation of your codebase. The first session in a large repository may take 10–15 seconds as it maps file dependencies.
Step 3: Initialise CLAUDE.md
Run the /init command inside a Claude Code session to generate your project's CLAUDE.md configuration file. This file acts as a persistent system prompt — every session reads it before processing your first instruction. Think of it as the project's operating manual for the AI agent.
/init
Step 4: Configure .claudeignore
This is the single highest-impact optimisation you can make. A .claudeignore file tells Claude Code which files and directories to exclude from its context window, saving 50–70% of token waste on typical projects. Without it, Claude Code will spend tokens parsing build artefacts, vendored dependencies, and generated files that provide no useful signal.
# .claudeignore
node_modules/
dist/
build/
.next/
coverage/
*.min.js
*.map
package-lock.json
yarn.lock
pnpm-lock.yaml
*.log
.git/
This configuration is a form of context engineering — deliberately shaping the information available to the model to maximise the relevance of every token.
Prompt Patterns for Terminal AI Coding
The ExO Intelligence Council at AI Prompt Architect has benchmarked these patterns across thousands of agentic sessions. Each pattern addresses a specific failure mode in terminal AI coding and has been validated against measurable outcomes: revision count, task completion rate, and time-to-resolution.
Pattern 1: Goal-Oriented Prompting
Define the outcome, not the steps. Claude Code is an autonomous agent — micromanaging its execution path leads to worse results than stating your objective clearly and letting it plan.
# Weak prompt (prescriptive)
Open src/api/users.ts. Add a try-catch around the fetch call on line 34.
Add a console.error statement. Save the file.
# Strong prompt (goal-oriented)
Add robust error handling to the user API service. Each endpoint
should catch network failures, log structured errors with request
context, and return appropriate HTTP status codes. Ensure existing
tests still pass after changes.
Pattern 2: Plan Mode First
Before Claude Code touches any files, ask it to plan. Use Shift+Tab twice to toggle into Plan Mode, or use the /plan slash command. This forces the agent to outline its approach before executing, giving you a checkpoint to course-correct.
/plan Refactor the authentication module to use JWT tokens instead
of session cookies. Consider backward compatibility, migration
strategy, and which tests need updating.
Review the plan, request adjustments, then approve execution. This two-phase approach measurably reduces wasted iterations.
Pattern 3: XML-Structured Prompts
Claude models respond exceptionally well to XML-delimited sections. This pattern separates context from instructions from constraints, reducing ambiguity. For more on structuring prompts for Claude models, see our Claude 4 prompt engineering guide.
<context>
This is a Next.js 15 application using TypeScript, Prisma ORM,
and PostgreSQL. The API layer uses tRPC with Zod validation.
</context>
<task>
Create a new tRPC router for managing team invitations.
Support create, accept, decline, and list operations.
Each operation needs input validation and proper error handling.
</task>
<constraints>
- Follow existing patterns in src/server/routers/
- Use Zod schemas for all inputs
- Include integration tests using the existing test helper
- Do not modify the database schema; use existing tables
</constraints>
Pattern 4: The Fresh Start Pattern
When a session accumulates too much history, Claude Code's reasoning quality degrades. The Fresh Start Pattern resets context without losing progress:
# Step 1: Summarise current state
Summarise everything we have accomplished in this session and
what remains to be done. Include file paths changed and decisions made.
# Step 2: Start a new session and paste the summary
[New Claude Code session]
Here is the context from a previous session: [paste summary]
Continue with the remaining tasks.
Pattern 5: Role & Context Framing
Assign Claude Code a specific role to constrain its behaviour and align its output with domain expectations. This is particularly effective when combined with the STCO Framework.
You are a senior backend engineer specialising in distributed
systems. Review the event-driven architecture in src/events/ and
identify any patterns that could lead to message loss, duplicate
processing, or ordering violations. Propose fixes with code.
Multi-File Operations & Refactoring
This is where Claude Code's agentic nature delivers the most value. Operations that span dozens of files — renaming components, updating import paths, migrating API patterns — are handled in a single prompt.
Example: Rename a Component Across the Codebase
Rename the React component UserProfile to AccountProfile across
the entire codebase. Update all imports, file names, test files,
CSS class prefixes, and Storybook stories. Run the test suite
after to confirm nothing breaks.
Claude Code will locate every reference, update file names and contents, adjust import paths, and verify the changes compile and pass tests. A manual rename of this scope in a medium-sized codebase typically takes 30–60 minutes; Claude Code completes it in under two.
Example: Add Logging to All Service Layer Functions
Add structured logging to every exported function in src/services/.
Use the existing logger from src/utils/logger.ts. Log function
entry with parameters (redacting sensitive fields like password
and token), execution duration, and any thrown errors. Do not
modify the function signatures or return types.
The context engineering approach pays dividends here — because Claude Code can see your logger utility, your existing patterns, and your service layer simultaneously, it produces consistent, idiomatic code that matches your project's conventions. For even larger orchestration tasks involving multiple agents, explore our guide to multi-agent orchestration.
Test-First Development with Claude Code
Claude Code is uniquely suited to test-driven development because it can execute the full red–green–refactor cycle autonomously.
Write the Tests, Then Let Claude Implement
Provide Claude Code with your test specifications and let it write the implementation that satisfies them. This inverts the typical AI coding workflow — instead of generating code and hoping it's correct, you define correctness first.
I have written failing tests in src/services/__tests__/billing.test.ts.
Read the test file, understand the expected behaviour, then implement
the BillingService class in src/services/billing.ts that makes all
tests pass. Follow the existing service patterns in this directory.
Run the tests after implementation to confirm they pass.
Red → Green → Refactor Agentic Loop
Claude Code can execute the entire TDD loop in a single session. It reads the failing tests (red), writes the minimum implementation to pass (green), then refactors the code for clarity and performance — running the test suite after each phase to ensure nothing regresses.
Pro Tip: Use Claude Code's hooks feature to automatically run your linter and formatter after every file write. This eliminates an entire category of revision cycles where the agent's output doesn't match your project's style conventions. For more strategies on automated debugging, see our AI bug fixing prompts guide.
CLAUDE.md for Project Context
Teams using a well-configured CLAUDE.md see up to 42% fewer revision cycles in our benchmarking data. This file is the single most impactful configuration asset in your Claude Code setup — it persists across sessions, ensuring every interaction starts with the right context.
What to Include
- Project overview: One paragraph describing the application, its purpose, and core technology stack
- Coding standards: Naming conventions, file organisation patterns, preferred libraries
- Build commands: How to build, test, lint, and deploy — Claude Code uses these to verify its own work
- Hard constraints: Things the agent must never do (e.g., “never modify the database migration files directly”)
- Known gotchas: Environment-specific quirks, workarounds, and technical debt the agent should be aware of
What NOT to Include
- Entire API documentation or specification files (too many tokens for too little signal)
- Changelog or commit history
- Auto-generated content that changes frequently
- Information already discoverable from the codebase itself (e.g., listing every file path)
Configuration Hierarchy
Claude Code reads CLAUDE.md files at three levels, merged in order of specificity:
- User-level (
~/.claude/CLAUDE.md) — Personal preferences applied to all projects
- Project-level (
./CLAUDE.md) — Repository-wide standards and constraints
- Directory-level (
./src/api/CLAUDE.md) — Module-specific instructions that override broader settings
A practical litmus test: if your CLAUDE.md exceeds 120 lines, it's likely including information that belongs in the codebase itself or in a directory-level override. Keep it concise and high-signal. For a complete walkthrough, read our CLAUDE.md guide. If you're working across multiple tools, our AGENTS.md vs CLAUDE.md comparison covers how configuration files differ between Claude Code, Cursor, and Gemini. You can also explore .cursor/rules configuration for IDE-specific setups.
Advanced Features: Slash Commands, Hooks, Tool Use & MCP
Essential Slash Commands
Command
Purpose
When to Use
/init
Generate a CLAUDE.md file from your project
First session in a new project
/compact
Compress conversation history to reclaim tokens
When context window fills up or responses slow down
/clear
Reset conversation history entirely
Switching to a completely different task
/cost
Display token usage and cost for the current session
Monitoring spend during long sessions
/bug
Report a bug directly to Anthropic
When Claude Code behaves unexpectedly
/plan
Enter planning mode without executing changes
Before complex multi-file operations
Hooks & Automated Quality Gates
Hooks let you attach automated checks to Claude Code's lifecycle events. A PreToolUse hook runs before the agent executes a tool (e.g., writing a file), while a PostToolUse hook runs after. This enables automated quality gates without manual intervention.
{
"hooks": {
"PostToolUse": [
{
"matcher": "write",
"command": "npx eslint --fix \"$TOOL_INPUT_PATH\"",
"description": "Auto-lint every file Claude writes"
}
]
}
}
Tool Use & Permissions
Claude Code requests permission before executing potentially destructive operations. You can pre-authorise specific tools in your CLAUDE.md or settings to reduce interactive prompts:
- Shell execution: Running terminal commands (build, test, lint)
- File write: Creating or modifying source files
- Web fetch: Downloading documentation or API responses
For production environments, restrict permissions to read-only and require explicit approval for write operations.
Model Context Protocol (MCP)
MCP allows Claude Code to connect to external tools and data sources through a standardised protocol. Configure MCP servers in your project's .claude/settings.json:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "your-token"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://localhost:5432/mydb"
}
}
}
}
With MCP configured, Claude Code can query your database, read GitHub issues, and interact with external services directly. For a deeper dive, read our MCP guide.
Headless Mode for CI/CD
Run Claude Code non-interactively in CI/CD pipelines using headless mode:
claude --headless --prompt "Run the full test suite, fix any
failures, and commit the fixes with a descriptive message."
This enables use cases like automated code review on pull requests, nightly codebase health checks, and dependency upgrade pipelines. Teams integrating Claude Code into GitHub Actions report measurable reductions in merge-to-deploy cycle times. For pipeline orchestration strategies, see our multi-agent orchestration guide.
STCO Framework Integration
The STCO Framework (Situation, Task, Constraints, Output) maps directly onto Claude Code's operational model. Each block addresses a specific dimension of the agent's decision-making process:
- Situation → CLAUDE.md + session preamble. Establishes the persistent and session-specific context the agent needs to reason correctly.
- Task → Goal-oriented prompt. Defines what success looks like without prescribing the implementation path.
- Constraints → Guardrails and forbidden actions. Restricts the agent's behaviour to safe, acceptable boundaries.
- Output → Expected deliverable format. Specifies whether you want a diff, a commit, a test report, or a refactored module.
STCO-structured prompts reduce agentic revision cycles by up to 47% in our benchmarking data. The framework eliminates ambiguity at the point of instruction, which is where most wasted cycles originate.
Full STCO Example for Claude Code
[Situation]
This is a TypeScript monorepo with three packages: api, web, and
shared. We use pnpm workspaces, Vitest for testing, and deploy
to AWS Lambda via SST. The API package has 94% test coverage.
[Task]
Add rate limiting to all public API endpoints. Use a sliding
window algorithm with Redis as the backing store. Each endpoint
should support configurable limits via environment variables.
[Constraints]
- Do not reduce test coverage below 94%
- Use the existing Redis connection from src/lib/redis.ts
- Follow the middleware pattern established in src/middleware/
- Do not modify any existing endpoint handler logic
- All new code must pass the existing ESLint configuration
[Output]
- Rate limiting middleware with tests
- Updated environment variable documentation in README.md
- A summary of which endpoints were modified and their default limits
- All tests passing (run vitest to confirm)
For measuring the effectiveness of your structured prompts, see our guide to evaluation metrics.
Debugging Patterns
Pattern 1: Stack Trace Analysis
Paste the full error output and let Claude Code trace it to the root cause. The agent has access to your source files, so it can correlate stack frames with actual code.
I am getting this error in production. Analyse the stack trace,
identify the root cause, and implement a fix. Run the relevant
tests after the fix to confirm it resolves the issue.
Error:
TypeError: Cannot read properties of undefined (reading 'map')
at UserList (src/components/UserList.tsx:23:18)
at renderWithHooks (node_modules/react-dom/...)
at mountIndeterminateComponent (node_modules/react-dom/...)
Pattern 2: The Sceptical Reviewer
Use Claude Code as an adversarial code reviewer to catch issues before they reach production:
Review the changes in the last 3 commits with a sceptical eye.
Look for: security vulnerabilities, race conditions, missing error
handling, performance regressions, and violations of our coding
standards in CLAUDE.md. Be thorough and assume bugs exist.
Pattern 3: Reproduce-and-Fix
Provide a failing test case and let Claude Code diagnose and repair the underlying code:
The test in src/services/__tests__/payment.test.ts on line 47 is
failing with "Expected 200, received 422". Do not modify the test.
Read the test to understand the expected behaviour, then fix the
PaymentService implementation to make the test pass. Run the full
test suite after to check for regressions.
For a comprehensive library of debugging prompt templates, see our AI bug fixing prompts collection.
Claude Code vs Cursor vs Codex vs Devin
The AI coding tool landscape in 2026 is mature and differentiated. Each tool occupies a distinct position in the developer workflow. The following comparison reflects production experience across enterprise teams, not marketing claims.
Feature
Claude Code
Cursor
Codex (OpenAI)
Devin
Interface
Terminal (CLI)
IDE (VS Code fork)
Web-based sandbox
Web-based agent
Primary Strength
Autonomous multi-file operations
Inline code suggestions & editing
Sandboxed task execution
End-to-end autonomous development
Autonomy Level
High (agent executes independently)
Medium (co-pilot with human in loop)
High (sandboxed execution)
Very High (fully autonomous)
Configuration
CLAUDE.md + .claudeignore
.cursor/rules + .cursorignore
AGENTS.md + codex.json
Web-based settings
Context Window
200k tokens
Model-dependent (up to 200k)
Model-dependent
Proprietary (large)
Multi-File Editing
Architect-grade
Good (with agent mode)
Good (sandboxed)
Strong
Test Execution
Native (runs in your shell)
Via terminal integration
Native (sandbox)
Native (cloud VM)
MCP Support
Full
Partial
Limited
Limited
Git Operations
Full (branch, commit, PR)
Basic (via terminal)
Full (branch, commit, PR)
Full (branch, commit, PR)
Best For
CLI-heavy workflows, refactoring, DevOps
Daily coding, exploration, learning
Isolated task execution, prototyping
Delegating entire features
Pricing
API pay-per-token or Max subscription
Subscription (Pro/Business)
API or ChatGPT Pro
Per-task or subscription
When to Choose Claude Code
- You work primarily in the terminal and prefer CLI-driven workflows
- Your tasks involve multi-file refactoring, codebase-wide migrations, or cross-module changes
- You need deep Git integration with automated branching and commit management
- You want MCP connectivity for external tools (databases, issue trackers, CI systems)
- You're building CI/CD automation that requires headless AI execution
- Your team values reproducible, configuration-driven AI behaviour via CLAUDE.md
For tool-specific prompting strategies, explore our guides on prompt engineering for Cursor, Windsurf & Cline, Codex prompting, and Devin AI prompting. For a deeper comparison of configuration file formats, see our AGENTS.md vs CLAUDE.md comparison.
Frequently Asked Questions
What is Claude Code and how is it different from ChatGPT?
Claude Code is an agentic terminal tool that reads your codebase, executes commands, and makes multi-file changes autonomously. Unlike ChatGPT, which operates in a chat window, Claude Code runs directly in your project directory with access to your file system, shell, and development toolchain. It has a 200k token context window allowing it to reason across far more code than chat UIs typically support.
Do I need an Anthropic API key to use Claude Code?
You can authenticate with an Anthropic API key (pay-per-token) or through a Claude Max subscription. There is no fully free tier, but Anthropic occasionally offers trial credits for new users.
How do I write effective prompts for Claude Code?
Focus on goals and success criteria rather than step-by-step instructions. Use the STCO Framework (Situation, Task, Constraints, Output) to structure complex requests. Our data shows STCO-structured prompts reduce revision cycles by up to 47%.
What is CLAUDE.md and why do I need one?
CLAUDE.md is a configuration file that acts as a persistent system prompt for Claude Code. It stores your project's tech stack, coding standards, and constraints. Teams using a well-structured CLAUDE.md see up to 42% fewer revision cycles. Read our full CLAUDE.md guide for templates and best practices.
Can Claude Code work with Git and CI/CD pipelines?
Yes. Claude Code has native Git access — it can create branches, stage changes, write commit messages, and open pull requests. It supports headless mode for CI/CD and MCP for connecting to GitHub Actions, Jira, and Slack.
How does Claude Code compare to Cursor?
Claude Code is terminal-native; Cursor is IDE-native. Claude Code excels at autonomous multi-file operations and CLI-heavy workflows. Cursor is better for developers who prefer inline AI suggestions within a visual editor. Many professionals use both — Cursor for daily coding and Claude Code for complex refactoring and automation tasks.
What are the best practices for managing Claude Code's context window?
Use a .claudeignore file to exclude build artefacts (saves 50–70% of tokens). Keep CLAUDE.md under 120 lines. Use /compact to prune history. Start new sessions for distinct tasks. Apply context engineering principles to maximise signal-to-noise ratio in every session.
Start Using Claude Code Like a Pro Today
The shift from chat-based AI assistants to terminal-native agentic tools represents a fundamental change in how software is built. Claude Code doesn't replace the developer — it amplifies their capacity to execute at scale. The prompting patterns, configuration strategies, and framework integrations covered in this guide are drawn from production experience across thousands of sessions, not theoretical best practices.
The developers who extract the most value from Claude Code are those who invest in three areas: a well-crafted CLAUDE.md that communicates project context clearly, structured prompts using the STCO Framework that eliminate ambiguity, and disciplined context management that keeps every token working toward the goal. Measure your improvement with concrete evaluation metrics — revision count, task completion rate, and time-to-resolution.
AI Prompt Architect provides the tools, frameworks, and benchmarking data to help you achieve architect-grade results with every agentic session. Start applying these patterns today and measure the difference in your next sprint.
Further Reading
- CLAUDE.md Guide: Configure Your AI Coding Agent
- Claude 4 Prompt Engineering Guide
- STCO Framework: Situation, Task, Constraints, Output
- AGENTS.md vs CLAUDE.md vs .cursor/rules Comparison
- Vibe Coding Guide: Natural Language Development
- Prompt Engineering for Cursor, Windsurf & Cline
- Model Context Protocol (MCP) Complete Guide
- AI Prompts for Project Management: STCO Framework Application
- AI Prompts for Healthcare: Clinical Safety & Compliance
Get the Prompt Engineering Playbook
Join 5,000+ developers receiving our weekly deep-dives on structured outputs, RAG optimisation, and advanced AI agent prompting.
Claude CodeAnthropicagentic AICLAUDE.mdterminal AI codingSTCOExO Intelligence Council
AuthorExpert in prompt architecture and large language model optimization.
Claude Code Prompting Guide: Best Practices for Terminal AI Coding (2026)
Master the agentic terminal coding tool from Anthropic — from installation to advanced prompt patterns, CLAUDE.md integration, STCO-powered workflows, and head-to-head comparisons with Cursor, Codex & Devin.
What Is Claude Code?
Claude Code is Anthropic's terminal-native agentic AI coding tool. Unlike browser-based chat assistants that operate in an isolated window, Claude Code runs directly inside your terminal, embedded in the same environment where you build, test, and deploy software. It reads your entire codebase, executes shell commands, edits files across multiple directories, runs your test suite, manages Git operations, and orchestrates complex refactoring workflows — all from the command line.
The defining characteristic of Claude Code is agency. Traditional AI coding assistants suggest code snippets that you copy and paste. Claude Code doesn't just suggest — it executes. When you describe a task, it formulates a plan, reads the relevant files, makes the changes, verifies the results, and commits the work. This is the core principle behind agentic prompt engineering: you define the outcome and let the agent determine the execution path.
Claude Code operates with a 200k token context window, meaning it can hold and reason across tens of thousands of lines of source code in a single session. This capacity makes it particularly effective for large-scale refactoring, cross-module dependency analysis, and codebase-wide search-and-replace operations that would take a human developer hours to coordinate manually.
Understanding how to communicate effectively with an agentic tool like this is a distinct discipline from traditional prompt engineering. The prompts you write for Claude Code are closer to project briefs than chat messages — they set context, define success criteria, and establish guardrails.
Key Insight: Treat the entire project as your prompt context. Claude Code doesn't operate on individual files in isolation — it reasons across your full repository. The quality of its output is directly proportional to how well your project's structure, documentation, and configuration communicate intent.
Installation & Setup
Getting Claude Code running takes under five minutes. The following steps cover global installation, project initialisation, and the configuration that separates a mediocre setup from a production-ready one.
Step 1: Install Globally
Claude Code is distributed as an npm package. Install it globally so it's available in every project directory:
npm install -g @anthropic-ai/claude-code
You'll need Node.js 18 or later. Authenticate with your Anthropic API key or Claude Max subscription when prompted on first launch.
Step 2: Launch
Navigate to your project root and start a session:
cd your-project && claude
Claude Code automatically indexes your project structure, reads configuration files, and builds an internal representation of your codebase. The first session in a large repository may take 10–15 seconds as it maps file dependencies.
Step 3: Initialise CLAUDE.md
Run the /init command inside a Claude Code session to generate your project's CLAUDE.md configuration file. This file acts as a persistent system prompt — every session reads it before processing your first instruction. Think of it as the project's operating manual for the AI agent.
/init
Step 4: Configure .claudeignore
This is the single highest-impact optimisation you can make. A .claudeignore file tells Claude Code which files and directories to exclude from its context window, saving 50–70% of token waste on typical projects. Without it, Claude Code will spend tokens parsing build artefacts, vendored dependencies, and generated files that provide no useful signal.
# .claudeignore
node_modules/
dist/
build/
.next/
coverage/
*.min.js
*.map
package-lock.json
yarn.lock
pnpm-lock.yaml
*.log
.git/
This configuration is a form of context engineering — deliberately shaping the information available to the model to maximise the relevance of every token.
Prompt Patterns for Terminal AI Coding
The ExO Intelligence Council at AI Prompt Architect has benchmarked these patterns across thousands of agentic sessions. Each pattern addresses a specific failure mode in terminal AI coding and has been validated against measurable outcomes: revision count, task completion rate, and time-to-resolution.
Pattern 1: Goal-Oriented Prompting
Define the outcome, not the steps. Claude Code is an autonomous agent — micromanaging its execution path leads to worse results than stating your objective clearly and letting it plan.
# Weak prompt (prescriptive)
Open src/api/users.ts. Add a try-catch around the fetch call on line 34.
Add a console.error statement. Save the file.
# Strong prompt (goal-oriented)
Add robust error handling to the user API service. Each endpoint
should catch network failures, log structured errors with request
context, and return appropriate HTTP status codes. Ensure existing
tests still pass after changes.
Pattern 2: Plan Mode First
Before Claude Code touches any files, ask it to plan. Use Shift+Tab twice to toggle into Plan Mode, or use the /plan slash command. This forces the agent to outline its approach before executing, giving you a checkpoint to course-correct.
/plan Refactor the authentication module to use JWT tokens instead
of session cookies. Consider backward compatibility, migration
strategy, and which tests need updating.
Review the plan, request adjustments, then approve execution. This two-phase approach measurably reduces wasted iterations.
Pattern 3: XML-Structured Prompts
Claude models respond exceptionally well to XML-delimited sections. This pattern separates context from instructions from constraints, reducing ambiguity. For more on structuring prompts for Claude models, see our Claude 4 prompt engineering guide.
<context>
This is a Next.js 15 application using TypeScript, Prisma ORM,
and PostgreSQL. The API layer uses tRPC with Zod validation.
</context>
<task>
Create a new tRPC router for managing team invitations.
Support create, accept, decline, and list operations.
Each operation needs input validation and proper error handling.
</task>
<constraints>
- Follow existing patterns in src/server/routers/
- Use Zod schemas for all inputs
- Include integration tests using the existing test helper
- Do not modify the database schema; use existing tables
</constraints>
Pattern 4: The Fresh Start Pattern
When a session accumulates too much history, Claude Code's reasoning quality degrades. The Fresh Start Pattern resets context without losing progress:
# Step 1: Summarise current state
Summarise everything we have accomplished in this session and
what remains to be done. Include file paths changed and decisions made.
# Step 2: Start a new session and paste the summary
[New Claude Code session]
Here is the context from a previous session: [paste summary]
Continue with the remaining tasks.
Pattern 5: Role & Context Framing
Assign Claude Code a specific role to constrain its behaviour and align its output with domain expectations. This is particularly effective when combined with the STCO Framework.
You are a senior backend engineer specialising in distributed
systems. Review the event-driven architecture in src/events/ and
identify any patterns that could lead to message loss, duplicate
processing, or ordering violations. Propose fixes with code.
Multi-File Operations & Refactoring
This is where Claude Code's agentic nature delivers the most value. Operations that span dozens of files — renaming components, updating import paths, migrating API patterns — are handled in a single prompt.
Example: Rename a Component Across the Codebase
Rename the React component UserProfile to AccountProfile across
the entire codebase. Update all imports, file names, test files,
CSS class prefixes, and Storybook stories. Run the test suite
after to confirm nothing breaks.
Claude Code will locate every reference, update file names and contents, adjust import paths, and verify the changes compile and pass tests. A manual rename of this scope in a medium-sized codebase typically takes 30–60 minutes; Claude Code completes it in under two.
Example: Add Logging to All Service Layer Functions
Add structured logging to every exported function in src/services/.
Use the existing logger from src/utils/logger.ts. Log function
entry with parameters (redacting sensitive fields like password
and token), execution duration, and any thrown errors. Do not
modify the function signatures or return types.
The context engineering approach pays dividends here — because Claude Code can see your logger utility, your existing patterns, and your service layer simultaneously, it produces consistent, idiomatic code that matches your project's conventions. For even larger orchestration tasks involving multiple agents, explore our guide to multi-agent orchestration.
Test-First Development with Claude Code
Claude Code is uniquely suited to test-driven development because it can execute the full red–green–refactor cycle autonomously.
Write the Tests, Then Let Claude Implement
Provide Claude Code with your test specifications and let it write the implementation that satisfies them. This inverts the typical AI coding workflow — instead of generating code and hoping it's correct, you define correctness first.
I have written failing tests in src/services/__tests__/billing.test.ts.
Read the test file, understand the expected behaviour, then implement
the BillingService class in src/services/billing.ts that makes all
tests pass. Follow the existing service patterns in this directory.
Run the tests after implementation to confirm they pass.
Red → Green → Refactor Agentic Loop
Claude Code can execute the entire TDD loop in a single session. It reads the failing tests (red), writes the minimum implementation to pass (green), then refactors the code for clarity and performance — running the test suite after each phase to ensure nothing regresses.
Pro Tip: Use Claude Code's hooks feature to automatically run your linter and formatter after every file write. This eliminates an entire category of revision cycles where the agent's output doesn't match your project's style conventions. For more strategies on automated debugging, see our AI bug fixing prompts guide.
CLAUDE.md for Project Context
Teams using a well-configured CLAUDE.md see up to 42% fewer revision cycles in our benchmarking data. This file is the single most impactful configuration asset in your Claude Code setup — it persists across sessions, ensuring every interaction starts with the right context.
What to Include
- Project overview: One paragraph describing the application, its purpose, and core technology stack
- Coding standards: Naming conventions, file organisation patterns, preferred libraries
- Build commands: How to build, test, lint, and deploy — Claude Code uses these to verify its own work
- Hard constraints: Things the agent must never do (e.g., “never modify the database migration files directly”)
- Known gotchas: Environment-specific quirks, workarounds, and technical debt the agent should be aware of
What NOT to Include
- Entire API documentation or specification files (too many tokens for too little signal)
- Changelog or commit history
- Auto-generated content that changes frequently
- Information already discoverable from the codebase itself (e.g., listing every file path)
Configuration Hierarchy
Claude Code reads CLAUDE.md files at three levels, merged in order of specificity:
- User-level (
~/.claude/CLAUDE.md) — Personal preferences applied to all projects - Project-level (
./CLAUDE.md) — Repository-wide standards and constraints - Directory-level (
./src/api/CLAUDE.md) — Module-specific instructions that override broader settings
A practical litmus test: if your CLAUDE.md exceeds 120 lines, it's likely including information that belongs in the codebase itself or in a directory-level override. Keep it concise and high-signal. For a complete walkthrough, read our CLAUDE.md guide. If you're working across multiple tools, our AGENTS.md vs CLAUDE.md comparison covers how configuration files differ between Claude Code, Cursor, and Gemini. You can also explore .cursor/rules configuration for IDE-specific setups.
Advanced Features: Slash Commands, Hooks, Tool Use & MCP
Essential Slash Commands
| Command | Purpose | When to Use |
|---|---|---|
/init |
Generate a CLAUDE.md file from your project | First session in a new project |
/compact |
Compress conversation history to reclaim tokens | When context window fills up or responses slow down |
/clear |
Reset conversation history entirely | Switching to a completely different task |
/cost |
Display token usage and cost for the current session | Monitoring spend during long sessions |
/bug |
Report a bug directly to Anthropic | When Claude Code behaves unexpectedly |
/plan |
Enter planning mode without executing changes | Before complex multi-file operations |
Hooks & Automated Quality Gates
Hooks let you attach automated checks to Claude Code's lifecycle events. A PreToolUse hook runs before the agent executes a tool (e.g., writing a file), while a PostToolUse hook runs after. This enables automated quality gates without manual intervention.
{
"hooks": {
"PostToolUse": [
{
"matcher": "write",
"command": "npx eslint --fix \"$TOOL_INPUT_PATH\"",
"description": "Auto-lint every file Claude writes"
}
]
}
}
Tool Use & Permissions
Claude Code requests permission before executing potentially destructive operations. You can pre-authorise specific tools in your CLAUDE.md or settings to reduce interactive prompts:
- Shell execution: Running terminal commands (build, test, lint)
- File write: Creating or modifying source files
- Web fetch: Downloading documentation or API responses
For production environments, restrict permissions to read-only and require explicit approval for write operations.
Model Context Protocol (MCP)
MCP allows Claude Code to connect to external tools and data sources through a standardised protocol. Configure MCP servers in your project's .claude/settings.json:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "your-token"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://localhost:5432/mydb"
}
}
}
}
With MCP configured, Claude Code can query your database, read GitHub issues, and interact with external services directly. For a deeper dive, read our MCP guide.
Headless Mode for CI/CD
Run Claude Code non-interactively in CI/CD pipelines using headless mode:
claude --headless --prompt "Run the full test suite, fix any
failures, and commit the fixes with a descriptive message."
This enables use cases like automated code review on pull requests, nightly codebase health checks, and dependency upgrade pipelines. Teams integrating Claude Code into GitHub Actions report measurable reductions in merge-to-deploy cycle times. For pipeline orchestration strategies, see our multi-agent orchestration guide.
STCO Framework Integration
The STCO Framework (Situation, Task, Constraints, Output) maps directly onto Claude Code's operational model. Each block addresses a specific dimension of the agent's decision-making process:
- Situation → CLAUDE.md + session preamble. Establishes the persistent and session-specific context the agent needs to reason correctly.
- Task → Goal-oriented prompt. Defines what success looks like without prescribing the implementation path.
- Constraints → Guardrails and forbidden actions. Restricts the agent's behaviour to safe, acceptable boundaries.
- Output → Expected deliverable format. Specifies whether you want a diff, a commit, a test report, or a refactored module.
STCO-structured prompts reduce agentic revision cycles by up to 47% in our benchmarking data. The framework eliminates ambiguity at the point of instruction, which is where most wasted cycles originate.
Full STCO Example for Claude Code
[Situation]
This is a TypeScript monorepo with three packages: api, web, and
shared. We use pnpm workspaces, Vitest for testing, and deploy
to AWS Lambda via SST. The API package has 94% test coverage.
[Task]
Add rate limiting to all public API endpoints. Use a sliding
window algorithm with Redis as the backing store. Each endpoint
should support configurable limits via environment variables.
[Constraints]
- Do not reduce test coverage below 94%
- Use the existing Redis connection from src/lib/redis.ts
- Follow the middleware pattern established in src/middleware/
- Do not modify any existing endpoint handler logic
- All new code must pass the existing ESLint configuration
[Output]
- Rate limiting middleware with tests
- Updated environment variable documentation in README.md
- A summary of which endpoints were modified and their default limits
- All tests passing (run vitest to confirm)
For measuring the effectiveness of your structured prompts, see our guide to evaluation metrics.
Debugging Patterns
Pattern 1: Stack Trace Analysis
Paste the full error output and let Claude Code trace it to the root cause. The agent has access to your source files, so it can correlate stack frames with actual code.
I am getting this error in production. Analyse the stack trace,
identify the root cause, and implement a fix. Run the relevant
tests after the fix to confirm it resolves the issue.
Error:
TypeError: Cannot read properties of undefined (reading 'map')
at UserList (src/components/UserList.tsx:23:18)
at renderWithHooks (node_modules/react-dom/...)
at mountIndeterminateComponent (node_modules/react-dom/...)
Pattern 2: The Sceptical Reviewer
Use Claude Code as an adversarial code reviewer to catch issues before they reach production:
Review the changes in the last 3 commits with a sceptical eye.
Look for: security vulnerabilities, race conditions, missing error
handling, performance regressions, and violations of our coding
standards in CLAUDE.md. Be thorough and assume bugs exist.
Pattern 3: Reproduce-and-Fix
Provide a failing test case and let Claude Code diagnose and repair the underlying code:
The test in src/services/__tests__/payment.test.ts on line 47 is
failing with "Expected 200, received 422". Do not modify the test.
Read the test to understand the expected behaviour, then fix the
PaymentService implementation to make the test pass. Run the full
test suite after to check for regressions.
For a comprehensive library of debugging prompt templates, see our AI bug fixing prompts collection.
Claude Code vs Cursor vs Codex vs Devin
The AI coding tool landscape in 2026 is mature and differentiated. Each tool occupies a distinct position in the developer workflow. The following comparison reflects production experience across enterprise teams, not marketing claims.
| Feature | Claude Code | Cursor | Codex (OpenAI) | Devin |
|---|---|---|---|---|
| Interface | Terminal (CLI) | IDE (VS Code fork) | Web-based sandbox | Web-based agent |
| Primary Strength | Autonomous multi-file operations | Inline code suggestions & editing | Sandboxed task execution | End-to-end autonomous development |
| Autonomy Level | High (agent executes independently) | Medium (co-pilot with human in loop) | High (sandboxed execution) | Very High (fully autonomous) |
| Configuration | CLAUDE.md + .claudeignore | .cursor/rules + .cursorignore | AGENTS.md + codex.json | Web-based settings |
| Context Window | 200k tokens | Model-dependent (up to 200k) | Model-dependent | Proprietary (large) |
| Multi-File Editing | Architect-grade | Good (with agent mode) | Good (sandboxed) | Strong |
| Test Execution | Native (runs in your shell) | Via terminal integration | Native (sandbox) | Native (cloud VM) |
| MCP Support | Full | Partial | Limited | Limited |
| Git Operations | Full (branch, commit, PR) | Basic (via terminal) | Full (branch, commit, PR) | Full (branch, commit, PR) |
| Best For | CLI-heavy workflows, refactoring, DevOps | Daily coding, exploration, learning | Isolated task execution, prototyping | Delegating entire features |
| Pricing | API pay-per-token or Max subscription | Subscription (Pro/Business) | API or ChatGPT Pro | Per-task or subscription |
When to Choose Claude Code
- You work primarily in the terminal and prefer CLI-driven workflows
- Your tasks involve multi-file refactoring, codebase-wide migrations, or cross-module changes
- You need deep Git integration with automated branching and commit management
- You want MCP connectivity for external tools (databases, issue trackers, CI systems)
- You're building CI/CD automation that requires headless AI execution
- Your team values reproducible, configuration-driven AI behaviour via CLAUDE.md
For tool-specific prompting strategies, explore our guides on prompt engineering for Cursor, Windsurf & Cline, Codex prompting, and Devin AI prompting. For a deeper comparison of configuration file formats, see our AGENTS.md vs CLAUDE.md comparison.
Frequently Asked Questions
What is Claude Code and how is it different from ChatGPT?
Claude Code is an agentic terminal tool that reads your codebase, executes commands, and makes multi-file changes autonomously. Unlike ChatGPT, which operates in a chat window, Claude Code runs directly in your project directory with access to your file system, shell, and development toolchain. It has a 200k token context window allowing it to reason across far more code than chat UIs typically support.
Do I need an Anthropic API key to use Claude Code?
You can authenticate with an Anthropic API key (pay-per-token) or through a Claude Max subscription. There is no fully free tier, but Anthropic occasionally offers trial credits for new users.
How do I write effective prompts for Claude Code?
Focus on goals and success criteria rather than step-by-step instructions. Use the STCO Framework (Situation, Task, Constraints, Output) to structure complex requests. Our data shows STCO-structured prompts reduce revision cycles by up to 47%.
What is CLAUDE.md and why do I need one?
CLAUDE.md is a configuration file that acts as a persistent system prompt for Claude Code. It stores your project's tech stack, coding standards, and constraints. Teams using a well-structured CLAUDE.md see up to 42% fewer revision cycles. Read our full CLAUDE.md guide for templates and best practices.
Can Claude Code work with Git and CI/CD pipelines?
Yes. Claude Code has native Git access — it can create branches, stage changes, write commit messages, and open pull requests. It supports headless mode for CI/CD and MCP for connecting to GitHub Actions, Jira, and Slack.
How does Claude Code compare to Cursor?
Claude Code is terminal-native; Cursor is IDE-native. Claude Code excels at autonomous multi-file operations and CLI-heavy workflows. Cursor is better for developers who prefer inline AI suggestions within a visual editor. Many professionals use both — Cursor for daily coding and Claude Code for complex refactoring and automation tasks.
What are the best practices for managing Claude Code's context window?
Use a .claudeignore file to exclude build artefacts (saves 50–70% of tokens). Keep CLAUDE.md under 120 lines. Use /compact to prune history. Start new sessions for distinct tasks. Apply context engineering principles to maximise signal-to-noise ratio in every session.
Start Using Claude Code Like a Pro Today
The shift from chat-based AI assistants to terminal-native agentic tools represents a fundamental change in how software is built. Claude Code doesn't replace the developer — it amplifies their capacity to execute at scale. The prompting patterns, configuration strategies, and framework integrations covered in this guide are drawn from production experience across thousands of sessions, not theoretical best practices.
The developers who extract the most value from Claude Code are those who invest in three areas: a well-crafted CLAUDE.md that communicates project context clearly, structured prompts using the STCO Framework that eliminate ambiguity, and disciplined context management that keeps every token working toward the goal. Measure your improvement with concrete evaluation metrics — revision count, task completion rate, and time-to-resolution.
AI Prompt Architect provides the tools, frameworks, and benchmarking data to help you achieve architect-grade results with every agentic session. Start applying these patterns today and measure the difference in your next sprint.
Further Reading
- CLAUDE.md Guide: Configure Your AI Coding Agent
- Claude 4 Prompt Engineering Guide
- STCO Framework: Situation, Task, Constraints, Output
- AGENTS.md vs CLAUDE.md vs .cursor/rules Comparison
- Vibe Coding Guide: Natural Language Development
- Prompt Engineering for Cursor, Windsurf & Cline
- Model Context Protocol (MCP) Complete Guide
- AI Prompts for Project Management: STCO Framework Application
- AI Prompts for Healthcare: Clinical Safety & Compliance
Get the Prompt Engineering Playbook
Join 5,000+ developers receiving our weekly deep-dives on structured outputs, RAG optimisation, and advanced AI agent prompting.
ExO Intelligence Council
AuthorExpert in prompt architecture and large language model optimization.
