Releases: summerliuuu/no-no-debug
v1.4.0
Consecutive failure detection
The post_tool_failure.sh hook now tracks recent failures and warns the AI when the same tool fails 2+ times within 5 minutes, with a suggested alternative:
- Grep/Glob →
find+grep -rvia Bash - Read →
lsto verify path first - Browser MCP tools → alternative browser tool or
curl
This directly addresses the #1 error pattern from the first evolution report: ripgrep binary failures caused 77 redundant Grep/Glob calls because the AI had no signal to stop retrying.
Migration from v1.3.0
Just copy the updated script:
cp hooks/post_tool_failure.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/post_tool_failure.shFull changelog: CHANGELOG.md
v1.3.0
Periodic review now actually auto-triggers
Earlier versions promised "auto-triggers every 3 days" but had no enforcement mechanism — the review only ran when manually invoked, and the tracker went stale silently.
Added
hooks/review_reminder.py— newUserPromptSubmithook that checkserror_tracker.mdon each message. If the configured review interval has elapsed (default: 3 days), it outputs a reminder that the AI acts on to start the review cycle. 4-hour cooldown prevents spam. Fails silent on any error.
Fixed
- Mechanism 3 auto-trigger now has an actual enforcement mechanism instead of relying on the AI to spontaneously check the tracker at session start.
Migration from v1.2.0
- Copy the new hook:
cp hooks/review_reminder.py ~/.claude/hooks/ - Add to
UserPromptSubmitin~/.claude/settings.json:{ "type": "command", "command": "python3 $HOME/.claude/hooks/review_reminder.py 2>/dev/null" }
Full changelog: CHANGELOG.md
v1.2.0 — critical hook fix
Critical fix — please upgrade
Earlier releases shipped a settings.json template that referenced environment variables ($CLAUDE_TOOL_NAME / $CLAUDE_USER_PROMPT) that do not exist in Claude Code's hook contract. Hook context is delivered as a JSON payload on stdin. Every previous install has been silently writing empty TOOL_FAIL | failed lines to error_log.md, and the user-correction detector never matched anything.
If you installed v1.0 or v1.1, upgrade now. See CHANGELOG.md for the full migration path.
What's new
Fixed
settings.jsonhook template rewritten to parse stdin JSON correctly- UserPromptSubmit no longer false-triggers on past-work memory injected as
<system-reminder>context (closed-loop pollution) - UserPromptSubmit no longer false-triggers on code blocks / quoted strings that contain a correction phrase
- Python regex
\bword-boundary bug on mixed CJK/ASCII text fixed (replaced with ASCII-only lookarounds) - macOS smart-quote auto-correct (
that's→that's) now matched correctly
Added
hooks/user_prompt_filter.py— standalone Python stdin parser with XML / code-block stripping, smart-quote normalisation, tight second-person pattern listhooks/post_tool_failure.sh— standalone bash stdin parser usingjq, with graceful degradation ifjqis missing- Two new tracked dimensions (18 total):
- Real-env Verification — did you validate with the real production command, or just a sandbox harness?
- Cross-agent Trust — did you independently re-verify another agent's "pass" report?
- Gate 2 strengthened: shell/hook changes must be verified with the exact command string from
settings.json, not a locally-equivalent variant - Gate 3 strengthened: for changes reviewed by a second agent, re-run verification in your own environment — a sandbox pass is not a real-environment pass
Changed
- Mechanism 6 documentation rewritten with stdin JSON contract up-front
- Gate 2 post-edit verification reminder clarified as agent-enforced (it lives in the AI's instructions, not a stateless shell hook)
Migration from v1.1.0
mkdir -p ~/.claude/hooks
cp hooks/user_prompt_filter.py ~/.claude/hooks/
cp hooks/post_tool_failure.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/post_tool_failure.shThen replace the PostToolUseFailure and UserPromptSubmit blocks in ~/.claude/settings.json with the new versions from SKILL.md → Mechanism 6 → Settings.json format.
Optionally clean old noise from ~/.claude/memory/error_log.md — entries like TOOL_FAIL | failed with empty fields came from the broken template and can be safely deleted.
Prerequisites
python3(UserPromptSubmit filter) — ships by default on recent macOS + most Linuxjq(PostToolUseFailure parser) —brew install jqon macOS
Both hooks degrade gracefully if the binary is missing.