Event Hooks
Community

everything-claude-code

7 events · 26 hooks

Install
1
Install the plugin
$
npx claudepluginhub affaan-m/everything-claude-code --plugin everything-claude-code

Want just this hook?

Then install: npx claudepluginhub u/[userId]/[slug]

Risk Indicators
Executes bash commandsModifies filesMatches all tools
Source

Defined in hooks/hooks.json

Configuration
{
  "Stop": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"stop:check-console-log\" \"scripts/hooks/check-console-log.js\" \"standard,strict\""
        }
      ],
      "matcher": "*",
      "description": "Check for console.log in modified files after each response"
    },
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"stop:session-end\" \"scripts/hooks/session-end.js\" \"minimal,standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "*",
      "description": "Persist session state after each response (Stop carries transcript_path)"
    },
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"stop:evaluate-session\" \"scripts/hooks/evaluate-session.js\" \"minimal,standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "*",
      "description": "Evaluate session for extractable patterns"
    },
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"stop:cost-tracker\" \"scripts/hooks/cost-tracker.js\" \"minimal,standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "*",
      "description": "Track token and cost metrics per session"
    }
  ],
  "PreCompact": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:compact\" \"scripts/hooks/pre-compact.js\" \"standard,strict\""
        }
      ],
      "matcher": "*",
      "description": "Save state before context compaction"
    }
  ],
  "PreToolUse": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "npx block-no-verify@1.1.2"
        }
      ],
      "matcher": "Bash",
      "description": "Block git hook-bypass flag to protect pre-commit, commit-msg, and pre-push hooks from being skipped"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/auto-tmux-dev.js\""
        }
      ],
      "matcher": "Bash",
      "description": "Auto-start dev servers in tmux with directory-based session names"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:bash:tmux-reminder\" \"scripts/hooks/pre-bash-tmux-reminder.js\" \"strict\""
        }
      ],
      "matcher": "Bash",
      "description": "Reminder to use tmux for long-running commands"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:bash:git-push-reminder\" \"scripts/hooks/pre-bash-git-push-reminder.js\" \"strict\""
        }
      ],
      "matcher": "Bash",
      "description": "Reminder before git push to review changes"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:write:doc-file-warning\" \"scripts/hooks/doc-file-warning.js\" \"standard,strict\""
        }
      ],
      "matcher": "Write",
      "description": "Doc file warning: warn about non-standard documentation files (exit code 0; warns only)"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:edit-write:suggest-compact\" \"scripts/hooks/suggest-compact.js\" \"standard,strict\""
        }
      ],
      "matcher": "Edit|Write",
      "description": "Suggest manual compaction at logical intervals"
    },
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "bash \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags-shell.sh\" \"pre:observe\" \"skills/continuous-learning-v2/hooks/observe.sh\" \"standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "*",
      "description": "Capture tool use observations for continuous learning"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:insaits-security\" \"scripts/hooks/insaits-security-wrapper.js\" \"standard,strict\"",
          "timeout": 15
        }
      ],
      "matcher": "Bash|Write|Edit|MultiEdit",
      "description": "Optional InsAIts AI security monitor for Bash/Edit/Write flows. Enable with ECC_ENABLE_INSAITS=1. Requires: pip install insa-its"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:governance-capture\" \"scripts/hooks/governance-capture.js\" \"standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "Bash|Write|Edit|MultiEdit",
      "description": "Capture governance events (secrets, policy violations, approval requests). Enable with ECC_GOVERNANCE_CAPTURE=1"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:mcp-health-check\" \"scripts/hooks/mcp-health-check.js\" \"standard,strict\""
        }
      ],
      "matcher": "*",
      "description": "Check MCP server health before MCP tool execution and block unhealthy MCP calls"
    }
  ],
  "SessionEnd": [
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"session:end:marker\" \"scripts/hooks/session-end-marker.js\" \"minimal,standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "*",
      "description": "Session end lifecycle marker (non-blocking)"
    }
  ],
  "PostToolUse": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:bash:pr-created\" \"scripts/hooks/post-bash-pr-created.js\" \"standard,strict\""
        }
      ],
      "matcher": "Bash",
      "description": "Log PR URL and provide review command after PR creation"
    },
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:bash:build-complete\" \"scripts/hooks/post-bash-build-complete.js\" \"standard,strict\"",
          "timeout": 30
        }
      ],
      "matcher": "Bash",
      "description": "Example: async hook for build analysis (runs in background without blocking)"
    },
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:quality-gate\" \"scripts/hooks/quality-gate.js\" \"standard,strict\"",
          "timeout": 30
        }
      ],
      "matcher": "Edit|Write|MultiEdit",
      "description": "Run quality gate checks after file edits"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:edit:format\" \"scripts/hooks/post-edit-format.js\" \"standard,strict\""
        }
      ],
      "matcher": "Edit",
      "description": "Auto-format JS/TS files after edits (auto-detects Biome or Prettier)"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:edit:typecheck\" \"scripts/hooks/post-edit-typecheck.js\" \"standard,strict\""
        }
      ],
      "matcher": "Edit",
      "description": "TypeScript check after editing .ts/.tsx files"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:edit:console-warn\" \"scripts/hooks/post-edit-console-warn.js\" \"standard,strict\""
        }
      ],
      "matcher": "Edit",
      "description": "Warn about console.log statements after edits"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:governance-capture\" \"scripts/hooks/governance-capture.js\" \"standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "Bash|Write|Edit|MultiEdit",
      "description": "Capture governance events from tool outputs. Enable with ECC_GOVERNANCE_CAPTURE=1"
    },
    {
      "hooks": [
        {
          "type": "command",
          "async": true,
          "command": "bash \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags-shell.sh\" \"post:observe\" \"skills/continuous-learning-v2/hooks/observe.sh\" \"standard,strict\"",
          "timeout": 10
        }
      ],
      "matcher": "*",
      "description": "Capture tool use results for continuous learning"
    }
  ],
  "SessionStart": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "bash -lc 'input=$(cat); for root in \"${CLAUDE_PLUGIN_ROOT:-}\" \"$HOME/.claude/plugins/everything-claude-code\" \"$HOME/.claude/plugins/everything-claude-code@everything-claude-code\" \"$HOME/.claude/plugins/marketplace/everything-claude-code\"; do if [ -n \"$root\" ] && [ -f \"$root/scripts/hooks/run-with-flags.js\" ]; then printf \"%s\" \"$input\" | node \"$root/scripts/hooks/run-with-flags.js\" \"session:start\" \"scripts/hooks/session-start.js\" \"minimal,standard,strict\"; exit $?; fi; done; for parent in \"$HOME/.claude/plugins\" \"$HOME/.claude/plugins/marketplace\"; do if [ -d \"$parent\" ]; then candidate=$(find \"$parent\" -maxdepth 2 -type f -path \"*/scripts/hooks/run-with-flags.js\" 2>/dev/null | head -n 1); if [ -n \"$candidate\" ]; then root=$(dirname \"$(dirname \"$(dirname \"$candidate\")\")\"); printf \"%s\" \"$input\" | node \"$root/scripts/hooks/run-with-flags.js\" \"session:start\" \"scripts/hooks/session-start.js\" \"minimal,standard,strict\"; exit $?; fi; fi; done; echo \"[SessionStart] WARNING: could not resolve ECC plugin root; skipping session-start hook\" >&2; printf \"%s\" \"$input\"; exit 0'"
        }
      ],
      "matcher": "*",
      "description": "Load previous context and detect package manager on new session"
    }
  ],
  "PostToolUseFailure": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"post:mcp-health-check\" \"scripts/hooks/mcp-health-check.js\" \"standard,strict\""
        }
      ],
      "matcher": "*",
      "description": "Track failed MCP tool calls, mark unhealthy servers, and attempt reconnect"
    }
  ]
}
Summary
{
  "riskFlags": {
    "touchesBash": true,
    "matchAllTools": true,
    "touchesFileWrites": true
  },
  "typeStats": {
    "command": 26
  },
  "eventStats": {
    "Stop": 4,
    "PreCompact": 1,
    "PreToolUse": 10,
    "SessionEnd": 1,
    "PostToolUse": 8,
    "SessionStart": 1,
    "PostToolUseFailure": 1
  },
  "originCounts": {
    "absolutePaths": 0,
    "pluginScripts": 24,
    "projectScripts": 0
  },
  "timeoutStats": {
    "commandsWithoutTimeout": 15
  }
}
Stats
Stars91562
Forks12015
Last CommitMar 20, 2026

Similar Hooks