~ / rigs / stranma / claude-code-python-template

stranma/claude-code-python-template

Production-ready Python project template for Claude Code with TDD workflow, 7 custom agents, and 11-step Phase Completion Checklist

↗ GitHub ★ 2 MIT updated 6mo ago project Claude Code
share on X
ARCHETYPE
Fort Knox
Deny lists, pre-tool hooks, sandboxing. Nothing touches prod without a signature.
CONTEXT TAX · EVERY TURN
~1.4k tokens
Featherweight · median rig: 2.3k · breakdown
GUARDRAILS
5/5
Blocks destructive commands · Protects secrets · Pre-tool screening hook · No YOLO mode · Sandbox or ask-first rules · details

Copy this rig

# review before running: this installs third-party code
$ npx degit stranma/claude-code-python-template/.claude ./rig-claude-code-python-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.

$ npx degit stranma/claude-code-python-template/.claude/skills/design .claude/skills/design
$ npx degit stranma/claude-code-python-template/.claude/skills/done .claude/skills/done
$ npx degit stranma/claude-code-python-template/.claude/skills/landed .claude/skills/landed
$ npx degit stranma/claude-code-python-template/.claude/skills/sync .claude/skills/sync
$ curl -fsSL --create-dirs -o .claude/agents/code-quality-validator.md https://raw.githubusercontent.com/stranma/claude-code-python-template/master/.claude/agents/code-quality-validator.md
$ curl -fsSL --create-dirs -o .claude/agents/code-reviewer.md https://raw.githubusercontent.com/stranma/claude-code-python-template/master/.claude/agents/code-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/docs-updater.md https://raw.githubusercontent.com/stranma/claude-code-python-template/master/.claude/agents/docs-updater.md
$ curl -fsSL --create-dirs -o .claude/agents/pr-writer.md https://raw.githubusercontent.com/stranma/claude-code-python-template/master/.claude/agents/pr-writer.md
$ curl -fsSL --create-dirs -o .claude/agents/review-responder.md https://raw.githubusercontent.com/stranma/claude-code-python-template/master/.claude/agents/review-responder.md
$ curl -fsSL --create-dirs -o .claude/agents/test-coverage-validator.md https://raw.githubusercontent.com/stranma/claude-code-python-template/master/.claude/agents/test-coverage-validator.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(gh secret *)",
      "Bash(gh auth *)",
      "Bash(gh ssh-key *)",
      "Bash(gh gpg-key *)",
      "Bash(git push --force *)",
      "Bash(git push -f *)",
      "Bash(git clean *)",
      "Bash(git config *)",
      "Bash(*git remote add *)",
      "Bash(*git remote set-url *)",
      "Bash(*git remote remove *)",
      "Bash(*git remote rename *)",
      "Bash(*git remote set-head *)",
      "Bash(uv self *)"
    ],
    "ask": [
      "Bash(python *)",
      "Bash(uv run python *)",
      "Bash(docker *)",
      "Bash(docker-compose *)",
      "Bash(terraform *)",
      "Bash(gh pr merge *)",
      "Bash(gh pr reopen *)",
      "Bash(gh pr close *)",
      "Bash(gh pr comment *)",
      "Bash(gh pr review *)",
      "Bash(gh pr ready *)",
      "Bash(gh workflow run *)",
      "Bash(gh workflow enable *)",
      "Bash(gh workflow disable *)",
      "Bash(gh api *)",
      "Bash(gh issue create *)",
      "Bash(gh issue comment *)",
      "Bash(gh issue close *)",
      "Bash(gh issue edit *)",
      "Bash(git push *)",
      "Bash(git init *)",
      "Bash(git clone *)",
      "Bash(uv remove *)",
      "Bash(uv cache *)",
      "Bash(uv init *)",
      "WebFetch"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/dangerous-actions-blocker.sh"
          }
        ]
      }
    ]
  }
}

Skills (4)

Subagents (6)

