Customizing Your Setup
March 26, 2026 · View on GitHub
This kit is opinionated by default, customizable by design.
Adding MCP Servers
Edit ~/.claude/mcp-servers.json to add more servers:
{
"your-server": {
"command": "npx",
"args": ["-y", "your-mcp-server@latest"],
"description": "What it does"
}
}
Popular additions:
@anthropic-ai/mcp-server-memory— if you want dedicated persistent memoryfirecrawl-mcp-server— advanced web scraping with JS rendering@anthropic-ai/mcp-server-github— GitHub API integration
Rule of thumb: Every MCP server costs ~500-2000 context tokens just to exist. Only add servers you'll use in most sessions.
Modifying Hooks
Hooks live inside ~/.claude/settings.json under the hooks key.
Disable a hook
Remove it from the array, or comment it out (JSON doesn't support comments, so you'll need to remove it).
Add a new hook
{
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "your-command-here"
}
]
}
]
}
Hook exit codes
exit 0— allow the action to proceedexit 1— hook failed (action still proceeds, error is logged)exit 2— block the action and show stderr to the user
Useful hook ideas
- Run
eslint --fixafter JS/TS edits - Run
cargo fmtafter Rust edits - Block edits to
package-lock.json(force use ofnpm install) - Log all Bash commands to a file for audit
Adding Agents
Create a .md file in ~/.claude/agents/:
---
name: my-agent
description: What it does in one line
model: sonnet # or opus, haiku
tools:
- Read
- Grep
- Glob
disallowedTools:
- Edit
- Write
---
Your agent's system prompt goes here.
Key settings:
model: haiku— fast and cheap for simple tasksmodel: opus— deep reasoning for complex analysismodel: sonnet— best balance for most agentsisolation: worktree— runs in a git worktree (isolated copy of repo)
Modifying Permissions
In ~/.claude/settings.json:
{
"permissions": {
"allow": ["Bash(git *)"],
"deny": ["Bash(rm -rf *)"]
}
}
Pattern syntax:
Bash(git *)— allow any git commandBash(npm test*)— allow npm test and npm test:unit etc.Read(~/.ssh/*)— allow/deny reading SSH keys
Less restrictive (for personal projects):
"allow": ["Bash", "Read", "Write", "Edit"]
More restrictive (for work/sensitive projects):
"allow": ["Bash(git status)", "Bash(git diff)", "Bash(git log)", "Read", "Glob", "Grep"]
Changing the CLAUDE.md Template
The starter CLAUDE.md is deliberately minimal. Fill in the sections for each project:
## Stack
TypeScript, Next.js 15, PostgreSQL, Prisma, Tailwind
## Commands
- `npm run dev` — start dev server on port 3000
- `npm test` — run vitest
- `npm run db:push` — push schema changes
## Architecture
- app/ — Next.js app router
- components/ — React components (PascalCase.tsx)
- lib/ — shared utilities
- server/ — tRPC routers
## Critical Constraints
- Always use server actions for mutations, never API routes
- Use Prisma transactions for multi-table writes
- Never import server code in client components
Profile Layering
Profiles stack. essential is always applied first, then your chosen profile overlays on top.
To create your own profile:
- Create
profiles/my-profile/ - Add any of:
settings.json,hooks.json,mcp-servers.json,keybindings.json,agents/*.md - Run
./install.sh --profile my-profile
Settings are merged (your profile adds to essential), not replaced.