gzapi-org/agent-fabric
Control plane for the agents working on sibling repositories: identities, roles, memory, model routing, messaging.
ARCHETYPE
Automator
Hooks on every lifecycle event: format, lint, notify, log.
Copy this rig
# review before running: this installs third-party code
$ npx degit gzapi-org/agent-fabric/.claude ./rig-agent-fabric # 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 gzapi-org/agent-fabric/communication/gzcoord/skills/gzcoord-receive .claude/skills/gzcoord-receive $ npx degit gzapi-org/agent-fabric/communication/gzcoord/skills/gzcoord-send .claude/skills/gzcoord-send $ npx degit gzapi-org/agent-fabric/identities/roles/db-admin/skills/pg-probe .claude/skills/pg-probe $ npx degit gzapi-org/agent-fabric/identities/roles/fabric-coordinator/skills/adr-authoring .claude/skills/adr-authoring $ npx degit gzapi-org/agent-fabric/identities/roles/flutter-dev/skills/flutter-client-capture .claude/skills/flutter-client-capture $ npx degit gzapi-org/agent-fabric/identities/roles/web-dev/skills/webapp-testing .claude/skills/webapp-testing
Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Agent",
"hooks": [
{
"type": "command",
"command": "f=\"$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/agent-dispatch-guard.sh\"; if [ -f \"$f\" ]; then bash \"$f\"; else printf '%s\\n' '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"ask\",\"permissionDecisionReason\":\"The di"
}
]
},
{
"matcher": "Write|Edit|MultiEdit|NotebookEdit|Bash",
"hooks": [
{
"type": "command",
"command": "f=\"$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/subagent-clone-guard.sh\"; if [ -f \"$f\" ]; then bash \"$f\"; else printf '%s\\n' '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"ask\",\"permissionDecisionReason\":\"The su"
}
]
},
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "f=\"$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/pipe-status-guard.sh\"; [ -f \"$f\" ] && bash \"$f\"; true"
},
{
"type": "command",
"command": "f=\"$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/self-kill-guard.py\"; [ -f \"$f\" ] && python3 \"$f\"; true"
}
]
},
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "f=\"$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/plan-hold.sh\"; [ -f \"$f\" ] && bash \"$f\"; true"
}
]
}
]
}
} Skills (6)
Hooks (13)
| event | matcher | runs |
|---|---|---|
| SessionStart | * | bash "$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/session-start.sh" |
| SessionStart | * | bash "$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/tab-title.sh" |
| SessionStart | * | f="$CLAUDE_PROJECT_DIR/bin/gzcoord-inbox"; [ -x "$f" ] && "$f"; true |
| PostToolUse | Bash | bash "$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/tab-title.sh" |
| PreToolUse | Agent | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/agent-dispatch-guard.sh"; if [ -f "$f" ]; then bash "$f"; else printf '%s\n' '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"ask","permissionDecisionReason":"The di |
| PreToolUse | Write|Edit|MultiEdit|NotebookEdit|Bash | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/subagent-clone-guard.sh"; if [ -f "$f" ]; then bash "$f"; else printf '%s\n' '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"ask","permissionDecisionReason":"The su |
| PreToolUse | Bash | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/pipe-status-guard.sh"; [ -f "$f" ] && bash "$f"; true |
| PreToolUse | Bash | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/self-kill-guard.py"; [ -f "$f" ] && python3 "$f"; true |
| PreToolUse | * | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/plan-hold.sh"; [ -f "$f" ] && bash "$f"; true |
| PreModelSwitch | * | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/model-switch-guard.sh"; if [ -f "$f" ]; then bash "$f"; else printf '%s\n' '{"hookSpecificOutput":{"hookEventName":"PreModelSwitch","permissionDecision":"ask","permissionDecisionReason":"The |
| UserPromptSubmit | * | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/plan-hold.sh"; [ -f "$f" ] && bash "$f"; true |
| SessionEnd | * | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/plan-hold.sh"; [ -f "$f" ] && bash "$f"; true |
| PostModelSwitch | * | f="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/model-fallback-note.sh"; [ -f "$f" ] && bash "$f"; true |
Similar rigs
codeclawd/fable-mode
Run Claude Fable 5 on Opus 4.8 in Claude Code. The Mythos-class model pulled by export controls — brought back as a native agentic distillation (FABLE_CODE.md), measured playbook, verification hooks, and design/MCP/test skills. "Fable 5 Lit
Pragmatist 566 tok ·
shikharshikharshikhar/claude-dotfiles
—
Skill Collector 3.2k tok ·
emoulson/dotfiles-claude
—
Skill Collector 17.3k tok ·
nateberkopec/dotfiles
yup we're doin the thing
YOLO Cowboy 958 tok ·