~ / rigs / gufranco / claude-engineering-rules

gufranco/claude-engineering-rules

Opinionated Claude Code engineering config: 11 always-on rules, 63 on-demand standards, 30 slash-command skills, 33 runtime hooks, 9 custom agents, 36 MCP servers, and a 774-item review checklist across 69 categories

↗ GitHub ★ 3 MIT updated 4d ago personal setup Claude Code Claude plugin
share on X
ARCHETYPE
YOLO Cowboy
Permissions? Never heard of 'em. Ships at the speed of `--dangerously-skip-permissions`.
CONTEXT TAX · EVERY TURN
~156.1k tokens
Context hog · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Protects secrets · Pre-tool screening hook · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add --transport http asana https://mcp.asana.com/v2/mcp
$ claude mcp add --transport http atlassian https://mcp.atlassian.com/v1/mcp
$ claude mcp add aws -- npx -y mcp-server-aws
$ claude mcp add brave-search -e BRAVE_<redacted> -- npx -y @modelcontextprotocol/server-brave-search
$ claude mcp add --transport http browser-use https://api.browser-use.com/mcp -H 'x-browser-use-api-key: YOUR_VALUE'
$ claude mcp add browserbase -e BROWSERBASE_<redacted> -- npx -y @browserbasehq/mcp-server-browserbase
$ claude mcp add --transport http clickhouse https://mcp.clickhouse.cloud/mcp
$ claude mcp add cloudflare -e CLOUDFLARE_API_<redacted> -- npx -y @cloudflare/mcp-server-cloudflare
$ claude mcp add discord -e DISCORD_<redacted> -- npx -y discord-mcp
$ claude mcp add docker -- npx -y mcp-server-docker
$ claude mcp add exa-web-search -e EXA_<redacted> -- npx -y exa-mcp-server
$ claude mcp add fal-ai -e FAL_KEY=YOUR_FAL_KEY -- npx -y fal-ai-mcp-server
$ claude mcp add --transport http figma https://mcp.figma.com/mcp
$ claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /tmp
$ claude mcp add firecrawl -e FIRECRAWL_<redacted> -- npx -y firecrawl-mcp
$ claude mcp add github -e GITHUB_PERSONAL_ACCESS_<redacted> -- npx -y @modelcontextprotocol/server-github
$ claude mcp add gitlab -e GITLAB_PERSONAL_ACCESS_<redacted> -- npx -y @modelcontextprotocol/server-gitlab
$ claude mcp add google-maps -e GOOGLE_MAPS_<redacted> -- npx -y @modelcontextprotocol/server-google-maps
$ claude mcp add kubernetes -- npx -y mcp-server-kubernetes
$ claude mcp add langsmith -e LANGSMITH_<redacted> -- npx -y langsmith-mcp-server
$ claude mcp add lighthouse -- npx -y lighthouse-mcp
$ claude mcp add --transport http linear https://mcp.linear.app/mcp
$ claude mcp add memory -- npx -y @modelcontextprotocol/server-memory
$ claude mcp add --transport http mermaid-chart https://chatgpt.mermaid.ai/anthropic/mcp
$ claude mcp add --transport http notion https://mcp.notion.com/mcp
$ claude mcp add obsidian -e OBSIDIAN_VAULT_PATH=YOUR_OBSIDIAN_VAULT_PATH -- npx -y obsidian-mcp-server
$ claude mcp add ollama -- npx -y ollama-mcp-server
$ claude mcp add perplexity -e PERPLEXITY_<redacted> -- npx -y perplexity-mcp
$ claude mcp add playwright -- npx -y @playwright/mcp@latest
$ claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres ${POSTGRES_MCP_URL}
$ claude mcp add puppeteer -- npx -y @modelcontextprotocol/server-puppeteer
$ claude mcp add qdrant -e COLLECTION_NAME=YOUR_COLLECTION_NAME -e QDRANT_URL=YOUR_QDRANT_URL -e TOOL_FIND_DESCRIPTION=YOUR_TOOL_FIND_DESCRIPTION -e TOOL_STORE_DESCRIPTION=YOUR_TOOL_STORE_DESCRIPTION -- uvx mcp-server-qdrant
$ claude mcp add railway -- npx -y @railway/mcp-server
$ claude mcp add redis -- npx -y @modelcontextprotocol/server-redis redis://localhost:6379
$ claude mcp add resend -e RESEND_<redacted> -- npx -y mcp-server-resend
$ claude mcp add semgrep -- uvx semgrep-mcp
$ claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
$ claude mcp add sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking
$ claude mcp add slack -e SLACK_BOT_<redacted> -e SLACK_TEAM_ID=YOUR_SLACK_TEAM_ID -- npx -y @modelcontextprotocol/server-slack
$ claude mcp add --transport http supabase https://mcp.supabase.com/mcp
$ claude mcp add todoist -e TODOIST_API_<redacted> -- npx -y todoist-mcp-server
$ claude mcp add --transport http vercel https://mcp.vercel.com
$ npx degit gufranco/claude-engineering-rules/agents ./rig-claude-engineering-rules/agents
$ npx degit gufranco/claude-engineering-rules/skills ./rig-claude-engineering-rules/skills
$ npx degit gufranco/claude-engineering-rules/hooks ./rig-claude-engineering-rules/hooks

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 --transport http asana https://mcp.asana.com/v2/mcp
$ claude mcp add --transport http atlassian https://mcp.atlassian.com/v1/mcp
$ claude mcp add aws -- npx -y mcp-server-aws
$ claude mcp add brave-search -e BRAVE_<redacted> -- npx -y @modelcontextprotocol/server-brave-search
$ claude mcp add --transport http browser-use https://api.browser-use.com/mcp -H 'x-browser-use-api-key: YOUR_VALUE'
$ claude mcp add browserbase -e BROWSERBASE_<redacted> -- npx -y @browserbasehq/mcp-server-browserbase
$ claude mcp add --transport http clickhouse https://mcp.clickhouse.cloud/mcp
$ claude mcp add cloudflare -e CLOUDFLARE_API_<redacted> -- npx -y @cloudflare/mcp-server-cloudflare
$ claude mcp add discord -e DISCORD_<redacted> -- npx -y discord-mcp
$ claude mcp add docker -- npx -y mcp-server-docker
$ claude mcp add exa-web-search -e EXA_<redacted> -- npx -y exa-mcp-server
$ claude mcp add fal-ai -e FAL_KEY=YOUR_FAL_KEY -- npx -y fal-ai-mcp-server
$ claude mcp add --transport http figma https://mcp.figma.com/mcp
$ claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /tmp
$ claude mcp add firecrawl -e FIRECRAWL_<redacted> -- npx -y firecrawl-mcp
$ claude mcp add github -e GITHUB_PERSONAL_ACCESS_<redacted> -- npx -y @modelcontextprotocol/server-github
$ claude mcp add gitlab -e GITLAB_PERSONAL_ACCESS_<redacted> -- npx -y @modelcontextprotocol/server-gitlab
$ claude mcp add google-maps -e GOOGLE_MAPS_<redacted> -- npx -y @modelcontextprotocol/server-google-maps
$ claude mcp add kubernetes -- npx -y mcp-server-kubernetes
$ claude mcp add langsmith -e LANGSMITH_<redacted> -- npx -y langsmith-mcp-server
$ claude mcp add lighthouse -- npx -y lighthouse-mcp
$ claude mcp add --transport http linear https://mcp.linear.app/mcp
$ claude mcp add memory -- npx -y @modelcontextprotocol/server-memory
$ claude mcp add --transport http mermaid-chart https://chatgpt.mermaid.ai/anthropic/mcp
$ claude mcp add --transport http notion https://mcp.notion.com/mcp
$ claude mcp add obsidian -e OBSIDIAN_VAULT_PATH=YOUR_OBSIDIAN_VAULT_PATH -- npx -y obsidian-mcp-server
$ claude mcp add ollama -- npx -y ollama-mcp-server
$ claude mcp add perplexity -e PERPLEXITY_<redacted> -- npx -y perplexity-mcp
$ claude mcp add playwright -- npx -y @playwright/mcp@latest
$ claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres ${POSTGRES_MCP_URL}
$ claude mcp add puppeteer -- npx -y @modelcontextprotocol/server-puppeteer
$ claude mcp add qdrant -e COLLECTION_NAME=YOUR_COLLECTION_NAME -e QDRANT_URL=YOUR_QDRANT_URL -e TOOL_FIND_DESCRIPTION=YOUR_TOOL_FIND_DESCRIPTION -e TOOL_STORE_DESCRIPTION=YOUR_TOOL_STORE_DESCRIPTION -- uvx mcp-server-qdrant
$ claude mcp add railway -- npx -y @railway/mcp-server
$ claude mcp add redis -- npx -y @modelcontextprotocol/server-redis redis://localhost:6379
$ claude mcp add resend -e RESEND_<redacted> -- npx -y mcp-server-resend
$ claude mcp add semgrep -- uvx semgrep-mcp
$ claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
$ claude mcp add sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking
$ claude mcp add slack -e SLACK_BOT_<redacted> -e SLACK_TEAM_ID=YOUR_SLACK_TEAM_ID -- npx -y @modelcontextprotocol/server-slack
$ claude mcp add --transport http supabase https://mcp.supabase.com/mcp
$ claude mcp add todoist -e TODOIST_API_<redacted> -- npx -y todoist-mcp-server
$ claude mcp add --transport http vercel https://mcp.vercel.com
$ npx degit gufranco/claude-engineering-rules/skills/aside .claude/skills/aside
$ npx degit gufranco/claude-engineering-rules/skills/assessment .claude/skills/assessment
$ npx degit gufranco/claude-engineering-rules/skills/audit .claude/skills/audit
$ npx degit gufranco/claude-engineering-rules/skills/benchmark .claude/skills/benchmark
$ npx degit gufranco/claude-engineering-rules/skills/brain .claude/skills/brain
$ npx degit gufranco/claude-engineering-rules/skills/checkpoint .claude/skills/checkpoint
$ npx degit gufranco/claude-engineering-rules/skills/cleanup .claude/skills/cleanup
$ npx degit gufranco/claude-engineering-rules/skills/concise-mode .claude/skills/concise-mode
$ npx degit gufranco/claude-engineering-rules/skills/cross-model .claude/skills/cross-model
$ npx degit gufranco/claude-engineering-rules/skills/deploy .claude/skills/deploy
$ npx degit gufranco/claude-engineering-rules/skills/design .claude/skills/design
$ npx degit gufranco/claude-engineering-rules/skills/explain .claude/skills/explain
$ npx degit gufranco/claude-engineering-rules/skills/fix-issue .claude/skills/fix-issue
$ npx degit gufranco/claude-engineering-rules/skills/gan .claude/skills/gan
$ npx degit gufranco/claude-engineering-rules/skills/guard .claude/skills/guard
$ npx degit gufranco/claude-engineering-rules/skills/hotfix .claude/skills/hotfix
$ npx degit gufranco/claude-engineering-rules/skills/incident .claude/skills/incident
$ npx degit gufranco/claude-engineering-rules/skills/infra .claude/skills/infra
$ npx degit gufranco/claude-engineering-rules/skills/interview-me .claude/skills/interview-me
$ npx degit gufranco/claude-engineering-rules/skills/investigate .claude/skills/investigate
$ npx degit gufranco/claude-engineering-rules/skills/migrate .claude/skills/migrate
$ npx degit gufranco/claude-engineering-rules/skills/module-audit .claude/skills/module-audit
$ npx degit gufranco/claude-engineering-rules/skills/morning .claude/skills/morning
$ npx degit gufranco/claude-engineering-rules/skills/onboard .claude/skills/onboard
$ npx degit gufranco/claude-engineering-rules/skills/plan .claude/skills/plan
$ npx degit gufranco/claude-engineering-rules/skills/pr-summary .claude/skills/pr-summary
$ npx degit gufranco/claude-engineering-rules/skills/profile .claude/skills/profile
$ npx degit gufranco/claude-engineering-rules/skills/refactor .claude/skills/refactor
$ npx degit gufranco/claude-engineering-rules/skills/research .claude/skills/research
$ npx degit gufranco/claude-engineering-rules/skills/resolve .claude/skills/resolve
$ npx degit gufranco/claude-engineering-rules/skills/respond .claude/skills/respond
$ npx degit gufranco/claude-engineering-rules/skills/retro .claude/skills/retro
$ npx degit gufranco/claude-engineering-rules/skills/review .claude/skills/review
$ npx degit gufranco/claude-engineering-rules/skills/session-log .claude/skills/session-log
$ npx degit gufranco/claude-engineering-rules/skills/setup .claude/skills/setup
$ npx degit gufranco/claude-engineering-rules/skills/ship .claude/skills/ship
$ npx degit gufranco/claude-engineering-rules/skills/skill-new .claude/skills/skill-new
$ npx degit gufranco/claude-engineering-rules/skills/spike .claude/skills/spike
$ npx degit gufranco/claude-engineering-rules/skills/tdd .claude/skills/tdd
$ npx degit gufranco/claude-engineering-rules/skills/zoom-out .claude/skills/zoom-out
$ curl -fsSL --create-dirs -o .claude/agents/_shared-principles.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/_shared-principles.md
$ curl -fsSL --create-dirs -o .claude/agents/accessibility-auditor.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/accessibility-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/api-reviewer.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/api-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/blast-radius.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/blast-radius.md
$ curl -fsSL --create-dirs -o .claude/agents/concurrency-auditor.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/concurrency-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/conversation-analyzer.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/conversation-analyzer.md
$ curl -fsSL --create-dirs -o .claude/agents/critic.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/critic.md
$ curl -fsSL --create-dirs -o .claude/agents/documentation-checker.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/documentation-checker.md
$ curl -fsSL --create-dirs -o .claude/agents/gan-evaluator.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/gan-evaluator.md
$ curl -fsSL --create-dirs -o .claude/agents/gan-generator.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/gan-generator.md
$ curl -fsSL --create-dirs -o .claude/agents/gan-planner.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/gan-planner.md
$ curl -fsSL --create-dirs -o .claude/agents/i18n-validator.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/i18n-validator.md
$ curl -fsSL --create-dirs -o .claude/agents/migration-planner.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/migration-planner.md
$ curl -fsSL --create-dirs -o .claude/agents/opensource-sanitizer.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/opensource-sanitizer.md
$ curl -fsSL --create-dirs -o .claude/agents/privacy-auditor.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/privacy-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/red-team.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/red-team.md
$ curl -fsSL --create-dirs -o .claude/agents/scope-drift-detector.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/scope-drift-detector.md
$ curl -fsSL --create-dirs -o .claude/agents/test-scenario-generator.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/test-scenario-generator.md
$ curl -fsSL --create-dirs -o .claude/agents/type-design-analyzer.md https://raw.githubusercontent.com/gufranco/claude-engineering-rules/main/agents/type-design-analyzer.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(./.env)",
      "Read(./.env.local)",
      "Read(./.env.production)",
      "Read(./.env.development)",
      "Read(./.env.staging)",
      "Read(./.env.testing)",
      "Read(./.env.ci)",
      "Read(./.env.docker)",
      "Read(./secrets/**)",
      "Read(./config/credentials.json)",
      "Edit(./.env)",
      "Edit(./.env.local)",
      "Edit(./.env.production)",
      "Edit(./.env.development)",
      "Edit(./.env.staging)",
      "Edit(./.env.testing)",
      "Edit(./.env.ci)",
      "Edit(./.env.docker)",
      "Edit(./secrets/**)",
      "Edit(./config/credentials.json)",
      "Read(~/.ssh/**)",
      "Edit(~/.ssh/**)",
      "Read(~/.aws/**)",
      "Edit(~/.aws/**)",
      "Read(~/.gnupg/**)",
      "Edit(~/.gnupg/**)",
      "Read(~/.kube/config)",
      "Edit(~/.kube/config)",
      "Read(~/.docker/config.json)",
      "Edit(~/.docker/config.json)",
      "Read(~/.npmrc)",
      "Edit(~/.npmrc)",
      "Read(~/.pypirc)",
      "Edit(~/.pypirc)",
      "Read(~/.netrc)",
      "Edit(~/.netrc)",
      "Read(./**/*.tfstate)",
      "Edit(./**/*.tfstate)",
      "Read(./**/*.tfvars)",
      "Edit(./**/*.tfvars)",
      "Read(./**/*-credentials.json)",
      "Edit(./**/*-credentials.json)",
      "Read(./**/*.pem)",
      "Edit(./**/*.pem)",
      "Read(./**/*.key)",
      "Edit(./**/*.key)",
      "Read(./**/*id_rsa*)",
      "Edit(./**/*id_rsa*)",
      "Read(./**/*id_ed25519*)",
      "Edit(./**/*id_ed25519*)",
      "Read(**/node_modules/**)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/settings-hygiene.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/config-protection.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/gateguard-fact-force.py"
          }
        ]
      },
      {
        "matcher": "mcp__.*",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/mcp-health-check.py"
          }
        ]
      },
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/dangerous-command-blocker.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/project-workspace.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/secret-scanner.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/doc-sync-guard.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/frontend-render-gate.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/conventional-commits.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/gh-token-guard.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/bulk-resolve-blocker.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/pr-merge-blocker.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/pr-comment-discipline.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/review-state-guard.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/force-push-during-review.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/glab-token-guard.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/docker-context-guard.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/kubectl-context-guard.py"
          },
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/aws-profile-guard.py"
          }
        ]
      }
    ]
  }
}

