itsluisc

claude-code-starter-pack

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".

itsluisc 0 Updated 3mo ago

Resources

14
GitHub

Install

npx skillscat add itsluisc/claude-code-skills

Install via the SkillsCat registry.

SKILL.md

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-code

Step 2: Create Directory Structure

mkdir -p ~/.claude/{hooks,skills,references,scripts,agents,commands,memory}
mkdir -p ~/.claude/projects

Step 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.sh

Step 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.md for 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 ~/.zshrc

How to Use

  1. Copy your large content (Cmd+C)
  2. In a separate terminal: sc transcript (or any name)
  3. 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_ed25519

Step 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.local

If 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_keys

Step 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 yes

Why 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.sh

Step 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.plist

Do 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.