~ / rigs / gzapi-org / agent-fabric

gzapi-org/agent-fabric

Control plane for the agents working on sibling repositories: identities, roles, memory, model routing, messaging.

↗ GitHub ★ 0 apache-2.0 updated 7d ago project Claude Code
share on X
ARCHETYPE
Automator
Hooks on every lifecycle event: format, lint, notify, log.
CONTEXT TAX · EVERY TURN
~3.8k tokens
Moderate · 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 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)

eventmatcherruns
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
PostToolUseBashbash "$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/tab-title.sh"
PreToolUseAgentf="$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
PreToolUseWrite|Edit|MultiEdit|NotebookEdit|Bashf="$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
PreToolUseBashf="$CLAUDE_PROJECT_DIR/runtime/claude-code/hooks/pipe-status-guard.sh"; [ -f "$f" ] && bash "$f"; true
PreToolUseBashf="$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

copied ✓