MCP servers (42)

serversourceest. tokens
mcp.asana.com · "asana" remote · remote 2.5k
Atlassian remote · remote 10.0k
mcp-server-aws · "aws" npm 2.5k
Brave Search · "brave-search"
env: BRAVE_API_KEY
npm 900
api.browser-use.com · "browser-use" remote · remote 2.5k
@browserbasehq/mcp-server-browserbase · "browserbase"
env: BROWSERBASE_API_KEY
npm 2.5k
mcp.clickhouse.cloud · "clickhouse" remote · remote 2.5k
Cloudflare
env: CLOUDFLARE_API_TOKEN
npm 4.0k
discord-mcp · "discord"
env: DISCORD_TOKEN
npm 2.5k
mcp-server-docker · "docker" npm 2.5k
Exa · "exa-web-search"
env: EXA_API_KEY
npm 1.5k
fal-ai-mcp-server · "fal-ai"
env: FAL_KEY
npm 2.5k
Figma remote · remote 3.0k
Filesystem npm 4.2k
Firecrawl
env: FIRECRAWL_API_KEY
npm 5.0k
GitHub MCP · "github"
env: GITHUB_PERSONAL_ACCESS_TOKEN
npm 18.0k
@modelcontextprotocol/server-gitlab · "gitlab"
env: GITLAB_PERSONAL_ACCESS_TOKEN
npm 2.5k
@modelcontextprotocol/server-google-maps · "google-maps"
env: GOOGLE_MAPS_API_KEY
npm 2.5k
mcp-server-kubernetes · "kubernetes" npm 2.5k
langsmith-mcp-server · "langsmith"
env: LANGSMITH_API_KEY
npm 2.5k
lighthouse-mcp · "lighthouse" npm 2.5k
Linear remote · remote 5.5k
Memory (knowledge graph) · "memory" npm 2.6k
chatgpt.mermaid.ai · "mermaid-chart" remote · remote 2.5k
Notion remote · remote 6.0k
obsidian-mcp-server · "obsidian"
env: OBSIDIAN_VAULT_PATH
npm 2.5k
ollama-mcp-server · "ollama" npm 2.5k
Perplexity
env: PERPLEXITY_API_KEY
npm 1.0k
Playwright MCP · "playwright" npm 7.5k
Postgres npm 600
Puppeteer npm 2.2k
mcp-server-qdrant · "qdrant"
env: COLLECTION_NAME, QDRANT_URL, TOOL_FIND_DESCRIPTION, TOOL_STORE_DESCRIPTION
pypi 2.5k
@railway/mcp-server · "railway" npm 2.5k
@modelcontextprotocol/server-redis · "redis" npm 2.5k
mcp-server-resend · "resend"
env: RESEND_API_KEY
npm 2.5k
semgrep-mcp · "semgrep" pypi 2.5k
Sentry remote · remote 4.5k
Sequential Thinking · "sequential-thinking" npm 900
Slack
env: SLACK_BOT_TOKEN, SLACK_TEAM_ID
npm 3.5k
Supabase remote · remote 7.0k
Todoist
env: TODOIST_API_TOKEN
npm 3.0k
Vercel remote · remote 4.0k

