Hstack — Testing skill for Claude Code
Twenty-five Claude Code hooks that refuse the agent, and the incident behind each one.
How to install Hstack
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open howardchan2008/hstack and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Hstack does
Twenty-five Claude Code hooks that refuse the agent, and the incident behind each one. Installer, doctor, and a test suite that fails when a guard stops refusing.
Alternatives in Testing
- Claude Codepro — by Max Ritter - Professional development environment for Claude Code with spec-driven workflow, TDD enforcemen 1.6k ★
- Test Full — Run the full test suite across all tox environments with coverage enabled 1.1k ★
- Run Test Suite — Execute Test Suites 185 ★
README
hstack

Thirty-one Claude Code hooks that refuse the agent, and the incident behind each one.
git clone https://github.com/howardchan2008/hstack && cd hstack
./install.sh # copies the hooks, merges settings.json, backs it up first
./doctor.sh # tells you which guards are actually armed
bash tests/run.sh # proves each one still refuses what it exists to refuse
Why this exists
Most Claude Code configurations are about making the agent do more: more agents, more skills, more roles. That is the interesting half and it is well covered.
This is the other half. Every file here exists because an agent did something it should not have, and the fix that worked was a hook that refuses, rather than a line of prose asking it to be careful. Prose in a rules file is advice. A PreToolUse hook is a wall.
The bar for shipping anything here: **it has refused something real.**
The three failures these are built around
**The agent is confident and wrong at the same time.** It reports a merge as deployed, a guard as armed, a directory as empty. Each of those was a real sentence in a real session, and each was false in a way that looked exactly like true. `state-verify-inject.sh` demands a live check before any claim about what a system currently is. `wiring-verify.sh` checks the guards are armed rather than present.
**Cost is invisible at the call site.** Every tool call re-sends the whole conversation, so the bill is calls times context and neither number shows up where the decision is made. One measured window: 3.62 billion cached input tokens read back against roughly 13 million tokens of content actually produced. `probe-dedupe.sh`, `burn-context.sh`, `lane-guard.sh` and `websearch-cache.sh` all attack that from different sides.
**Work vanishes between turns.** A three-part prompt gets its first part answered. An interrupt is treated as a cancel. A session ends with a dirt
Related Skills
Secure Build
Two skills that make AI coding agents secure each feature as they build it — add the defense, write a test pro
Red First Review Skill
Review a PR by measuring which of its own guards its own test suite actually catches. Neutralise each guard, r
Debloat
Retroactive whole-repo bloat removal (spec H-2ii). Scores an existing repo on the deterministic bloat axes, wr
Trigger Doctor
🩺 Behavioral testing for skill triggers — diagnose why a skill never fires (or fires too often), prescribe a
Codex Goal Handoff
Turn a ticket into a verified, deployed PR — wraps OpenAI Codex CLI's /goal Ralph loop with a 4-file durable s
Incident Report Scraper
Windows desktop tool that scrapes every incident from an Angular support portal with Playwright, keeps a chang
Related Agents
Mod Builder
Creates and changes Claude Code mods — plugins of function hooks behind a pane, band, status line, slash comma
Framework Engineer
Framework / self-host implementer persona. Implements an authorized framework-internal atom — plugin scripts,
Regression Test Author
Writes a test that reproduces a bug BEFORE the fix is written. Invoke for every bug. The reproduction test sta