Skip to content

Releases: summerliuuu/no-no-debug

v1.4.0

07 May 10:01

Choose a tag to compare

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 -r via Bash
  • Read → ls to 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.sh

Full changelog: CHANGELOG.md

v1.3.0

07 May 08:35

Choose a tag to compare

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 — new UserPromptSubmit hook that checks error_tracker.md on 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

  1. Copy the new hook:
    cp hooks/review_reminder.py ~/.claude/hooks/
  2. Add to UserPromptSubmit in ~/.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

16 Apr 15:02

Choose a tag to compare

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.json hook 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 \b word-boundary bug on mixed CJK/ASCII text fixed (replaced with ASCII-only lookarounds)
  • macOS smart-quote auto-correct (that'sthat'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 list
  • hooks/post_tool_failure.sh — standalone bash stdin parser using jq, with graceful degradation if jq is 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.sh

Then 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 Linux
  • jq (PostToolUseFailure parser) — brew install jq on macOS

Both hooks degrade gracefully if the binary is missing.