Skills (40)

Subagents (19)

_shared-principles—
accessibility-auditor
model: sonnet
Audit accessibility against a rendered page, not only source. Drives the project's browser harness to read computed style off the focused element, dump the accessibility tree, walk tab order, and run
api-reviewer
model: sonnet
Review API changes for backward compatibility and design consistency. Checks response shape changes, removed fields, changed status codes, new required parameters, auth changes, naming, pagination, er
blast-radius
model: haiku
Trace all consumers of changed interfaces to identify the full impact of a code change. Use during code review to find files affected beyond the diff. Given changed exports, types, routes, or columns,
concurrency-auditor
model: sonnet
Audit write paths for race conditions, missing idempotency, and non-durable deduplication. Traces one concurrent-actor timeline per write path and reports the interleaving that breaks state. Checks ch
conversation-analyzer
model: sonnet
Read a session transcript and surface patterns worth capturing as instincts, hooks, or rule revisions. Looks for repeated user corrections, repeated agent failure modes, recurring tool-use patterns, a
critic
model: opus
Final quality gate for a near-complete change. Read-only adversarial review focused on what is MISSING, not what is wrong. Returns gap analysis with severity (CRITICAL, MAJOR, MINOR), one approval ver
documentation-checker
model: haiku
Verify documentation accuracy against the codebase. Checks README content, stale links, code examples, env var documentation, and API doc accuracy. Returns file:line findings with severity.
gan-evaluator
model: sonnet
Score the implementation produced by `gan-generator` against the rubric from `gan-planner`. Runs after the orchestrator applies the proposed changes and (when `GAN_EVAL_MODE=playwright`) the dev serve
gan-generator
model: sonnet
Implement the plan produced by `gan-planner` against the named files. Returns proposed changes as unified diffs or full file contents. Never writes to disk. Second step of the `/gan` skill loop.
gan-planner
model: opus
Expand a one-or-two-sentence brief into acceptance criteria, a file list, and a 5-row scoring rubric. First step of the `/gan` skill loop. Runs once per `/gan` invocation. Returns text only; never wri
i18n-validator
model: haiku
Validate translation files for completeness and correctness. Checks missing keys across locales, incorrect diacritical marks, inconsistent interpolation variables, and locale coverage. Returns file:li
migration-planner
model: haiku
Database safety reviewer. Default mode verifies migration files for safety, idempotency, reversibility, and ordering. `review` mode performs a broader PostgreSQL review of query performance, schema de
opensource-sanitizer
model: sonnet
Pre-public-push safety net. Scans a diff or working tree for leaked secrets, PII, internal references, internal URLs, vendor names, hard-coded internal hostnames, and other artifacts that should not a
privacy-auditor
model: sonnet
Audit code for privacy and data protection issues. Checks personal data flows, missing consent gates, retention violations, sensitive data handling, automated decision-making transparency. Aligned wit
red-team
model: sonnet
Adversarial analysis of code. Attacks happy paths under load, finds silent failures, exploits trust assumptions, breaks edge cases. Use when you need a hostile review that goes beyond standard categor
scope-drift-detector
model: haiku
Compare the current diff against the active plan.md spec to detect scope expansion. Flags files and features not in the original plan. Use during implementation to catch unplanned changes before they
test-scenario-generator
model: sonnet
Generate structured test scenarios with priority classification for a feature or file. Use during /plan, before implementation, or when /test needs scenario planning. Returns a requirement-to-test tra
type-design-analyzer
model: sonnet
Review TypeScript type design for encapsulation, invariant expression, and runtime safety. Looks for missing branded types on identifiers, string-literal unions where enums are warranted, optional fie

