~ / rigs / mboss37 / claude-launchpad

mboss37/claude-launchpad

Consistent developer experience for Claude Code. Sprint tracking, config scoring, auto-fix, and behavior verification out of the box.

↗ GitHub ★ 6 MIT updated 1mo ago project Claude CodeCodexCursor
share on X
ARCHETYPE
Automator
Hooks on every lifecycle event: format, lint, notify, log.
CONTEXT TAX · EVERY TURN
~9.3k tokens
Heavy · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Protects secrets · Pre-tool screening hook · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add agentic-memory -- npx claude-launchpad memory serve
$ npx degit mboss37/claude-launchpad/.claude ./rig-claude-launchpad  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ claude mcp add agentic-memory -- npx claude-launchpad memory serve
$ npx degit mboss37/claude-launchpad/.claude/skills/lp-enhance .claude/skills/lp-enhance
$ npx degit mboss37/claude-launchpad/.claude/skills/lp-migrate-memory .claude/skills/lp-migrate-memory
$ curl -fsSL --create-dirs -o .claude/agents/code-reviewer.md https://raw.githubusercontent.com/mboss37/claude-launchpad/master/.claude/agents/code-reviewer.md

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "permissions": {
    "deny": [
      "Read(~/.ssh/*)",
      "Read(~/.aws/*)",
      "Read(~/.npmrc)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "cmd=$(jq -r '.tool_input.command // empty' 2>/dev/null); echo \"$cmd\" | grep -qE 'git +push[^|;&]*( -f| --force| --force-with-lease)( |$)' && { echo 'WARNING: Force push detected — this can destroy remote history' >&2; exit 2; }; exit 0"
          }
        ]
      },
      {
        "matcher": "Read|Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "fp=$(jq -r '.tool_input.file_path // empty' 2>/dev/null); echo \"$fp\" | grep -qE '\\.(env|env\\..*)$' && ! echo \"$fp\" | grep -q '.env.example' && { echo 'BLOCKED: .env files contain secrets' >&2; exit 2; }; exit 0"
          }
        ]
      }
    ]
  }
}

MCP servers (1)

serversourceest. tokens
claude-launchpad · "agentic-memory" npm 2.5k

Skills (2)

Subagents (1)

code-reviewerIndependent, fresh-context review of a diff. Use PROACTIVELY before sprint-ending commits. Pass base and head SHAs (find the base with `git log --grep 'chore(sprint-' -n 1 --format=%H`).

Hooks (13)

eventmatcherruns
PreToolUseBashcmd=$(jq -r '.tool_input.command // empty' 2>/dev/null); echo "$cmd" | grep -qE 'git +push[^|;&]*( -f| --force| --force-with-lease)( |$)' && { echo 'WARNING: Force push detected — this can destroy remote history' >&2; exit 2; }; exit 0
PreToolUseRead|Write|Editfp=$(jq -r '.tool_input.file_path // empty' 2>/dev/null); echo "$fp" | grep -qE '\.(env|env\..*)$' && ! echo "$fp" | grep -q '.env.example' && { echo 'BLOCKED: .env files contain secrets' >&2; exit 2; }; exit 0
PostToolUseBashpayload=$(cat); cmd=$(echo "$payload" | jq -r '.tool_input.command // empty'); out=$(echo "$payload" | jq -r '(.tool_response.stdout // "") + (.tool_response.stderr // "")'); echo "$cmd" | grep -qE '(npm|pnpm) publish' && ! echo "$cmd" | gr
PostToolUseBashbash .claude/hooks/sprint-open-check.sh; exit 0
PostToolUseWrite|Editfp=$(jq -r '.tool_input.file_path // empty' 2>/dev/null); ext="${fp##*.}"; ([ "$ext" = "ts" ] || [ "$ext" = "tsx" ]) && npx prettier --write "$fp" 2>/dev/null; exit 0
PostToolUseEdit|Writefp=$(jq -r '.tool_input.file_path // empty' 2>/dev/null); echo "$fp" | grep -q TASKS.md || exit 0; section=$(sed -n '/^## Current/,/^## /p' TASKS.md 2>/dev/null); [ -z "$section" ] && exit 0; unchecked=$(echo "$section" | grep -cE '^[[:spac
PostToolUseEdit|Writebash .claude/hooks/workflow-check.sh 2>/dev/null; exit 0
SessionStartstartupnpx claude-launchpad memory pull -y 2>/dev/null; exit 0
SessionStartstartupbash .claude/hooks/release-state-check.sh 2>/dev/null; exit 0
SessionStartstartup|resume|compact|clearcat TASKS.md 2>/dev/null; exit 0
SessionStartstartup|resumenpx claude-launchpad memory context --json 2>/dev/null; exit 0
SessionStartstartup|resumebash .claude/hooks/sprint-size-check.sh TASKS.md 2>/dev/null; exit 0
SessionEnd*npx claude-launchpad memory push -y

Cursor rules (7)

architecture · alwaysconventions · alwaysdoctorhooksmemoryverification · alwaysworkflow

Permissions

deny (3)
Read(~/.ssh/*)
Read(~/.aws/*)
Read(~/.npmrc)
ask (0)
—
allow (7)
mcp__agentic-memory__memory_store
mcp__agentic-memory__memory_search
mcp__agentic-memory__memory_recent
mcp__agentic-memory__memory_forget
mcp__agentic-memory__memory_relate
mcp__agentic-memory__memory_stats
mcp__agentic-memory__memory_update

Similar rigs

copied ✓