~ / rigs / felixhennequin-gif / claude-code-config-template

felixhennequin-gif/claude-code-config-template

Production-ready AI config template for Claude Code. CLAUDE.md, agents, skills, hooks, routines, and commands — based on analysis of 55+ open-source repos (Supabase, Bitwarden, Vercel, Cloudflare, OpenAI).

↗ GitHub ★ 0 MIT updated 5mo ago personal setup Claude Code
share on X
ARCHETYPE
Orchestrator
A bench of specialised subagents. The main agent mostly delegates.
CONTEXT TAX · EVERY TURN
~24.5k tokens
Context hog · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Pre-tool screening hook · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add github -e GITHUB_PERSONAL_ACCESS_<redacted> -- npx -y @modelcontextprotocol/server-github
$ claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ${PROJECT_ROOT}
$ claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres ${DATABASE_URL}
$ npx degit felixhennequin-gif/claude-code-config-template/.claude ./rig-claude-code-config-template  # 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 github -e GITHUB_PERSONAL_ACCESS_<redacted> -- npx -y @modelcontextprotocol/server-github
$ claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ${PROJECT_ROOT}
$ claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres ${DATABASE_URL}
$ curl -fsSL --create-dirs -o .claude/agents/architect.md https://raw.githubusercontent.com/felixhennequin-gif/claude-code-config-template/master/.claude/agents/architect.md
$ curl -fsSL --create-dirs -o .claude/agents/changelog-updater.md https://raw.githubusercontent.com/felixhennequin-gif/claude-code-config-template/master/.claude/agents/changelog-updater.md
$ curl -fsSL --create-dirs -o .claude/agents/commit-writer.md https://raw.githubusercontent.com/felixhennequin-gif/claude-code-config-template/master/.claude/agents/commit-writer.md
$ curl -fsSL --create-dirs -o .claude/agents/pr-creator.md https://raw.githubusercontent.com/felixhennequin-gif/claude-code-config-template/master/.claude/agents/pr-creator.md
$ curl -fsSL --create-dirs -o .claude/agents/reviewer.md https://raw.githubusercontent.com/felixhennequin-gif/claude-code-config-template/master/.claude/agents/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": [
      "Bash(sudo:*)",
      "Bash(rm -rf /:*)",
      "Bash(rm -rf ~:*)",
      "Bash(dd:*)",
      "Bash(mkfs:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Bash(git clean -fd:*)",
      "Bash(git branch -D:*)",
      "Bash(npm publish:*)",
      "Bash(yarn publish:*)",
      "Bash(pnpm publish:*)",
      "Bash(cargo publish:*)",
      "Bash(twine upload:*)",
      "Bash(curl * | sh)",
      "Bash(curl * | bash)",
      "Bash(wget * | sh)",
      "Bash(wget * | bash)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|MultiEdit|Write|NotebookEdit",
        "hooks": [
          {
            "type": "command",
            "command": "if [ \"${ALLOW_MAIN_EDIT:-}\" = \"true\" ]; then exit 0; fi; BRANCH=\"$(cd \"$CLAUDE_PROJECT_DIR\" && git branch --show-current 2>/dev/null)\"; case \"$BRANCH\" in main|master) echo \"Cannot edit on $BRANCH branch. Switch to a feature branch, or set A"
          }
        ]
      },
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash $CLAUDE_PROJECT_DIR/.claude/hooks/dangerous-rm-guard.sh"
          },
          {
            "type": "command",
            "command": "bash $CLAUDE_PROJECT_DIR/.claude/hooks/pre-commit-secret-scan.sh"
          }
        ]
      }
    ]
  }
}

MCP servers (3)

serversourceest. tokens
GitHub MCP · "github"
env: GITHUB_PERSONAL_ACCESS_TOKEN
npm 18.0k
Filesystem npm 4.2k
Postgres npm 600

Subagents (5)

architect
model: sonnet
Stack-agnostic architecture reviewer. Use when proposing a new module, evaluating a dependency, refactoring across layers, or before committing to a design that touches more than one file. Checks stru
changelog-updater
model: haiku
Parses commits between the most recent tag and HEAD, then appends Keep a Changelog-formatted entries to `CHANGELOG.md` under `## [Unreleased]`. Use after merging PRs, before cutting a release. Does no
commit-writer
model: haiku
Drafts a Conventional Commits message for the currently staged changes and creates the commit. Reads the modified files in full (not just the diff hunks) before classifying — that step is the differen
pr-creator
model: haiku
Opens a GitHub pull request for the current branch using `gh pr create`. Use when work is committed and pushed and the only remaining step is filling out a PR title and body. Reads the diff against th
reviewer
model: sonnet
Stack-agnostic code reviewer. Use when reviewing PRs, auditing a diff, or before merging. Checks banned patterns, security hygiene, error handling, test coverage, and convention drift — without assumi

Hooks (6)

eventmatcherruns
SessionStart*bash $CLAUDE_PROJECT_DIR/.claude/hooks/session-start.sh
PreToolUseEdit|MultiEdit|Write|NotebookEditif [ "${ALLOW_MAIN_EDIT:-}" = "true" ]; then exit 0; fi; BRANCH="$(cd "$CLAUDE_PROJECT_DIR" && git branch --show-current 2>/dev/null)"; case "$BRANCH" in main|master) echo "Cannot edit on $BRANCH branch. Switch to a feature branch, or set A
PreToolUseBashbash $CLAUDE_PROJECT_DIR/.claude/hooks/dangerous-rm-guard.sh
PreToolUseBashbash $CLAUDE_PROJECT_DIR/.claude/hooks/pre-commit-secret-scan.sh
PostToolUseEdit|MultiEdit|Write|NotebookEdit$CLAUDE_PROJECT_DIR/.claude/hooks/lint-on-edit.sh
Notification*bash $CLAUDE_PROJECT_DIR/.claude/hooks/notification.sh

Slash commands (7)

/audit/deploy/lint-config/pr/skill-check/wrap-apply/wrap

Permissions

deny (18)
Bash(sudo:*)
Bash(rm -rf /:*)
Bash(rm -rf ~:*)
Bash(dd:*)
Bash(mkfs:*)
Bash(git push --force:*)
Bash(git reset --hard:*)
Bash(git clean -fd:*)
Bash(git branch -D:*)
Bash(npm publish:*)
Bash(yarn publish:*)
Bash(pnpm publish:*)
Bash(cargo publish:*)
Bash(twine upload:*)
Bash(curl * | sh)
Bash(curl * | bash)
Bash(wget * | sh)
Bash(wget * | bash)
ask (0)
—
allow (21)
Read
Grep
Glob
Bash(git status:*)
Bash(git diff:*)
Bash(git log:*)
Bash(git show:*)
Bash(git add:*)
Bash(git commit:*)
Bash(git push:*)
Bash(git fetch:*)
Bash(git pull:*)
Bash(git branch:*)
Bash(git checkout:*)
Bash(git switch:*)
Bash(git stash:*)
Bash(git merge:*)
Bash(git rebase:*)
Bash(git tag:*)
Bash(git remote:*)
Bash(git restore:*)

Similar rigs

copied ✓