~ / rigs / mbd-s / dotfiles

mbd-s/dotfiles

My personal dotfiles and assorted config

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

Copy this rig

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

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(sudo:*)",
      "Bash(rm -rf:*)",
      "Bash(rm -fr:*)",
      "Bash(git push * main*)",
      "Bash(git push * master*)",
      "Bash(git push --force:*)",
      "Bash(git push -f:*)",
      "Bash(aws * delete*)",
      "Bash(aws * terminate*)",
      "Bash(aws s3 rm:*)",
      "Bash(aws s3 rb:*)",
      "Bash(aws iam create*)",
      "Bash(aws iam attach*)",
      "Bash(aws iam put*)",
      "Bash(aws iam update*)",
      "Bash(aws iam delete*)",
      "Bash(terraform destroy*)",
      "Bash(terraform force-unlock:*)",
      "Read(~/.ssh/id_*)",
      "Read(~/.aws/**)",
      "Read(~/.gnupg/**)",
      "Read(**/.env)",
      "Read(**/.env.*)"
    ],
    "ask": [
      "Bash(rm:*)"
    ]
  }
}

Hooks (4)

eventmatcherruns
PostToolUseWrite|Editfile=$(jq -r '.tool_input.file_path // empty'); if [[ "$file" == *.tf ]]; then dir=$(dirname "$file"); terraform fmt "$dir" && (cd "$dir" && terraform validate); fi
PostToolUseWrite|Editfile=$(jq -r '.tool_input.file_path // empty'); if [[ "$file" == *.md ]]; then prettier --write "$file"; fi
PreCompactautoecho '{"continue": false, "stopReason": "Auto-compaction blocked. Run /compact manually if you want to proceed."}'
Notification*msg=$(jq -r '.message // empty'); if [ -n "$msg" ] && [ "$msg" != "Claude is waiting for your input" ] && [ -x "$HOME/.local/bin/claude-slack-send" ]; then "$HOME/.local/bin/claude-slack-send" "$msg" >/dev/null 2>&1; fi

Permissions

deny (23)
Bash(sudo:*)
Bash(rm -rf:*)
Bash(rm -fr:*)
Bash(git push * main*)
Bash(git push * master*)
Bash(git push --force:*)
Bash(git push -f:*)
Bash(aws * delete*)
Bash(aws * terminate*)
Bash(aws s3 rm:*)
Bash(aws s3 rb:*)
Bash(aws iam create*)
Bash(aws iam attach*)
Bash(aws iam put*)
Bash(aws iam update*)
Bash(aws iam delete*)
Bash(terraform destroy*)
Bash(terraform force-unlock:*)
Read(~/.ssh/id_*)
Read(~/.aws/**)
Read(~/.gnupg/**)
Read(**/.env)
Read(**/.env.*)
ask (1)
Bash(rm:*)
allow (0)
—

Similar rigs

copied ✓