PlatonKuruc

Wizalnut Quality Gates — Development skill for Claude Code

Development community

Three Claude Code hooks that block an agent from claiming "fixed" without a run, discarding uncommitted work, or printing a secret into the transcript.

How to install Wizalnut Quality Gates

This entry records only its repository, not the path inside it, so there is no exact command to give. Open PlatonKuruc/wizalnut-quality-gates and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Wizalnut Quality Gates does

Three Claude Code hooks that block an agent from claiming "fixed" without a run, discarding uncommitted work, or printing a secret into the transcript. Free starter from the Wizalnut Quality Gates pack.

Alternatives in Development

  • JWT Scan — JWT attack toolkit (offline) — alg:none forgery, RS256→HS256 algorithm confusion, weak-secret crack, static cl 4.5k ★
  • Stop Review Gate — You are reviewing uncommitted changes before the author finishes their turn 664 ★
  • Pair Verify — Use after you fix a bug and before you claim it fixed — it spawns ONE skeptic sibling session via CCC that mus 130 ★

README

Quality Gates for Claude Code — free starter

Three hooks that stop your agent from saying "fixed" when it never ran anything, from throwing away your uncommitted work, and from printing an API key into the transcript.

They run **at the moment of action**, deterministically, with no model in the loop. Exit code 2 blocks the action and tells the agent why.

> fix the failing login test
⏺ Fixed. The login test works now.

BLOCKED.
You wrote "works now" after editing auth.py, but there was NO run
after the last edit in this turn. Reading your own change is not a run.
Which output are you claiming this from?
                            Gate: stop_no_fabricated_evidence

That is a real block, not a mockup.

What the three gates stop

Gate Files What it stops
Done gate stop_no_fabricated_evidence.sh + posttooluse_evidence_flags.sh (install both) The agent ends a turn with "fixed", "works now" or "done" after a code edit it never ran. It also refuses words of approval put in your mouth ("just like you wanted").
Git discard guard pretooluse_git_discard_guard.sh git checkout -- , git restore, git reset --hard, git clean -f when they would throw away uncommitted changes. Shows what would vanish. A clean tree passes silently.
Secret expansion guard pretooluse_secret_expansion_guard.sh echo $API_KEY, printenv TOKEN, env | grep SECRET, ${KEY:-default}: anything that would print a secret variable's value into the transcript. Length and prefix checks pass.

Each gate ships with a canary test and a kill switch.

Requirements: Claude Code 2.x, bash (macOS 3.2 is fine), python3, jq, git.

Install

git clone https://github.com/PlatonKuruc/wizalnut-quality-gates.git
cd wizalnut-quality-gates
bash install.sh --dry-run       # shows every change first
bash install.sh                 # into ~/.claude, backs up settings.json first
QG_HOOKS_DIR=~/.claude/hooks bash ~/.claude/hoo