Skip to main content

Intermediate Setup

This guide assumes you have Claude Code installed with a basic CLAUDE.md. If not, complete the Starter setup first.

Here you'll configure the full memory system, permissions, custom skills, subagents, MCP servers, and CLI flags to build a customized workflow.

1. Full memory system

Claude Code reads memory files at multiple levels. Set them up to give Claude Code the right context everywhere.

User-level memory (~/.claude/CLAUDE.md) applies to all your projects:

# User preferences

- Always use TypeScript strict mode
- Prefer functional components over class components
- Use pnpm as package manager
- Write tests for all new functions

Project rules (.claude/rules/) let you organize project context into focused files:

<!-- .claude/rules/api-conventions.md -->
- All API endpoints return { data, error } shape
- Use zod for request validation
- Authentication middleware is in src/middleware/auth.ts
- Rate limiting is configured per-route in src/config/routes.ts

Rules files are loaded automatically. Use them for domain-specific context that would clutter your main CLAUDE.md.

For the complete memory hierarchy and precedence rules, see Memory.

2. Configure permissions

Control what Claude Code can do without asking by editing .claude/settings.json:

{
"permissions": {
"allow": [
"Read",
"Glob",
"Grep",
"Bash(npm run test*)",
"Bash(npm run lint*)",
"Bash(npx prettier*)"
],
"deny": [
"Bash(rm -rf*)",
"Bash(git push*)"
]
}
}

The allow list lets tools run without prompting. The deny list blocks them entirely. Everything else prompts for approval.

For full permission configuration and scoping, see Permissions.

3. Create custom skills

Skills are reusable prompt templates stored as Markdown files in .claude/commands/. Create one:

<!-- .claude/commands/review.md -->
Review the current git diff for:
1. Logic errors or bugs
2. Missing error handling
3. Security concerns (injection, auth bypass)
4. Performance issues

For each finding, state the file, line, issue, and suggested fix.

Use it in a session by typing /review. You can pass arguments with $ARGUMENTS in the template.

For more on creating and organizing skills, see Skills.

4. Use and create subagents

Claude Code has three built-in subagent types that handle subtasks without cluttering your main conversation:

  • Explore for codebase research
  • Plan for architectural design
  • General-purpose for multi-step tasks

You can reference subagents in your skills:

<!-- .claude/commands/investigate.md -->
Use a subagent to explore the codebase and find all usages of $ARGUMENTS.
Then summarize the patterns you find and suggest whether this API surface
can be simplified.

For details on how subagents work and how to use them effectively, see Subagents.

5. CLI flags for scripting

These flags are useful when integrating Claude Code into scripts or custom workflows:

FlagPurposeExample
--print / -pSingle response, no interactive sessionclaude -p "Explain this error"
--continue / -cResume the most recent sessionclaude -c
--modelChoose a specific modelclaude --model opus
--output-formatMachine-readable outputclaude -p "List files" --output-format json
--allowedToolsRestrict available toolsclaude -p "Read src/" --allowedTools Read,Glob
--max-turnsLimit agentic roundsclaude -p "Fix tests" --max-turns 10

For the complete flag reference, see Flags.

6. Add MCP servers

MCP (Model Context Protocol) servers connect Claude Code to external tools and data sources. Configure them in .claude/settings.json:

{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
}
}
}

This gives Claude Code access to up-to-date library documentation through the Context7 server.

For more MCP server options and configuration, see MCP Servers.

7. Install plugins

Plugins extend Claude Code with community-built capabilities. Browse and install them:

/plugins

Follow the interactive prompts to search, preview, and install plugins.

For plugin management details, see Plugins.

8. Your project structure

After completing this setup, your project should have these Claude Code files:

your-project/
├── CLAUDE.md # Project-level memory
├── .claude/
│ ├── settings.json # Permissions + MCP servers
│ ├── commands/
│ │ └── review.md # Custom skill
│ └── rules/
│ └── api-conventions.md # Project rules
└── ~/.claude/
└── CLAUDE.md # User-level memory (global)

Next steps

Ready for full automation? Continue to the Pro guide to set up hooks, agent teams, CI integration, and advanced workflows.