Stats
Actions
Tags
From build-loop
Runs multiple cleanup and state-finalization scripts on session stop, plus pre-edit architecture checks before Write/Edit tool calls. Executes bash and Python scripts, modifies files.
4 events · 22 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
if [ -n "$CLAUDE_TRANSCRIPT_PATH" ]; then nohup python3 "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/scripts/scan_transcript_for_decisions.py" --workdir "$CLAUDE_PROJECT_DIR" --transcript "$CLAUDE_TRANSCRIPT_PATH" --log-file "${XDG_STATE_HOME:-$HOME/.local/state}/build-loop/scan.log" </dev/null >/dev/null 2>&1 & fi; printf '{}'5000msif [ -n "$CLAUDE_TRANSCRIPT_PATH" ]; then root="${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}"; nohup env PYTHONPATH="$root/scripts" python3 -m scan_corrections --workdir "$CLAUDE_PROJECT_DIR" --transcript "$CLAUDE_TRANSCRIPT_PATH" --source stop-hook </dev/null >/dev/null 2>&1 & fi; printf '{}'5000mspython3 "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/scripts/state_finalize.py" --workdir "$CLAUDE_PROJECT_DIR" --mark-incomplete-as-crashed </dev/null >/dev/null 2>&1; printf '{}'2000msroot="${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}"; hook="$root/scripts/hooks/stop_finalize.sh"; if [ -x "$hook" ]; then "$hook"; else printf '{}'; fi30000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/closeout.sh" stop 2>/dev/null; exit 06000msif [ -f "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/scripts/commit_state_check.py" ]; then python3 "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/scripts/commit_state_check.py" --workdir "${CLAUDE_PROJECT_DIR}" --hook; else printf '{}'; fi5000msEdit|Writebash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/pre-edit-architecture.sh" >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/pre-edit-rally-point.sh"; exit 02000msBashroot="${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}"; hook="$root/scripts/hooks/pre_bash_dispatch.sh"; if [ -x "$hook" ]; then "$hook"; else printf '{}'; fi9000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/pre-edit-rally-point.sh"; exit 02000msBash[ -f .build-loop/state.json ] || exit 0; python3 -c "import json,sys; s=json.load(open('.build-loop/state.json')); p7=s.get('phases',{}).get('fact_check',{}).get('completed',False); active=s.get('active',False); sys.exit(0 if (not active or p7) else 1)" 2>/dev/null && exit 0; echo "$TOOL_INPUT" | grep -qE '\b(git\s+push|npm\s+publish|vercel\s+deploy|gh\s+release)\b' && echo 'Build loop Phase 7 (fact-check) has not completed. Run fact-check before deploying.'; exit 03000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/post-push-closeout.sh" </dev/null >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-architecture.sh" </dev/null >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-retrieval.sh" </dev/null >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-rally-point.sh" </dev/null 2>/dev/null; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-worktree-gc.sh" </dev/null >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-git-hooks.sh" </dev/null >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-plugin-drift.sh" </dev/null >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-plugin-heal.sh" </dev/null >/dev/null 2>&1; exit 02000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-memory.sh" </dev/null >/dev/null 2>&1; exit 06000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/session-start-closeout.sh" </dev/null >/dev/null 2>&1; exit 03000msbash "${CLAUDE_PLUGIN_ROOT:-$CLAUDE_PROJECT_DIR}/hooks/closeout.sh" session-start </dev/null 2>/dev/null; exit 03000msnpx claudepluginhub tyroneross/build-loop --plugin build-loop