Most AI coding failures aren’t capability failures — they’re
looking, verification, and
scope failures. The model can spot the blank sidebar item,
the untested handler, the “while I’m here” refactor — it just
doesn’t check. These plugins add the forcing functions that make it check.
Eight plugins. One discipline.
Each adds a hook-backed gate that won’t let a turn end until the work is checked. Silent until you opt in, fails open, kill switch on every one.
visual-quality
A hard quality gate for anything with pixels.
Replaces compile → screenshot → “looks good” → done
with a forced, written review. You don’t get to judge a screen until you’ve transcribed it — then a 12-class
defect sweep, fix, and re-screenshot. A Stop hook blocks the turn if UI changed but was never reviewed.
$ claude plugin install visual-quality
verify-before-done
A clean compile is not verification.
Forces evidence before “done” on any code change. Pick the smallest proof, run it, record the output.
A Stop hook blocks end-of-turn when code was edited but nothing was actually run — no test, no build, no smoke,
no sentinel. “Updated the handler” stops being good enough.
$ claude plugin install verify-before-done
scope-guard
The most expensive edits are the ones nobody asked for.
Keeps an agent in its lane. Declare the narrowest set of files a task may touch, and a PreToolUse hook blocks any
edit outside it — before it happens. No “while I’m here” refactors, no clobbering another
agent’s files on a shared tree. Silent no-op until you opt in.
$ claude plugin install scope-guard
no-stub
Half-written code is not done.
Blocks the turn when an edit leaves placeholders behind — TODO, NotImplementedError,
empty ... bodies, “your code here”. Finish the path, or declare an intentional stub out loud.
Only flags markers in code you just added, and dodges false positives like spreads and type-hint ellipses.
$ claude plugin install no-stub
secret-guard
A secret in source is a secret that’s already leaked.
A PreToolUse hook scans every edit and blocks the write — before it happens — when it carries a real-looking
credential (AKIA…, sk-ant-…, sk_live_…, private-key blocks)
into a tracked source file. .env files, env reads, and placeholders pass straight through.
$ claude plugin install secret-guard
no-slop
“Delve into” is not writing.
The prose complement to no-stub. A Stop hook catches AI-tell slop — “delve into”,
“a testament to”, em-dash pile-ups — in the .md/.txt the model just wrote.
Blocks only on 2+ distinct tells, never on a single stray word, and ignores code.
$ claude plugin install no-slop
no-debug
A console.log in prod is a bug you shipped.
A Stop hook blocks “done” when code you just wrote still has leftover debug noise —
console.log, debugger, pdb.set_trace, binding.pry, dd().
Strip it or promote it to a real logger; console.error/warn and real loggers are left alone.
$ claude plugin install no-debug
no-swallow
A swallowed error is a bug with the lights off.
A Stop hook blocks “done” when code you just wrote swallows an error silently —
except: pass, an empty catch {}, .catch(() => {}).
Handlers that log, re-raise, or return a real fallback are left alone.
$ claude plugin install no-swallow
Add the marketplace once with
claude plugin marketplace add logicleap-labs/claude-plugins,
then restart Claude Code so the hooks load. Disable any time with
claude plugin disable <name>.
Open source. MIT. Yours to read.
The start of a longer project — open-sourcing the tools and techniques behind how I actually use AI to build production software. More plugins and write-ups coming.