Stats
Actions
Tags
Help us improve
Share bugs, ideas, or general feedback.
From ecc-hooks
Manages session memory, cron jobs, and execution gates. On PreToolUse, blocks or allows tool calls based on cron/exec rules. Logs session events and warns about legacy trust scopes. Runs bash and writes memory files.
6 events · 19 hooks
Safety signals detected in this hook configuration
Where this hook configuration is defined
Defined in hooks/hooks.json
Event handlers and matchers — expand Raw Configuration for the full JSON
*node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/check-debug-code.js"*python3 "${CLAUDE_PLUGIN_ROOT}/scripts/memory-persistence/pre-compact.py"tool == "Bash" && tool_input.command matches "(npm run dev|pnpm( run)? dev|yarn dev|bun run dev)"python3 -c "import sys; print('[Hook] BLOCKED: Dev server must run in tmux for log access', file=sys.stderr); print('[Hook] Use: tmux new-session -d -s dev \"npm run dev\"', file=sys.stderr); print('[Hook] Then: tmux attach -t dev', file=sys.stderr); sys.exit(1)"tool == "Bash" && tool_input.command matches "(npm (install|test)|pnpm (install|test)|yarn (install|test)?|bun (install|test)|cargo build|make|docker|pytest|vitest|playwright)"python3 -c "import os,sys; os.environ.get('TMUX') or (print('[Hook] Consider running in tmux for session persistence', file=sys.stderr), print('[Hook] tmux new -s dev | tmux attach -t dev', file=sys.stderr))"tool == "Bash" && tool_input.command matches "git push"python3 -c "import sys; print('[Hook] Review changes before push...', file=sys.stderr); print('[Hook] Continuing with push (remove this hook to add interactive review)', file=sys.stderr)"tool == "Edit" || tool == "Write"python3 "${CLAUDE_PLUGIN_ROOT}/scripts/strategic-compact/suggest-compact.py"*python3 "${CLAUDE_PLUGIN_ROOT}/scripts/memory-persistence/session-end.py"*python3 "${CLAUDE_PLUGIN_ROOT}/scripts/memory-persistence/evaluate-session.py"tool == "Bash"python3 -c "import sys,json,re; d=sys.stdin.read(); i=json.loads(d) if d.strip() else {}; cmd=i.get('tool_input',{}).get('command',''); out=i.get('tool_output',{}).get('output',''); m=re.search(r'https://github.com/[^/]+/[^/]+/pull/\d+',out) if 'gh pr create' in cmd else None; m and (print(f'[Hook] PR created: {m.group()}',file=sys.stderr), print(f'[Hook] To review: gh pr review {m.group().split("/")[-1]} --repo {m.group().split("/")[3]}/{m.group().split("/")[4]}',file=sys.stderr)); print(d)"tool == "Edit" && tool_input.file_path matches "\\.(ts|tsx|js|jsx)$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/format-js.js"tool == "Edit" && tool_input.file_path matches "\\.(ts|tsx)$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/check-typescript.js"tool == "Edit" && tool_input.file_path matches "\\.(ts|tsx|js|jsx)$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/warn-console-log.js"tool == "Edit" && tool_input.file_path matches "\\.php$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/format-php.js"tool == "Edit" && tool_input.file_path matches "\\.php$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/check-phpstan.js"tool == "Edit" && tool_input.file_path matches "\\.php$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/warn-php-debug.js"tool == "Edit" && tool_input.file_path matches "\\.py$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/format-python.js"tool == "Edit" && tool_input.file_path matches "\\.py$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/check-mypy.js"tool == "Edit" && tool_input.file_path matches "\\.py$"node "${CLAUDE_PLUGIN_ROOT}/scripts/code-quality/warn-python-debug.js"*python3 "${CLAUDE_PLUGIN_ROOT}/scripts/memory-persistence/session-start.py"Share bugs, ideas, or general feedback.
npx claudepluginhub valorvie/custom-skills --plugin ecc-hooks