Hooks (42)

eventmatcherruns
PostCompact*python3 ~/.claude/hooks/compact-context-saver.py post
PostToolUseBashpython3 ~/.claude/hooks/ai-review-request.py
PostToolUseEditpython3 ~/.claude/hooks/smart-formatter.py
PostToolUseMultiEditpython3 ~/.claude/hooks/smart-formatter.py
PostToolUseWritepython3 ~/.claude/hooks/smart-formatter.py
PostToolUsemcp__.*python3 ~/.claude/hooks/mcp-health-check.py
PostToolUseRead|WebFetch|WebSearchpython3 ~/.claude/hooks/read-injection-scanner.py
PreCompact*python3 ~/.claude/hooks/compact-context-saver.py pre
PreCompact*python3 ~/.claude/hooks/vault-session-capture.py
PreToolUseWrite|Edit|MultiEditpython3 ~/.claude/hooks/settings-hygiene.py
PreToolUseWrite|Edit|MultiEditpython3 ~/.claude/hooks/config-protection.py
PreToolUseWrite|Edit|MultiEditpython3 ~/.claude/hooks/gateguard-fact-force.py
PreToolUsemcp__.*python3 ~/.claude/hooks/mcp-health-check.py
PreToolUseBashpython3 ~/.claude/hooks/dangerous-command-blocker.py
PreToolUseBashpython3 ~/.claude/hooks/project-workspace.py
PreToolUseBashpython3 ~/.claude/hooks/secret-scanner.py
PreToolUseBashpython3 ~/.claude/hooks/doc-sync-guard.py
PreToolUseBashpython3 ~/.claude/hooks/frontend-render-gate.py
PreToolUseBashpython3 ~/.claude/hooks/conventional-commits.py
PreToolUseBashpython3 ~/.claude/hooks/gh-token-guard.py
PreToolUseBashpython3 ~/.claude/hooks/bulk-resolve-blocker.py
PreToolUseBashpython3 ~/.claude/hooks/pr-merge-blocker.py
PreToolUseBashpython3 ~/.claude/hooks/pr-comment-discipline.py
PreToolUseBashpython3 ~/.claude/hooks/review-state-guard.py
PreToolUseBashpython3 ~/.claude/hooks/force-push-during-review.py
PreToolUseBashpython3 ~/.claude/hooks/glab-token-guard.py
PreToolUseBashpython3 ~/.claude/hooks/docker-context-guard.py
PreToolUseBashpython3 ~/.claude/hooks/kubectl-context-guard.py
PreToolUseBashpython3 ~/.claude/hooks/aws-profile-guard.py
SessionStart*python3 ~/.claude/hooks/compact-context-saver.py post

