~ / rigs / aspiers / ai-config

aspiers/ai-config

Config for various AI coding agents (Claude, Gemini, opencode etc.)

↗ GitHub ★ 15 GPL-3.0 updated 1d ago personal setup Claude CodeCodex
share on X
ARCHETYPE
Fort Knox
Deny lists, pre-tool hooks, sandboxing. Nothing touches prod without a signature.
CONTEXT TAX · EVERY TURN
~18.0k tokens
Context hog · median rig: 2.3k · breakdown
GUARDRAILS
4/5
Blocks destructive commands · Pre-tool screening hook · No YOLO mode · Sandbox or ask-first rules · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add railway -- railway mcp
$ claude mcp add agentsview -- agentsview mcp
$ claude mcp add --transport http d4d https://d4d.forwarddemocracy.com/mcp
$ npx degit aspiers/ai-config/.claude ./rig-ai-config  # 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 railway -- railway mcp
$ claude mcp add agentsview -- agentsview mcp
$ claude mcp add --transport http d4d https://d4d.forwarddemocracy.com/mcp
$ npx degit aspiers/ai-config/.agents/skills/agent-browser-local .claude/skills/agent-browser-local
$ npx degit aspiers/ai-config/.agents/skills/agent-browser-viewport .claude/skills/agent-browser-viewport
$ npx degit aspiers/ai-config/.agents/skills/agent-command-authoring .claude/skills/agent-command-authoring
$ npx degit aspiers/ai-config/.agents/skills/allow-agent-commands .claude/skills/allow-agent-commands
$ npx degit aspiers/ai-config/.agents/skills/bc .claude/skills/bc
$ npx degit aspiers/ai-config/.agents/skills/bdr .claude/skills/bdr
$ npx degit aspiers/ai-config/.agents/skills/beads-best-practices .claude/skills/beads-best-practices
$ npx degit aspiers/ai-config/.agents/skills/beads-blocker-review .claude/skills/beads-blocker-review
$ npx degit aspiers/ai-config/.agents/skills/beads-grinding .claude/skills/beads-grinding
$ npx degit aspiers/ai-config/.agents/skills/beads-parallel-grinding .claude/skills/beads-parallel-grinding
$ npx degit aspiers/ai-config/.agents/skills/beads-solo .claude/skills/beads-solo
$ npx degit aspiers/ai-config/.agents/skills/beads .claude/skills/beads
$ npx degit aspiers/ai-config/.agents/skills/bx .claude/skills/bx
$ npx degit aspiers/ai-config/.agents/skills/checking-upstream .claude/skills/checking-upstream
$ npx degit aspiers/ai-config/.agents/skills/code-linting .claude/skills/code-linting
$ npx degit aspiers/ai-config/.agents/skills/code-refactoring-dry .claude/skills/code-refactoring-dry
$ npx degit aspiers/ai-config/.agents/skills/code-refactoring-small .claude/skills/code-refactoring-small
$ npx degit aspiers/ai-config/.agents/skills/code-reviewing .claude/skills/code-reviewing
$ npx degit aspiers/ai-config/.agents/skills/comparing-open-source-projects .claude/skills/comparing-open-source-projects
$ npx degit aspiers/ai-config/.agents/skills/describing-prs .claude/skills/describing-prs
$ npx degit aspiers/ai-config/.agents/skills/documentation-updates .claude/skills/documentation-updates
$ npx degit aspiers/ai-config/.agents/skills/editorconfig .claude/skills/editorconfig
$ npx degit aspiers/ai-config/.agents/skills/git-branch-management .claude/skills/git-branch-management
$ npx degit aspiers/ai-config/.agents/skills/git-commit .claude/skills/git-commit
$ npx degit aspiers/ai-config/.agents/skills/git-rebase-all .claude/skills/git-rebase-all
$ npx degit aspiers/ai-config/.agents/skills/git-staging .claude/skills/git-staging
$ npx degit aspiers/ai-config/.agents/skills/github-attachments .claude/skills/github-attachments
$ npx degit aspiers/ai-config/.agents/skills/hubdoc-reviewer .claude/skills/hubdoc-reviewer
$ npx degit aspiers/ai-config/.agents/skills/ids .claude/skills/ids
$ npx degit aspiers/ai-config/.agents/skills/incremental-commits .claude/skills/incremental-commits
$ npx degit aspiers/ai-config/.agents/skills/iterative-development .claude/skills/iterative-development
$ npx degit aspiers/ai-config/.agents/skills/learn .claude/skills/learn
$ npx degit aspiers/ai-config/.agents/skills/linear-ready .claude/skills/linear-ready
$ npx degit aspiers/ai-config/.agents/skills/managing-pi-packages .claude/skills/managing-pi-packages
$ npx degit aspiers/ai-config/.agents/skills/open-in-user-browser .claude/skills/open-in-user-browser
$ npx degit aspiers/ai-config/.agents/skills/orca-cli-local .claude/skills/orca-cli-local
$ npx degit aspiers/ai-config/.agents/skills/plan-to-beads .claude/skills/plan-to-beads
$ npx degit aspiers/ai-config/.agents/skills/plan-to-linear .claude/skills/plan-to-linear
$ npx degit aspiers/ai-config/.agents/skills/planning-commits .claude/skills/planning-commits
$ npx degit aspiers/ai-config/.agents/skills/pr-comment-resolving .claude/skills/pr-comment-resolving
$ curl -fsSL --create-dirs -o .claude/agents/code-deduplicator.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/code-deduplicator.md
$ curl -fsSL --create-dirs -o .claude/agents/code-linter.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/code-linter.md
$ curl -fsSL --create-dirs -o .claude/agents/code-refactorer.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/code-refactorer.md
$ curl -fsSL --create-dirs -o .claude/agents/code-reviewer.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/code-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/doc-updater.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/doc-updater.md
$ curl -fsSL --create-dirs -o .claude/agents/git-committer.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/git-committer.md
$ curl -fsSL --create-dirs -o .claude/agents/git-stager.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/git-stager.md
$ curl -fsSL --create-dirs -o .claude/agents/pr-describer.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/pr-describer.md
$ curl -fsSL --create-dirs -o .claude/agents/prp-generator.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/prp-generator.md
$ curl -fsSL --create-dirs -o .claude/agents/task-generator.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/task-generator.md
$ curl -fsSL --create-dirs -o .claude/agents/task-implementer.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/task-implementer.md
$ curl -fsSL --create-dirs -o .claude/agents/test-runner.md https://raw.githubusercontent.com/aspiers/ai-config/main/.claude/agents/test-runner.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(pkill:*)",
      "Bash(killall:*)",
      "Bash(bd init)",
      "Bash(bd init:*)"
    ],
    "ask": [
      "Bash(*parcellite*)",
      "Bash(*clipit*)",
      "Bash(*copyq*)",
      "Bash(*greenclip*)",
      "Bash(*cliphist*)",
      "Bash(*clipman*)",
      "Bash(*clipcat*)",
      "Bash(*gpaste*)",
      "Bash(*GPaste*)",
      "Bash(*klipper*)",
      "Bash(*diodon*)",
      "Read(~/**/*parcellite*)",
      "Read(~/**/*clipit*)",
      "Read(~/**/*copyq*)",
      "Read(~/**/*greenclip*)",
      "Read(~/**/*cliphist*)",
      "Read(~/**/*clipman*)",
      "Read(~/**/*clipcat*)",
      "Read(~/**/*gpaste*)",
      "Read(~/**/*GPaste*)",
      "Read(~/**/*klipper*)",
      "Read(~/**/*diodon*)",
      "Read(~/**/*parcellite*/**)",
      "Read(~/**/*clipit*/**)",
      "Read(~/**/*copyq*/**)",
      "Read(~/**/*greenclip*/**)",
      "Read(~/**/*cliphist*/**)",
      "Read(~/**/*clipman*/**)",
      "Read(~/**/*clipcat*/**)",
      "Read(~/**/*gpaste*/**)",
      "Read(~/**/*GPaste*/**)",
      "Read(~/**/*klipper*/**)",
      "Read(~/**/*diodon*/**)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "~/.local/bin/dcg"
          },
          {
            "type": "command",
            "command": "ai-guard-git-worktree-add"
          },
          {
            "type": "command",
            "command": "atuin hook claude-code"
          }
        ]
      },
      {
        "matcher": "AskUserQuestion",
        "hooks": [
          {
            "type": "command",
            "command": "ai-guard-hidden-question-context"
          }
        ]
      },
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "if [ -z \"${HOME-}\" ]; then case \"${OSTYPE-}\" in msys*|cygwin*|win32*) printf '{}\\n'; if [ -z \"${ORCA_AGENT_HOOK_PORT-}\" ] || [ -z \"${ORCA_AGENT_HOOK_TOKEN-}\" ] || [ -z \"${ORCA_PANE_KEY-}\" ]; then exit 0; fi; { command -p cat 2>/dev/null || "
          }
        ]
      }
    ]
  }
}

