{
  "description": "foundry plugin hooks: task/agent tracking, teammate quality gates, tool preprocessing, git push and gh write guards, approval-record writer and self-grant guard, and Bash auto-allow dispatch with audit records",
  "hooks": {
    "PostCompact": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ],
    "PostToolBatch": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/batch-nudge.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/lint-on-save.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/artifact-guard.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/audit-close.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/enforce-audit-header.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "AskUserQuestion"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/enforce-profile-header.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "AskUserQuestion"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/rule-inject.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Agent|Bash"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/approval-guard.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "AskUserQuestion"
      }
    ],
    "PostToolUseFailure": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/audit-close.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/rule-inject.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Agent|Bash"
      }
    ],
    "PreCompact": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/rule-inject.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/agent-router.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Agent"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "statusMessage": "Logging tool",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/rtk-rewrite.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/commit-guard.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/gh-write-guard.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/approval-guard.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Bash|Write|Edit|MultiEdit|NotebookEdit"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/allow-dispatch.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/md-compress.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Edit"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/write-guard.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Edit"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/write-guard.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "Write"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/write-guard.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "NotebookEdit"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/enforce-audit-header.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "AskUserQuestion"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/enforce-profile-header.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "AskUserQuestion"
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "timeout": 15,
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/audit-close.js\"; done; exit 0",
            "timeout": 15,
            "type": "command"
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exit 0; done; echo \"foundry plugin hooks are inactive: Node.js not found on PATH, in /opt/homebrew/bin or in /usr/local/bin; install Node.js\" >&2; exit 1",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "async": true,
            "command": "mkdir -p ~/.claude/state && claude auth status > ~/.claude/state/subscription.json 2>/dev/null",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/commit-guard.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/session-restore.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "clear"
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/audit-close.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/stale-plugin-check.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/rules-check.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/rule-inject.js\"; done; exit 0",
            "type": "command"
          }
        ],
        "matcher": "compact|clear"
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/enforce-audit-header.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/enforce-profile-header.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ],
    "SubagentStart": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "statusMessage": "Tracking agent",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/batch-nudge.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ],
    "SubagentStop": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "statusMessage": "Completing agent",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/batch-nudge.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ],
    "TaskCompleted": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/teammate-quality.js\"; done; exit 0",
            "statusMessage": "Quality gate",
            "type": "command"
          }
        ]
      }
    ],
    "TaskCreated": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ],
    "TeammateIdle": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/teammate-quality.js\"; done; exit 0",
            "statusMessage": "Quality gate",
            "type": "command"
          }
        ]
      }
    ],
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/task-log.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/commit-guard.js\"; done; exit 0",
            "type": "command"
          }
        ]
      },
      {
        "hooks": [
          {
            "command": "for n in node /opt/homebrew/bin/node /usr/local/bin/node; do command -v \"$n\" >/dev/null 2>&1 && exec \"$n\" \"${CLAUDE_PLUGIN_ROOT}/hooks/batch-nudge.js\"; done; exit 0",
            "type": "command"
          }
        ]
      }
    ]
  }
}
