aspiers/ai-config
Config for various AI coding agents (Claude, Gemini, opencode etc.)
ARCHETYPE
Fort Knox
Deny lists, pre-tool hooks, sandboxing. Nothing touches prod without a signature.
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)
| server | source | est. 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)
agent-browser-localagent-browser-viewportagent-command-authoringallow-agent-commandsbcbdrbeads-best-practicesbeads-blocker-reviewbeads-grindingbeads-parallel-grindingbeads-solobeadsbxchecking-upstreamcode-lintingcode-refactoring-drycode-refactoring-smallcode-reviewingcomparing-open-source-projectsdescribing-prsdocumentation-updateseditorconfiggit-branch-managementgit-commitgit-rebase-allgit-staginggithub-attachmentshubdoc-revieweridsincremental-commitsiterative-developmentlearnlinear-readymanaging-pi-packagesopen-in-user-browserorca-cli-localplan-to-beadsplan-to-linearplanning-commitspr-comment-resolvingproduction-operationsproject-initializationprp-generationqssafe-rmsetting-up-worktree-hooksskill-authoringslow-command-runningsqsubagent-authoringsubmitting-upstreamtask-generationtask-implementationtask-orchestrationtest-runningtriaging-prsupstreaming-statuswatching-ci-runsxero-browserxero-mcpxlsx-to-csvyou
Subagents (12)
| code-deduplicator | Remove 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-refactorer | Refactor overly large code units into smaller, more focused components |
| code-reviewer | Code 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-generator | Generate a Product Requirements Prompt (PRP) from a feature description |
| task-generator | Generate 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)
| event | matcher | runs |
|---|---|---|
| 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' |
| PostToolUse | Bash | atuin 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 || |
| PostToolUseFailure | Bash | atuin 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 || |
| PreToolUse | Bash | ~/.local/bin/dcg |
| PreToolUse | Bash | ai-guard-git-worktree-add |
| PreToolUse | AskUserQuestion | ai-guard-hidden-question-context |
| PreToolUse | Bash | atuin 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
giovanebribeiro/claude-setup
My configurations, scripts, skills, etc. for Claude Code
Orchestrator 2.6k tok ·
huangjia2019/claude-code-engineering
This repository demonstrates how to use Claude Code to do real engineering work, not just writing code. 本项目是极客时间专栏 《Claude Code 工程化实战》 的官方配套示例仓库,目标很明确: 👉 把 Claude Code 从“对话式编码工具”,变成 可设计、可复用、可治理的工程系统。
MCP Hoarder 12.6k tok ·
msiShariful/claude-code-studio
A local GUI for managing Claude Code settings — config, MCP servers, plugins, hooks, agents, skills, and CLAUDE.md. npx cc-studio
Fort Knox 2.1k tok ·
nexusweblabs/claude-bedrock-setup
CLI tool to configure Claude Code for AWS Bedrock
Orchestrator 1.2k tok ·