The definitive Claude Code setup system. Use when onboarding anyone to Claude Code, setting up a new machine, auditing your configuration, or answering "what should I install?" Covers ALL 14 hook events, 3 hook types, agent teams, worktree isolation, MCP servers, skills, and proven patterns. Triggers on "starter pack", "setup Claude Code", "onboard", "what hooks do I need", "get started", "new machine setup", "Claude Code features".
Resources
14Install
npx skillscat add itsluisc/claude-code-skills Install via the SkillsCat registry.
Tool Stack: Follow ~/.claude/skills/_shared/tool-stack.md for ALL tool choices.
Quality Gates: Follow ~/.claude/skills/_shared/quality-gates.md for ALL quality checks.
Claude Code Starter Pack
The complete, up-to-date system that turns Claude Code from "AI chatbot" into an Agent Operating System. Give this to ANYONE and they get the most efficient Claude Code experience that exists.
The Luis Carrillo Promise
You don't need to be techie. You don't need to code. You just talk.
The single biggest reason people don't use AI tools that could change their lives is FEAR. Fear of breaking something. Fear of looking stupid. Fear of the terminal. Fear of not understanding what's happening.
That fear is a lie. And this starter pack is the antidote.
Claude Code is a conversation. You type what you want. It does the work. The hooks, the configs, the MCP servers — all of that is a one-time setup that turns a basic AI into YOUR AI. After that? You just talk.
Luis Carrillo built this because he watched brilliant, creative people stop before they started. Not because they couldn't do it. Because nobody told them they didn't need to be technical to use the most powerful productivity tool that has ever existed.
This is that conversation.
Why This Exists
Most people use Claude Code at 10% capacity. They type prompts, click approve, lose context when sessions get long, and never learn that Claude Code has 14 hook lifecycle events, 3 hook types, agent teams, worktree isolation, 1M token context, and a full plugin ecosystem.
This starter pack is the difference between struggling and shipping.
What You Get
| Component | What It Does | Impact |
|---|---|---|
| 11 Custom Hooks | Context survival, smart boot, cost tracking, session persistence | Session never dies. Context never lost. |
| CLAUDE.md Template | Cognitive OS, visual-first output, gate protocol, execution modes | Claude thinks like YOU, not like a generic bot |
| Features Index | Queryable reference of ALL Claude Code capabilities | Never wonder "can Claude do X?" again |
| Daily Update Monitor | Auto-checks for new Claude Code versions and features | Never be outdated. Ever. |
| 14+ MCP Servers | Gmail, Notion, Drive, EXA, Perplexity, Brave, Gemini, Tavily, etc. | Claude can DO things, not just talk |
| 184+ Skills | Content, video, cloning, coaching, engineering, automation | Expertise on demand |
Quick Start (New Machine / New Person)
Step 1: Install Claude Code
npm install -g @anthropic-ai/claude-codeStep 2: Create Directory Structure
mkdir -p ~/.claude/{hooks,skills,references,scripts,agents,commands,memory}
mkdir -p ~/.claude/projectsStep 3: Install Essential Hooks
These are the hooks that make Claude Code actually usable:
Hook 1: Context Survival (THE breakthrough)
What it does: Before context compaction, saves session state to a file. After compaction, reads it back. Your chat literally never dies.
Event: PreCompact
File: ~/.claude/hooks/context-survival.js
This is the single most important hook. Without it, long sessions lose context and you start over. With it, sessions are infinite.
Hook 2: Smart Boot
What it does: At session start, detects your project, loads relevant context, checks for deferred tasks, surfaces recurring frustrations, and alerts you to Claude Code updates.
Event: SessionStart
File: ~/.claude/hooks/smart-boot.js
Hook 3: Session End Enforcer
What it does: When a session ends, forces saves to supermemory, MEMORY.md, session-intelligence, and deferred-tasks. Nothing gets lost.
Event: Stop
File: ~/.claude/hooks/session-end-enforcer.js
Hook 4: Cost Guardian
What it does: Monitors API spend in real-time. Alerts at thresholds. Prevents surprise bills.
Event: PostToolUse (matcher: *)
File: ~/.claude/hooks/cost-guardian.js
Hook 5: Tool Routing Guard
What it does: Ensures Claude uses the right tools — Read instead of cat, Grep instead of grep, Edit instead of sed. Prevents bad habits.
Event: PreToolUse (matcher: Bash)
File: ~/.claude/hooks/tool-routing-guard.js
Step 4: Configure settings.json
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "node \"$HOME/.claude/hooks/smart-boot.js\""
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "node \"$HOME/.claude/hooks/context-survival.js\""
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "node \"$HOME/.claude/hooks/session-end-enforcer.js\""
}
]
}
],
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "node \"$HOME/.claude/hooks/tool-routing-guard.js\""
}
]
}
],
"PostToolUse": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "node \"$HOME/.claude/hooks/cost-guardian.js\""
}
]
}
]
}
}Step 5: Install Daily Update Monitor
# Copy the monitor script
cp ~/.claude/scripts/claude-update-monitor.sh ~/.claude/scripts/
# Make executable
chmod +x ~/.claude/scripts/claude-update-monitor.sh
# Install launchd daemon (runs daily at 6 AM)
cp ~/Library/LaunchAgents/com.luis.claude-update-monitor.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.luis.claude-update-monitor.plist
# Run immediately
bash ~/.claude/scripts/claude-update-monitor.shStep 6: Create CLAUDE.md
Your CLAUDE.md is where you tell Claude WHO YOU ARE and HOW to work. At minimum:
# Project Instructions
## Communication Style
- Visual-first: tables, box frames, checklists
- Max 3 sentences before a visual break
- Scannable in 5 seconds
## Execution Rules
- Read files before editing them
- Use dedicated tools (Read, Edit, Write) not bash
- Parallel tool calls when independent
- Never suggest "new session" — sessions are infinite
## What I'm Building
[Your project description here]The 14 Hook Lifecycle Events
| # | Event | Fires When | Can Block? | Essential? |
|---|---|---|---|---|
| 1 | SessionStart |
Session begins | NO | ✅ YES |
| 2 | UserPromptSubmit |
User hits enter | YES | Optional |
| 3 | PreToolUse |
Before tool runs | YES | ✅ YES |
| 4 | PermissionRequest |
Permission dialog | YES | Optional |
| 5 | PostToolUse |
After tool succeeds | NO | ✅ YES |
| 6 | PostToolUseFailure |
After tool fails | NO | Optional |
| 7 | SubagentStop |
Sub-agent completes | NO | Optional |
| 8 | Stop |
Response ends | NO | ✅ YES |
| 9 | Notification |
Claude notifies | NO | Optional |
| 10 | PreCompact |
Before compaction | NO | ✅ YES |
| 11 | ConfigChange |
Config file changes | YES | Optional |
| 12 | statusLine |
Status bar update | N/A | Nice to have |
| 13 | WorktreeCreate |
Worktree created | N/A | Optional |
| 14 | WorktreeRemove |
Worktree removed | N/A | Optional |
3 Hook Types
| Type | How It Works | Best For |
|---|---|---|
command |
Runs shell command | Scripts, formatting, logging |
prompt |
Uses LLM evaluation | Smart validation, context-aware decisions |
agent |
Spawns a sub-agent | Complex multi-step automation |
HTTP |
POSTs JSON to URL | External service integration |
Hook JSON Structure
{
"hooks": {
"EventName": [
{
"matcher": "ToolPattern",
"hooks": [
{
"type": "command",
"command": "node script.js",
"timeout": 60
}
]
}
]
}
}Exit Codes
| Code | Meaning | Behavior |
|---|---|---|
| 0 | Success | Continue normally |
| 2 | Block | Stop action, show error |
| Other | Error | Log only, continue |
Agent Capabilities
| Approach | What | When to Use |
|---|---|---|
| Sub-agents (Task tool) | Parallel isolated work | Research, multi-file analysis |
.claude/agents/*.md |
Persistent specialist agents | Recurring roles (reviewer, tester) |
| Agent Teams | Multi-agent coordination | Complex projects |
| Worktree Isolation | -w flag, separate git branch |
Parallel branches |
| Background Agents | background: true |
Non-blocking work |
Essential Slash Commands
| Command | What It Does |
|---|---|
/compact |
Force context compaction |
/resume |
Resume previous conversation |
/model |
Switch models |
/memory |
Manage auto-memory |
/cost |
Check API spend |
/simplify |
Simplify code (NEW) |
/batch |
Batch operations (NEW) |
/fork |
Fork conversation |
MCP Servers Worth Installing
| Server | What It Gives You |
|---|---|
| Gmail | Read, search, draft, send emails |
| Google Calendar | View, create, manage events |
| Notion | Full database/page access |
| Google Drive | File management |
| EXA | Web search with clean content |
| Perplexity | AI-powered web search |
| Brave Search | Privacy-focused web search |
| Tavily | Research-grade web search |
| Gemini Grounding | Google search + Reddit |
| Supermemory | Cross-session memory |
| Context7 | Library documentation lookup |
| Scrapling (advanced) | Adaptive web scraping — bypasses bot detection, Cloudflare |
Daily Update Monitor
A launchd daemon that runs every day at 6 AM:
- Checks your Claude Code version against latest
- Writes update notices for smart-boot to surface
- Tracks ecosystem changes (compound-engineering, skills)
- Updates the features index reference file
Files:
- Script:
~/.claude/scripts/claude-update-monitor.sh - LaunchAgent:
~/Library/LaunchAgents/com.luis.claude-update-monitor.plist - Features Index:
~/.claude/references/claude-code-features-2026.md - Update Notice:
~/.claude/references/.update-notice
The Philosophy
Claude Code is not a chatbot. It's an Agent Operating System. The hooks make it deterministic. The skills make it specialized. The CLAUDE.md makes it YOU.
The difference between someone who "uses Claude Code" and someone who SHIPS with Claude Code is exactly this setup. Every hook, every skill, every config — it's the difference between a bicycle and a motorcycle.
The starter pack is the motorcycle.
Maintenance
- Daily: Update monitor runs automatically (6 AM)
- Weekly: Check
~/.claude/references/claude-code-features-2026.mdfor new features - Monthly: Audit hooks for redundancy, update CLAUDE.md
- When notified: Run
npm update -g @anthropic-ai/claude-code
Essential Fix: Large Input Protocol (50K Paste Limit)
Claude Code truncates user messages at ~50,000 characters — no warning, no error, content just disappears. This kills transcripts, long code dumps, and anything over ~12 pages.
The fix: Save clipboard to a temp file, tell Claude to read it.
One-Time Setup
# Create the script
cat > ~/.claude/scripts/save-clipboard.sh << 'SCRIPT'
#!/bin/bash
NAME="${1:-$(date +%Y%m%d-%H%M%S)}"
OUTPUT="/tmp/claude-large-input-${NAME}.txt"
pbpaste > "$OUTPUT"
CHARS=$(wc -c < "$OUTPUT")
LINES=$(wc -l < "$OUTPUT")
echo "╔══════════════════════════════════════════════╗"
echo "║ SAVED: $OUTPUT"
echo "║ Size: ${CHARS} chars, ${LINES} lines"
echo "║ Tell Claude: read /tmp/claude-large-input-${NAME}.txt"
echo "╚══════════════════════════════════════════════╝"
SCRIPT
chmod +x ~/.claude/scripts/save-clipboard.sh
# Add alias
echo 'alias sc="bash ~/.claude/scripts/save-clipboard.sh"' >> ~/.zshrc
source ~/.zshrcHow to Use
- Copy your large content (Cmd+C)
- In a separate terminal:
sc transcript(or any name) - In Claude Code: "read /tmp/claude-large-input-transcript.txt"
Full skill: ~/.claude/skills/large-input/SKILL.md
Reference Files
- Features Index:
~/.claude/references/claude-code-features-2026.md - Hook Reference:
~/.claude/skills/building-hooks/references/ - SSH Patterns:
~/.claude/skills/ssh-patterns/SKILL.md - Mac Automation:
~/.claude/skills/mac-automation/SKILL.md - Large Input:
~/.claude/skills/large-input/SKILL.md
Level 2: Multi-Device Bridge (Optional)
For users with 2+ Macs. Turns separate machines into one unified Claude Code system — auto-syncing skills, hooks, scripts, references, and configs between devices. Zero manual commands. Zero maintenance.
What You Get
| Feature | What It Does |
|---|---|
| Two-way SSH bridge | Passwordless SSH between all your Macs using ed25519 keys |
| Auto-sync LaunchAgent | Every 30 min, skills/hooks/scripts/references sync automatically |
| SSH config pinning | No "too many auth failures" — keys locked to one identity |
| Natural language control | "Do X on my iMac" → Claude uses the bridge silently |
| Zero maintenance | Once set up, never think about it again |
Prerequisites
- 2+ Macs on the same network (or reachable via hostname/IP)
- Remote Login enabled on each machine (System Settings → General → Sharing → Remote Login)
- Claude Code installed on each machine
Setup: Multi-Device Bridge
Step 1: Generate SSH Keys (each machine)
Run on EACH machine that doesn't already have an ed25519 key:
# Check if key exists
ls ~/.ssh/id_ed25519.pub 2>/dev/null || ssh-keygen -t ed25519 -C "$(whoami)@$(hostname -s)" -N "" -f ~/.ssh/id_ed25519Step 2: Exchange Keys
Copy each machine's public key to every OTHER machine's ~/.ssh/authorized_keys:
# From Machine A — add Machine A's key to Machine B
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@machine-b.local
# From Machine B — add Machine B's key to Machine A
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@machine-a.localIf ssh-copy-id fails, do it manually:
# On Machine A, get the key
cat ~/.ssh/id_ed25519.pub
# Paste that line into Machine B's ~/.ssh/authorized_keysStep 3: Create SSH Config (each machine)
Create ~/.ssh/config on EACH machine pointing to every other machine:
# ~/.ssh/config on Machine A
Host machine-b machine-b.local
HostName machine-b.local
User yourusername
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes# ~/.ssh/config on Machine B
Host machine-a machine-a.local
HostName machine-a.local
User yourusername
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yesWhy IdentitiesOnly yes: Without this, SSH tries every key in your agent, hits "too many authentication failures" after 6 attempts, and locks you out. This pins to ONE key.
Step 4: Verify Round-Trip
# From Machine A
ssh machine-b "echo 'Machine B reached from A'"
# From Machine B
ssh machine-a "echo 'Machine A reached from B'"Both must succeed without a password prompt.
Step 5: Create Auto-Sync Script
Create ~/.claude/scripts/multi-device-sync.sh on EACH machine:
#!/bin/bash
# Multi-Device Sync — syncs Claude Code config to other machines
# NEVER uses --delete (safety first)
LOG="$HOME/.claude/logs/sync-$(date +%Y%m%d).log"
mkdir -p "$HOME/.claude/logs"
log() { echo "[$(date '+%H:%M:%S')] $1" >> "$LOG"; }
# === CONFIGURE THESE ===
REMOTE_HOST="machine-b.local" # Change to your other machine
REMOTE_USER="yourusername" # Change to your username
REMOTE_SSH="ssh -o IdentitiesOnly=yes -i $HOME/.ssh/id_ed25519"
# ========================
log "=== SYNC START ==="
if ! ping -c 1 -W 2 "$REMOTE_HOST" &>/dev/null; then
log "$REMOTE_HOST not reachable — skipping"
exit 0
fi
# Sync Claude Code directories (NEVER --delete)
for dir in hooks scripts references skills/configs; do
if [ -d "$HOME/.claude/$dir" ]; then
rsync -az -e "$REMOTE_SSH" "$HOME/.claude/$dir/" "$REMOTE_USER@$REMOTE_HOST:~/.claude/$dir/" 2>/dev/null
log "Synced $dir"
fi
done
# Sync individual config files
for file in settings.json CLAUDE.md; do
if [ -f "$HOME/.claude/$file" ]; then
rsync -az -e "$REMOTE_SSH" "$HOME/.claude/$file" "$REMOTE_USER@$REMOTE_HOST:~/.claude/$file" 2>/dev/null
log "Synced $file"
fi
done
log "=== SYNC COMPLETE ==="chmod +x ~/.claude/scripts/multi-device-sync.shStep 6: Install Auto-Sync LaunchAgent
Create ~/Library/LaunchAgents/com.claude.multi-device-sync.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.claude.multi-device-sync</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>~/.claude/scripts/multi-device-sync.sh</string>
</array>
<key>StartInterval</key>
<integer>1800</integer>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/claude-sync-err.log</string>
<key>StandardOutPath</key>
<string>/tmp/claude-sync-out.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
</dict>
</dict>
</plist>launchctl load ~/Library/LaunchAgents/com.claude.multi-device-sync.plistDo this on EACH machine, pointed at the other machine.
Step 7: Add to CLAUDE.md
Add this to your CLAUDE.md so Claude knows about your other machines:
## Multi-Device Bridge
Machines on my network:
- Machine A: machine-a.local (primary)
- Machine B: machine-b.local (secondary)
SSH bridge is configured. "Do X on my [machine name]" = Claude uses SSH silently. Never show SSH commands. Never ask me to run terminal commands on the other machine. Just do it.What Syncs Automatically
| Directory/File | Syncs? | Why |
|---|---|---|
~/.claude/hooks/ |
YES | Same hooks on all machines |
~/.claude/scripts/ |
YES | Same automation everywhere |
~/.claude/references/ |
YES | Same knowledge base |
~/.claude/skills/configs/ |
YES | Same skill config |
~/.claude/settings.json |
YES | Same hook wiring |
~/.claude/CLAUDE.md |
YES | Same personality/rules |
~/.claude/skills/ (full) |
NO* | Use git repo for skills (too large for rsync) |
*Skills should be managed via a git repo (git pull on each machine) for version control. The sync handles everything else.
Troubleshooting
| Problem | Fix |
|---|---|
| "Too many authentication failures" | Add IdentitiesOnly yes to ~/.ssh/config |
| "Connection refused" | Enable Remote Login in System Settings |
| "Host key verification failed" | Run ssh -o StrictHostKeyChecking=accept-new machine.local once |
| Sync not running | Check: `launchctl list |
| Wrong hostname | Run hostname on target machine to verify |
The 3 Levels
| Level | What You Get | Who It's For |
|---|---|---|
| Level 1: Solo Machine | Hooks, CLAUDE.md, skills, MCP servers | Everyone starting out |
| Level 2: Multi-Device Bridge | + SSH bridge, auto-sync, natural language device control | Power users with 2+ Macs |
| Level 3: Full Agent OS | + 185 skills, Cognitive OS, clone system, automated backups to GitHub + Google Drive | Full-time builders |
Built by Agent Luis. Updated automatically. Never outdated.
Gate Protocol
- Pre-flight: Verify all dependencies and tools are available. Check file paths exist. Confirm no destructive operations without backup.
- Mid-flight: Log each operation. Verify intermediate outputs before proceeding to next step. Handle errors gracefully — never fail silently.
- Post-flight: Verify system state is correct. Confirm all outputs saved to expected locations. Test that the system works end-to-end.
Change Log
- [2026-03-02]: War Room Tier 2 — content quality upgrade (gate→system).
- [2026-03-02]: War Room Tier 1 audit — skill structure verified and standardized.