~ / rigs / duncanmcclean / dotfiles

duncanmcclean/dotfiles

These are my dotfiles.

↗ GitHub ★ 38 no license updated 1d ago personal setup Claude CodeCodex
share on X
ARCHETYPE
Orchestrator
A bench of specialised subagents. The main agent mostly delegates.
CONTEXT TAX · EVERY TURN
~3.2k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
0/5
No committed guardrails · details

Copy this rig

# review before running: this installs third-party code
$ npx degit duncanmcclean/dotfiles/agents ./rig-dotfiles/agents

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 duncanmcclean/dotfiles/agents/skills/addon-release .claude/skills/addon-release
$ npx degit duncanmcclean/dotfiles/agents/skills/bulk-changes .claude/skills/bulk-changes
$ npx degit duncanmcclean/dotfiles/agents/skills/caffeine .claude/skills/caffeine
$ npx degit duncanmcclean/dotfiles/agents/skills/cleanup-worktrees .claude/skills/cleanup-worktrees
$ npx degit duncanmcclean/dotfiles/agents/skills/clipboard .claude/skills/clipboard
$ npx degit duncanmcclean/dotfiles/agents/skills/commit .claude/skills/commit
$ npx degit duncanmcclean/dotfiles/agents/skills/crush-em-all .claude/skills/crush-em-all
$ npx degit duncanmcclean/dotfiles/agents/skills/crush-issue .claude/skills/crush-issue
$ npx degit duncanmcclean/dotfiles/agents/skills/destroy-worktree .claude/skills/destroy-worktree
$ npx degit duncanmcclean/dotfiles/agents/skills/pr-feedback .claude/skills/pr-feedback
$ npx degit duncanmcclean/dotfiles/agents/skills/pull-request .claude/skills/pull-request
$ npx degit duncanmcclean/dotfiles/agents/skills/refine .claude/skills/refine
$ npx degit duncanmcclean/dotfiles/agents/skills/review .claude/skills/review
$ npx degit duncanmcclean/dotfiles/agents/skills/ship .claude/skills/ship
$ npx degit duncanmcclean/dotfiles/agents/skills/statamic-release .claude/skills/statamic-release
$ npx degit duncanmcclean/dotfiles/agents/skills/sync-statamic-statamic .claude/skills/sync-statamic-statamic
$ npx degit duncanmcclean/dotfiles/agents/skills/tower .claude/skills/tower
$ npx degit duncanmcclean/dotfiles/agents/skills/vscode .claude/skills/vscode
$ npx degit duncanmcclean/dotfiles/agents/skills/worktree .claude/skills/worktree
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-release/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-changes/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-worktrees/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-em-all/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-issue/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-worktree/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-feedback/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-request/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-release/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>-statamic-statamic/SKILL.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md
$ curl -fsSL --create-dirs -o .claude/agents/SKILL.md https://raw.githubusercontent.<redacted>.md

This rig commits no guardrails. Here is the community baseline instead — the deny/ask rules most often found across all 6,974 rigs:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(**/.env)",
      "Read(~/.ssh/**)",
      "Bash(rm -rf *)",
      "Read(**/*.pem)",
      "Bash(rm -rf /)",
      "Bash(git push --force:*)",
      "Bash(sudo *)",
      "Read(~/.aws/**)",
      "Bash(rm -rf /*)",
      "Read(./.env.*)",
      "Read(.env)",
      "Bash(git push --force*)",
      "Bash(rm -rf:*)",
      "Read(**/.env.*)",
      "Read(**/*.key)",
      "Bash(sudo:*)",
      "Bash(git reset --hard*)",
      "Bash(git reset --hard:*)",
      "Read(.env.*)"
    ],
    "ask": [
      "Bash(git push:*)",
      "Bash(git push *)",
      "Bash(git commit:*)",
      "Bash(rm *)",
      "Bash(rm:*)",
      "Bash(npm publish:*)",
      "Bash(wget *)",
      "Bash(git rebase *)",
      "Bash(gh pr merge *)",
      "Bash(git commit *)"
    ]
  }
}

Skills (19)

Subagents (19)

addon-releaseTag a new version of an existing Statamic addon. Creates a `release` branch, generates the changelog entry, opens the release PR, waits for the user to merge it, then triggers the "Create Release" wor
bulk-changesMakes the same change across multiple repositories.
caffeineKeep a Mac awake (caffeinate) or let it sleep again (decaffeinate) so remote sessions are not interrupted by idle sleep. Use whenever the user wants the Mac to stay awake, stop sleeping, or stay reach
cleanup-worktreesThis skill should be used when asked to clean up worktrees and local branches — removing anything whose work has been PR'd, keeping anything that hasn't.
clipboardCopy text to the macOS clipboard. Use when the user says "copy that", "copy to clipboard", "put that on my clipboard", "clipboard", or when another skill offers a copy-to-clipboard option.
commit>-
crush-em-allThis skill identifies a handful of GitHub issues to fix, and fixes them.
crush-issueInvestigate and fix a GitHub issue in its own worktree, then refine and review the fix before handing it over. Use when the user gives you an issue number or link to fix, or says "crush issue 1234". G
destroy-worktreeThis skill should be used when asked to destroy, delete or tear down the current worktree — removing the worktree, its sandbox site(s) and the local branch.
pr-feedbackUse this skill any time you are asked to address PR feedback.
pull-requestWrite pull request descriptions that sound like they were written by Duncan.
refineMy process of "refining" code — making code readable, tested and pointed to the goal.
review>-
shipCommit, push and open a pull request for a small fix in one go, without stopping to ask in between.
statamic-release>-
sync-statamic-statamicSync recent commits from "statamic/statamic" and config changes from "statamic/cms" into the boilerplate statamic/statamic application.
towerOpen a Git repository or worktree in Tower.app, or produce a link that opens it. Use when the user says "open in tower", "open this in tower", "tower", or when another skill asks for a Tower link in i
vscodeOpen a Git repository or worktree in VS Code, or produce a link that opens it. Use when the user says "open in vscode", "open this in code", "vscode", "vs code", or when another skill asks for a VS Co
worktreeThis skill should be used when asked to work on a bug fix or feature in a worktree of statamic/cms or another locally-cloned package.

Similar rigs

copied ✓