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:
| Flag | Purpose | Example |
|---|---|---|
--print / -p | Single response, no interactive session | claude -p "Explain this error" |
--continue / -c | Resume the most recent session | claude -c |
--model | Choose a specific model | claude --model opus |
--output-format | Machine-readable output | claude -p "List files" --output-format json |
--allowedTools | Restrict available tools | claude -p "Read src/" --allowedTools Read,Glob |
--max-turns | Limit agentic rounds | claude -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.