MCP servers (4)

serversourceest. tokens
railway binary 2.5k
agentsview binary 2.5k
node_repl
env: BROWSER_USE_AVAILABLE_BACKENDS, BROWSER_USE_CODEX_APP_BUILD_FLAVOR, BROWSER_USE_CODEX_APP_VERSION, CODEX_CLI_PATH, CODEX_HOME +7
local / custom 2.5k
d4d.forwarddemocracy.com · "d4d" remote · remote 2.5k

Skills (62)

Subagents (12)

code-deduplicatorRemove code duplication by extracting shared logic into reusable components
code-linter
model: sonnet
Code linting specialist. Masters linting tools, formatting, and code quality checks. Use PROACTIVELY immediately after code is successfully written or modified, when creating new files, or before comm
code-refactorerRefactor overly large code units into smaller, more focused components
code-reviewerCode review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after code changes are completed and ready for review.
doc-updater
model: sonnet
Update documentation based on lessons learned from conversations
git-committer
model: sonnet
Commits staged changes to git
git-stager
model: sonnet
Stage relevant changes via git add, taking great care not to add unrelated files or changes
pr-describer
model: sonnet
Generates PR descriptions for the current branch
prp-generatorGenerate a Product Requirements Prompt (PRP) from a feature description
task-generatorGenerate a detailed task list from a Product Requirements Prompt (PRP)
task-implementer
model: sonnet
engineer implementing a single sub-task from a list of tasks
test-runner
model: sonnet
Automated testing specialist. Must be used proactively immediately after code is successfully linted.