Permissions

deny (51)
Read(./.env)
Read(./.env.local)
Read(./.env.production)
Read(./.env.development)
Read(./.env.staging)
Read(./.env.testing)
Read(./.env.ci)
Read(./.env.docker)
Read(./secrets/**)
Read(./config/credentials.json)
Edit(./.env)
Edit(./.env.local)
Edit(./.env.production)
Edit(./.env.development)
Edit(./.env.staging)
Edit(./.env.testing)
Edit(./.env.ci)
Edit(./.env.docker)
Edit(./secrets/**)
Edit(./config/credentials.json)
Read(~/.ssh/**)
Edit(~/.ssh/**)
Read(~/.aws/**)
Edit(~/.aws/**)
Read(~/.gnupg/**)
Edit(~/.gnupg/**)
Read(~/.kube/config)
Edit(~/.kube/config)
Read(~/.docker/config.json)
Edit(~/.docker/config.json)
Read(~/.npmrc)
Edit(~/.npmrc)
Read(~/.pypirc)
Edit(~/.pypirc)
Read(~/.netrc)
Edit(~/.netrc)
Read(./**/*.tfstate)
Edit(./**/*.tfstate)
Read(./**/*.tfvars)
Edit(./**/*.tfvars)
Read(./**/*-credentials.json)
Edit(./**/*-credentials.json)
Read(./**/*.pem)
Edit(./**/*.pem)
Read(./**/*.key)
Edit(./**/*.key)
Read(./**/*id_rsa*)
Edit(./**/*id_rsa*)
Read(./**/*id_ed25519*)
Edit(./**/*id_ed25519*)
Read(**/node_modules/**)
ask (0)
—
allow (21)
Read
Write
Edit
WebFetch
WebSearch
Skill
Bash
NotebookEdit
Read(/tmp/**)
Read(/private/tmp/**)
Bash(git diff *)
Bash(git log *)
Bash(git status)
Bash(git status *)
Bash(git branch *)
Bash(git remote *)
Bash(git show *)
Bash(pnpm run *)
Bash(pnpm exec *)
Bash(npm run *)
Bash(npx *)

Similar rigs

copied ✓