~ / rigs / rjwalters / loom

rjwalters/loom

Agent Orchestration

↗ GitHub ★ 14 MIT updated today project Claude CodeCodex
share on X
ARCHETYPE
Orchestrator
A bench of specialised subagents. The main agent mostly delegates.
CONTEXT TAX · EVERY TURN
~11.3k tokens
Heavy · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Pre-tool screening hook · No YOLO mode · details

Copy this rig

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

$ npx degit rjwalters/loom/defaults/.agents/skills/loom-architect .claude/skills/loom-architect
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-auditor .claude/skills/loom-auditor
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-builder-complexity .claude/skills/loom-builder-complexity
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-builder-pr .claude/skills/loom-builder-pr
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-builder-worktree .claude/skills/loom-builder-worktree
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-builder .claude/skills/loom-builder
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-cargo-target-isolation .claude/skills/loom-cargo-target-isolation
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-champion .claude/skills/loom-champion
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-ci-refusals-reference .claude/skills/loom-ci-refusals-reference
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-comment-body-literal-path .claude/skills/loom-comment-body-literal-path
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-concierge .claude/skills/loom-concierge
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-curator-rate-budget .claude/skills/loom-curator-rate-budget
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-curator .claude/skills/loom-curator
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-doctor .claude/skills/loom-doctor
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-driver .claude/skills/loom-driver
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-guide .claude/skills/loom-guide
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-hermit-patterns .claude/skills/loom-hermit-patterns
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-hermit .claude/skills/loom-hermit
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-judge-reference .claude/skills/loom-judge-reference
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-judge .claude/skills/loom-judge
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-loom .claude/skills/loom-loom
$ npx degit rjwalters/loom/defaults/.agents/skills/loom-probe-protocol .claude/skills/loom-probe-protocol
$ curl -fsSL --create-dirs -o .claude/agents/loom-architect.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-architect.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-auditor.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-builder.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-builder.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-champion.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-champion.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-curator.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-curator.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-daemon.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-daemon.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-doctor.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-doctor.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-guide.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-guide.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-hermit.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-hermit.md
$ curl -fsSL --create-dirs -o .claude/agents/loom-judge.md https://raw.githubusercontent.com/rjwalters/loom/main/defaults/.claude/agents/loom-judge.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(osascript:*)",
      "Bash(*osascript *)",
      "Bash(*\"System Events\"*)",
      "Bash(*tell application*)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd \"$R/..\" 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r \"$L\" ] && LOOM_PROJECT_ROOT=$W exec bash \"$L\" PreToolUse guard-de"
          },
          {
            "type": "command",
            "command": "bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd \"$R/..\" 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r \"$L\" ] && LOOM_PROJECT_ROOT=$W exec bash \"$L\" PreToolUse guard-lo"
          }
        ]
      },
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd \"$R/..\" 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r \"$L\" ] && LOOM_PROJECT_ROOT=$W exec bash \"$L\" PreToolUse guard-wo"
          }
        ]
      },
      {
        "matcher": "mcp__loom__.*",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd \"$R/..\" 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r \"$L\" ] && LOOM_PROJECT_ROOT=$W exec bash \"$L\" PreToolUse guard-mc"
          }
        ]
      },
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'export LOOM_GUARD_WIRING_FAILOPEN=1; R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd \"$R/..\" 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r \"$L\" ] && LOOM_PROJECT_ROOT="
          }
        ]
      }
    ]
  }
}

Skills (22)

Subagents (10)

loom-architectLoom Architect - System design specialist that scans the codebase for improvement opportunities and creates comprehensive architectural proposals with loom:architect label.
loom-auditorLoom Auditor - Main branch validation specialist that builds, tests, and runs the integrated software on `main` to verify it actually works, filing bug issues with the loom:auditor label when it finds
loom-builderLoom Builder - Development worker that implements issues labeled loom:issue. Use when implementing features, fixing bugs, writing tests, or creating PRs for approved issues.
loom-championLoom Champion - Human avatar that promotes quality issues to approved status AND auto-merges Judge-approved PRs meeting safety criteria. Use for final approval decisions.
loom-curatorLoom Curator - Issue enhancement specialist that enriches unlabeled issues with technical details, acceptance criteria, and implementation guidance, then marks them as loom:curated.
loom-daemonLoom Daemon operator - Tier 2 daemon-mode surface that observes the running Rust `loom-daemon` binary via MCP tools and dispatches sweeps for multi-account autonomous batches. Use to monitor and drive
loom-doctorLoom Doctor - PR fixer that addresses review feedback on PRs labeled loom:changes-requested, resolves merge conflicts, and fixes bugs. Returns PRs to review-ready state.
loom-guideLoom Guide - Issue triage specialist that keeps the backlog healthy (tier labels, orphan verification, unblocking, epic tracking, living docs). Never applies priority labels.
loom-hermitLoom Hermit - Simplification specialist that identifies and proposes removal of unnecessary complexity, bloat, dead code, and over-engineering. Creates proposals with loom:hermit label.
loom-judgeLoom Judge - Code review specialist that reviews PRs labeled loom:review-requested. Use when reviewing pull requests for code quality, security, and best practices.