code-quality-validator
model: haiku
Use this agent for Step S.5 - Code Quality validation.\n\nRuns linting, formatting verification, and type checking across monorepo packages.\n\n**Examples:**\n\n<example>\nContext: Step S.5.\n\nuser:
code-reviewer
model: sonnet
Use this agent for Step S.6.4 - Code Review.\n\nPerforms an independent code review of the current phase's changes, checking for bugs, logic errors, security issues, and adherence to project conventio
docs-updater
model: sonnet
Use this agent for Step S.7 - Documentation Updates.\n\nUpdates IMPLEMENTATION_PLAN.md and CHANGELOG.md after phase completion.\n\n**Examples:**\n\n<example>\nContext: A development phase was just com
pr-writer
model: sonnet
Use this agent for Step S.6.2 - PR Description generation.\n\nGenerates structured PR descriptions from git diff, implementation plan, and changelog.\n\n**Examples:**\n\n<example>\nContext: Creating a
review-responder
model: sonnet
Use this agent for Step S.6.4 - Code Review Response (Optional).\n\nHandles automated reviewer (e.g., CodeRabbit) comments by triaging, auto-fixing, and flagging concerns.\nSkip this agent if no autom
test-coverage-validator
model: sonnet
Use this agent for Step S.5 - Test Coverage validation.\n\nAlso use when:\n1. A development phase or increment has been completed\n2. New functionality has been implemented following the TDD process\n

Hooks (2)

eventmatcherruns
PreToolUseBash"$CLAUDE_PROJECT_DIR"/.claude/hooks/dangerous-actions-blocker.sh
PostToolUseEdit|Write"$CLAUDE_PROJECT_DIR"/.claude/hooks/auto-format.sh

Plugins (1)

security-guidance@claude-code-plugins

Permissions

deny (14)
Bash(gh secret *)
Bash(gh auth *)
Bash(gh ssh-key *)
Bash(gh gpg-key *)
Bash(git push --force *)
Bash(git push -f *)
Bash(git clean *)
Bash(git config *)
Bash(*git remote add *)
Bash(*git remote set-url *)
Bash(*git remote remove *)
Bash(*git remote rename *)
Bash(*git remote set-head *)
Bash(uv self *)
ask (26)
Bash(python *)
Bash(uv run python *)
Bash(docker *)
Bash(docker-compose *)
Bash(terraform *)
Bash(gh pr merge *)
Bash(gh pr reopen *)
Bash(gh pr close *)
Bash(gh pr comment *)
Bash(gh pr review *)
Bash(gh pr ready *)
Bash(gh workflow run *)
Bash(gh workflow enable *)
Bash(gh workflow disable *)
Bash(gh api *)
Bash(gh issue create *)
Bash(gh issue comment *)
Bash(gh issue close *)
Bash(gh issue edit *)
Bash(git push *)
Bash(git init *)
Bash(git clone *)
Bash(uv remove *)
Bash(uv cache *)
Bash(uv init *)
WebFetch
allow (76)
Bash(pytest *)
Bash(uv run pytest *)
Bash(uv run ruff *)
Bash(uv sync *)
Bash(uv --version *)
Bash(uv run pyright *)
Bash(uv add *)
Bash(uv pip *)
Bash(uv venv *)
Bash(uv lock *)
Bash(uv tree *)
Bash(uv export *)
Bash(git add *)
Bash(git commit *)
Bash(git fetch *)
Bash(git pull *)
Bash(git rebase *)
Bash(git branch *)
Bash(git checkout *)
Bash(git status *)
Bash(git diff *)
Bash(git log *)
Bash(git show *)
Bash(git merge *)
Bash(git stash *)
Bash(git restore *)
Bash(git reset *)
Bash(git rm *)
Bash(git mv *)
Bash(git worktree *)
Bash(git remote *)
Bash(git submodule *)
Bash(git tag *)
Bash(git switch *)
Bash(git rev-parse *)
Bash(git cherry-pick *)
Bash(git blame *)
Bash(git reflog *)
Bash(git ls-files *)
Bash(git describe *)
Bash(git shortlog *)
Bash(git rev-list *)
Bash(gh pr create *)
Bash(gh pr view *)
Bash(gh pr list *)
Bash(gh pr checks *)
Bash(gh pr diff *)
Bash(gh pr edit *)
Bash(gh run list *)
Bash(gh run view *)
Bash(gh run watch *)
Bash(gh issue list *)
Bash(gh issue view *)
Bash(gh repo view *)
Bash(gh release list *)
Bash(gh release view *)
Bash(gh label list *)
Bash(gh browse *)
Bash(gh search *)
Bash(ls *)

Similar rigs

copied ✓