Hooks (27)

eventmatcherruns
Notification*ai-agent-host >/dev/null || printf '\a' > /dev/tty
Notification*ai-agent-host >/dev/null || mplayer -volume 50 /usr/share/sounds/Oxygen-Sys-App-Positive.ogg
Notification*ai-agent-host >/dev/null || notify-send 'Claude Code finished'
PostToolUseBashatuin hook claude-code
PostToolUse*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
PostToolUseFailureBashatuin hook claude-code
PostToolUseFailure*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
PreToolUseBash~/.local/bin/dcg
PreToolUseBashai-guard-git-worktree-add
PreToolUseAskUserQuestionai-guard-hidden-question-context
PreToolUseBashatuin hook claude-code
PreToolUse*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
SessionEnd*~/bin/herdr-claude-title-watch
SessionEnd*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
SessionStart*bash '~/.claude/hooks/herdr-agent-state.sh' session
SessionStart*~/bin/herdr-claude-title-watch
SessionStart*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
UserPromptSubmit*~/bin/herdr-claude-title-watch
UserPromptSubmit*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
Stop*ai-guard-hidden-question-context
Stop*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
StopFailure*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
SubagentStart*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
SubagentStop*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
TeammateIdle*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
PermissionRequest*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||
PostCompact*if [ -z "${HOME-}" ]; then case "${OSTYPE-}" in msys*|cygwin*|win32*) printf '{}\n'; if [ -z "${ORCA_AGENT_HOOK_PORT-}" ] || [ -z "${ORCA_AGENT_HOOK_TOKEN-}" ] || [ -z "${ORCA_PANE_KEY-}" ]; then exit 0; fi; { command -p cat 2>/dev/null ||

Slash commands (41)

/allow/bc/bdr/bed/bg/bgp/blockers/bx/check-upstream/commit/do/dry/enroll-beads-solo/gen-prp/gen-tasks/git-rebase-all/ids/init2/iter/learn/lint/obs/open/pc/plan-to-beads/pr-desc/prod/qs/reflect/review/rr/sc/scp/slow/small/sq/stage/submit-upstream/test/tmp/you

Plugins (4)

beads@beads-marketplaceclangd-lsp@claude-plugins-officialcontext-mode@context-moderuby-lsp@claude-plugins-official

Permissions

deny (4)
Bash(pkill:*)
Bash(killall:*)
Bash(bd init)
Bash(bd init:*)
ask (33)
Bash(*parcellite*)
Bash(*clipit*)
Bash(*copyq*)
Bash(*greenclip*)
Bash(*cliphist*)
Bash(*clipman*)
Bash(*clipcat*)
Bash(*gpaste*)
Bash(*GPaste*)
Bash(*klipper*)
Bash(*diodon*)
Read(~/**/*parcellite*)
Read(~/**/*clipit*)
Read(~/**/*copyq*)
Read(~/**/*greenclip*)
Read(~/**/*cliphist*)
Read(~/**/*clipman*)
Read(~/**/*clipcat*)
Read(~/**/*gpaste*)
Read(~/**/*GPaste*)
Read(~/**/*klipper*)
Read(~/**/*diodon*)
Read(~/**/*parcellite*/**)
Read(~/**/*clipit*/**)
Read(~/**/*copyq*/**)
Read(~/**/*greenclip*/**)
Read(~/**/*cliphist*/**)
Read(~/**/*clipman*/**)
Read(~/**/*clipcat*/**)
Read(~/**/*gpaste*/**)
Read(~/**/*GPaste*/**)
Read(~/**/*klipper*/**)
Read(~/**/*diodon*/**)
allow (120)
Read
Write
Edit
Glob
Grep
Bash(ai-safe-rm:*)
Bash(arch)
Bash(awk:*)
Bash(b2sum:*)
Bash(base32:*)
Bash(base64:*)
Bash(basename:*)
Bash(basenc:*)
Bash(bash -n:*)
Bash(bd:*)
Bash(bzgrep:*)
Bash(cal:*)
Bash(cat:*)
Bash(cksum:*)
Bash(column:*)
Bash(comm:*)
Bash(cut:*)
Bash(date:*)
Bash(df:*)
Bash(diff:*)
Bash(dir:*)
Bash(dirname:*)
Bash(dmesg:*)
Bash(du:*)
Bash(echo:*)
Bash(expand:*)
Bash(expr:*)
Bash(factor:*)
Bash(find:*)
Bash(fmt:*)
Bash(fold:*)
Bash(fuser:*)
Bash(getopt:*)
Bash(gh issue list:*)
Bash(gh issue search:*)
Bash(gh issue status:*)
Bash(gh issue view:*)
Bash(gh pr checks:*)
Bash(gh pr diff:*)
Bash(gh pr list:*)
Bash(gh pr search:*)
Bash(gh pr status:*)
Bash(gh pr view:*)
Bash(gh repo view:*)
Bash(gh run list:*)
Bash(gh run view:*)
Bash(gh search:*)
Bash(git add:*)
Bash(git branch --list:*)
Bash(git branch --show-current)
Bash(git cat-file:*)
Bash(git check-attr:*)
Bash(git check-ignore:*)
Bash(git config --get:*)
Bash(git describe:*)

Similar rigs

copied ✓