Hooks (13)

eventmatcherruns
PreToolUseBashbash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" PreToolUse guard-de
PreToolUseBashbash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" PreToolUse guard-lo
PreToolUseEdit|Writebash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" PreToolUse guard-wo
PreToolUsemcp__loom__.*bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" PreToolUse guard-mc
PreToolUse*bash -c 'export LOOM_GUARD_WIRING_FAILOPEN=1; R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=
PostToolUse*bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" PostToolUse roll-pa
PostToolUseFailure*bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" PostToolUseFailure
UserPromptSubmit*bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" UserPromptSubmit sk
SessionStartstartup${CLAUDE_PROJECT_DIR}/.claude/skills/repo/hooks/session-start-handoff.sh
SessionStartresume${CLAUDE_PROJECT_DIR}/.claude/skills/repo/hooks/session-start-handoff.sh
Stop*bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/hooks/hook-wiring.sh; [ -r "$L" ] && LOOM_PROJECT_ROOT=$W exec bash "$L" Stop guard-backgrou
Stop*bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/scripts/lib/locate-daemon-bin.sh; [ -r "$L" ] || exit 0; . "$L" >/dev/null 2>&1 || exit 0; B
SubagentStop*bash -c 'R=$(git rev-parse --git-common-dir 2>/dev/null); R=${R:+$(cd "$R/.." 2>/dev/null && pwd)}; W=${R:-${CLAUDE_PROJECT_DIR:-$PWD}}; L=$W/.loom/scripts/lib/locate-daemon-bin.sh; [ -r "$L" ] || exit 0; . "$L" >/dev/null 2>&1 || exit 0; B

Slash commands (56)

/loom/architect-patterns/loom/architect-reference/loom/architect/loom/auditor/loom/builder-complexity/loom/builder-pr/loom/builder-worktree/loom/builder/loom/bump/loom/cargo-target-isolation/loom/champion-common/loom/champion-critical-file-hold/loom/champion-epic-guard-invariants/loom/champion-epic-standdown/loom/champion-epic/loom/champion-held-pr-staleness/loom/champion-issue-promo/loom/champion-merge-risk-shadow/loom/champion-pr-merge/loom/champion-premise-false-evidence/loom/champion-reference/loom/champion/loom/ci-refusals-reference/loom/comment-body-literal-path/loom/concierge/loom/curator-rate-budget/loom/curator/loom/doctor/loom/driver/loom/epic/loom/guide/loom/help/loom/hermit-patterns/loom/hermit/loom/imagine/loom/judge-reference/loom/judge/loom/loom-iteration/loom/loom-parent/loom/loom/loom/mail-send/loom/probe-protocol/loom/star/loom/sweep-arguments/loom/sweep-backend-detection/loom/sweep-dry-run/loom/sweep-examples/loom/sweep-execution-model/loom/sweep-mode-c-lifecycle/loom/sweep-reference/loom/sweep-run-hygiene/loom/sweep-scheduling-signals/loom/sweep-summary-output/loom/sweep-wave-lifecycle/loom/sweep/loom/watch

Permissions

deny (4)
Bash(osascript:*)
Bash(*osascript *)
Bash(*"System Events"*)
Bash(*tell application*)
ask (0)
—
allow (120)
Bash(gh:*)
Bash(git:*)
Bash(pnpm:*)
Bash(npx:*)
Bash(cargo:*)
Bash(node:*)
Bash(./scripts/*)
Bash(./.loom/scripts/*)
Bash(tmux:*)
Bash(lsof:*)
Bash(cat:*)
Bash(ls:*)
Bash(pwd)
Bash(cd:*)
Bash(mkdir:*)
Bash(cp:*)
Bash(mv:*)
Bash(rm:*)
Bash(touch:*)
Bash(echo:*)
Bash(chmod:*)
Bash(sed:*)
Bash(awk:*)
Bash(grep:*)
Bash(find:*)
Bash(xargs:*)
Bash(head:*)
Bash(tail:*)
Bash(sort:*)
Bash(uniq:*)
Bash(cut:*)
Bash(wc:*)
Bash(tee:*)
Bash(tr:*)
Bash(diff:*)
Bash(patch:*)
Bash(which:*)
Bash(env:*)
Bash(basename:*)
Bash(dirname:*)
Bash(date:*)
Bash(sleep:*)
Bash(test:*)
Bash([:*)
Bash(jq:*)
Bash(curl:*)
Bash(wget:*)
Bash(tar:*)
Bash(gzip:*)
Bash(gunzip:*)
Bash(zip:*)
Bash(unzip:*)
Bash(convert:*)
Bash(magick:*)
Bash(iconutil:*)
Bash(jot:*)
Bash(shuf:*)
WebSearch
Read(/tmp/**)
Read(/private/tmp/**)

Similar rigs

copied ✓