SpyBara
Go Premium

common-workflows.md 2025-11-26 00:04 UTC to 2025-11-27 06:02 UTC

5 added, 0 removed.

2025
Thu 27 06:02 Wed 26 00:04 Tue 25 03:22 Mon 24 21:01 Fri 21 00:04 Thu 20 18:02 Wed 19 03:21 Tue 18 18:02 Mon 17 03:24 Sun 16 00:04 Fri 14 21:26 Thu 6 18:02 Tue 4 18:02 Mon 3 21:01 Sun 2 18:01 Sat 1 21:01

Common workflows

Learn about common workflows with Claude Code.

Each task in this document includes clear instructions, example commands, and best practices to help you get the most from Claude Code.

Understand new codebases

Get a quick codebase overview

Suppose you've just joined a new project and need to understand its structure quickly.

1

Navigate to the project root directory

cd /path/to/project 
2

Start Claude Code

claude 
3

Ask for a high-level overview

> give me an overview of this codebase 
4

Dive deeper into specific components

> explain the main architecture patterns used here 
> what are the key data models?
> how is authentication handled?

Find relevant code

Suppose you need to locate code related to a specific feature or functionality.

1

Ask Claude to find relevant files

> find the files that handle user authentication 
2

Get context on how components interact

> how do these authentication files work together? 
3

Understand the execution flow

> trace the login process from front-end to database 

Fix bugs efficiently

Suppose you've encountered an error message and need to find and fix its source.

1

Share the error with Claude

> I'm seeing an error when I run npm test 
2

Ask for fix recommendations

> suggest a few ways to fix the @ts-ignore in user.ts 
3

Apply the fix

> update user.ts to add the null check you suggested 

Refactor code

Suppose you need to update old code to use modern patterns and practices.

1

Identify legacy code for refactoring

> find deprecated API usage in our codebase 
2

Get refactoring recommendations

> suggest how to refactor utils.js to use modern JavaScript features 
3

Apply the changes safely

> refactor utils.js to use ES2024 features while maintaining the same behavior 
4

Verify the refactoring

> run tests for the refactored code 

Use specialized subagents

Suppose you want to use specialized AI subagents to handle specific tasks more effectively.

1

View available subagents

> /agents

This shows all available subagents and lets you create new ones.

2

Use subagents automatically

Claude Code will automatically delegate appropriate tasks to specialized subagents:

> review my recent code changes for security issues
> run all tests and fix any failures
3

Explicitly request specific subagents

> use the code-reviewer subagent to check the auth module
> have the debugger subagent investigate why users can't log in
4

Create custom subagents for your workflow

> /agents

Then select "Create New subagent" and follow the prompts to define:

  • Subagent type (e.g., api-designer, performance-optimizer)
  • When to use it
  • Which tools it can access
  • Its specialized system prompt

Use Plan Mode for safe code analysis

Plan Mode instructs Claude to create a plan by analyzing the codebase with read-only operations, perfect for exploring codebases, planning complex changes, or reviewing code safely.

When to use Plan Mode

  • Multi-step implementation: When your feature requires making edits to many files
  • Code exploration: When you want to research the codebase thoroughly before changing anything
  • Interactive development: When you want to iterate on the direction with Claude

How to use Plan Mode

Turn on Plan Mode during a session

You can switch into Plan Mode during a session using Shift+Tab to cycle through permission modes.

If you are in Normal Mode, Shift+Tab will first switch into Auto-Accept Mode, indicated by ⏵⏵ accept edits on at the bottom of the terminal. A subsequent Shift+Tab will switch into Plan Mode, indicated by ⏸ plan mode on.

Start a new session in Plan Mode

To start a new session in Plan Mode, use the --permission-mode plan flag:

claude --permission-mode plan

Run "headless" queries in Plan Mode

You can also run a query in Plan Mode directly with -p (i.e., in "headless mode"):

claude --permission-mode plan -p "Analyze the authentication system and suggest improvements"

Example: Planning a complex refactor

claude --permission-mode plan
> I need to refactor our authentication system to use OAuth2. Create a detailed migration plan.

Claude will analyze the current implementation and create a comprehensive plan. Refine with follow-ups:

> What about backward compatibility?
> How should we handle database migration?

Configure Plan Mode as default

// .claude/settings.json
{
  "permissions": {
    "defaultMode": "plan"
  }
}

See settings documentation for more configuration options.


Work with tests

Suppose you need to add tests for uncovered code.

1

Identify untested code

> find functions in NotificationsService.swift that are not covered by tests 
2

Generate test scaffolding

> add tests for the notification service 
3

Add meaningful test cases

> add test cases for edge conditions in the notification service 
4

Run and verify tests

> run the new tests and fix any failures 

Create pull requests

Suppose you need to create a well-documented pull request for your changes.

1

Summarize your changes

> summarize the changes I've made to the authentication module 
2

Generate a PR with Claude

> create a pr 
3

Review and refine

> enhance the PR description with more context about the security improvements 
4

Add testing details

> add information about how these changes were tested 

Handle documentation

Suppose you need to add or update documentation for your code.

1

Identify undocumented code

> find functions without proper JSDoc comments in the auth module 
2

Generate documentation

> add JSDoc comments to the undocumented functions in auth.js 
3

Review and enhance

> improve the generated documentation with more context and examples 
4

Verify documentation

> check if the documentation follows our project standards 

Work with images

Suppose you need to work with images in your codebase, and you want Claude's help analyzing image content.

1

Add an image to the conversation

You can use any of these methods:

  1. Drag and drop an image into the Claude Code window
  2. Copy an image and paste it into the CLI with ctrl+v (Do not use cmd+v)
  3. Provide an image path to Claude. E.g., "Analyze this image: /path/to/your/image.png"
2

Ask Claude to analyze the image

> What does this image show?
> Describe the UI elements in this screenshot
> Are there any problematic elements in this diagram?
3

Use images for context

> Here's a screenshot of the error. What's causing it?
> This is our current database schema. How should we modify it for the new feature?
4

Get code suggestions from visual content

> Generate CSS to match this design mockup
> What HTML structure would recreate this component?

Reference files and directories

Use @ to quickly include files or directories without waiting for Claude to read them.

1

Reference a single file

> Explain the logic in @src/utils/auth.js

This includes the full content of the file in the conversation.

2

Reference a directory

> What's the structure of @src/components?

This provides a directory listing with file information.

3

Reference MCP resources

> Show me the data from @github:repos/owner/repo/issues

This fetches data from connected MCP servers using the format @server:resource. See MCP resources for details.


Use extended thinking

Suppose you're working on complex architectural decisions, challenging bugs, or planning multi-step implementations that require deep reasoning.

1

Provide context and ask Claude to think

> I need to implement a new authentication system using OAuth2 for our API. Think deeply about the best approach for implementing this in our codebase.

Claude will gather relevant information from your codebase and use extended thinking, which will be visible in the interface.

2

Refine the thinking with follow-up prompts

> think about potential security vulnerabilities in this approach 
> think hard about edge cases we should handle 

Resume previous conversations

Suppose you've been working on a task with Claude Code and need to continue where you left off in a later session.

Claude Code provides two options for resuming previous conversations:

  • --continue to automatically continue the most recent conversation
  • --resume to display a conversation picker
1

Continue the most recent conversation

claude --continue

This immediately resumes your most recent conversation without any prompts.

2

Continue in non-interactive mode

claude --continue --print "Continue with my task"

Use --print with --continue to resume the most recent conversation in non-interactive mode, perfect for scripts or automation.

3

Show conversation picker

claude --resume

This displays an interactive conversation selector with a clean list view showing:

  • Session summary (or initial prompt)
  • Metadata: time elapsed, message count, and git branch

Use arrow keys to navigate and press Enter to select a conversation. Press Esc to exit.


Run parallel Claude Code sessions with Git worktrees

Suppose you need to work on multiple tasks simultaneously with complete code isolation between Claude Code instances.

1

Understand Git worktrees

Git worktrees allow you to check out multiple branches from the same repository into separate directories. Each worktree has its own working directory with isolated files, while sharing the same Git history. Learn more in the official Git worktree documentation.

2

Create a new worktree

# Create a new worktree with a new branch 
git worktree add ../project-feature-a -b feature-a

# Or create a worktree with an existing branch
git worktree add ../project-bugfix bugfix-123

This creates a new directory with a separate working copy of your repository.

3

Run Claude Code in each worktree

# Navigate to your worktree 
cd ../project-feature-a

# Run Claude Code in this isolated environment
claude
4

Run Claude in another worktree

cd ../project-bugfix
claude
5

Manage your worktrees

# List all worktrees
git worktree list

# Remove a worktree when done
git worktree remove ../project-feature-a

Use Claude as a unix-style utility

Add Claude to your verification process

Suppose you want to use Claude Code as a linter or code reviewer.

Add Claude to your build script:

// package.json
{
    ...
    "scripts": {
        ...
        "lint:claude": "claude -p 'you are a linter. please look at the changes vs. main and report any issues related to typos. report the filename and line number on one line, and a description of the issue on the second line. do not return any other text.'"
    }
}

Pipe in, pipe out

Suppose you want to pipe data into Claude, and get back data in a structured format.

Pipe data through Claude:

cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

Control output format

Suppose you need Claude's output in a specific format, especially when integrating Claude Code into scripts or other tools.

1

Use text format (default)

cat data.txt | claude -p 'summarize this data' --output-format text > summary.txt

This outputs just Claude's plain text response (default behavior).

2

Use JSON format

cat code.py | claude -p 'analyze this code for bugs' --output-format json > analysis.json

This outputs a JSON array of messages with metadata including cost and duration.

3

Use streaming JSON format

cat log.txt | claude -p 'parse this log file for errors' --output-format stream-json

This outputs a series of JSON objects in real-time as Claude processes the request. Each message is a valid JSON object, but the entire output is not valid JSON if concatenated.


Create custom slash commands

Claude Code supports custom slash commands that you can create to quickly execute specific prompts or tasks.

For more details, see the Slash commands reference page.

Create project-specific commands

Suppose you want to create reusable slash commands for your project that all team members can use.

1

Create a commands directory in your project

mkdir -p .claude/commands
2

Create a Markdown file for each command

echo "Analyze the performance of this code and suggest three specific optimizations:" > .claude/commands/optimize.md 
3

Use your custom command in Claude Code

> /optimize 

Add command arguments with $ARGUMENTS

Suppose you want to create flexible slash commands that can accept additional input from users.

1

Create a command file with the $ARGUMENTS placeholder

echo 'Find and fix issue #$ARGUMENTS. Follow these steps: 1.
Understand the issue described in the ticket 2. Locate the relevant code in
our codebase 3. Implement a solution that addresses the root cause 4. Add
appropriate tests 5. Prepare a concise PR description' >
.claude/commands/fix-issue.md 
2

Use the command with an issue number

In your Claude session, use the command with arguments.

> /fix-issue 123 

This will replace $ARGUMENTS with "123" in the prompt.

Create personal slash commands

Suppose you want to create personal slash commands that work across all your projects.

1

Create a commands directory in your home folder

mkdir -p ~/.claude/commands 
2

Create a Markdown file for each command

echo "Review this code for security vulnerabilities, focusing on:" >
~/.claude/commands/security-review.md 
3

Use your personal custom command

> /security-review 

Ask Claude about its capabilities

Claude has built-in access to its documentation and can answer questions about its own features and limitations.

Example questions

> can Claude Code create pull requests?
> how does Claude Code handle permissions?
> what slash commands are available?
> how do I use MCP with Claude Code?
> how do I configure Claude Code for Amazon Bedrock?
> what are the limitations of Claude Code?

Next steps

code Claude Code reference implementation

Clone our development container reference implementation.


To find navigation and other pages in this documentation, fetch the llms.txt file at: https://code.claude.com/docs/llms.txt