Repository navigation
v2.9.10
Use this release, not 2.9.9. The 2.9.9 package on npm was cut from a
feature branch by mistake and also carried unfinished work; it is deprecated.
2.9.10 is the same fix, cut from main.
The Stop hook can be satisfied by the command it prints. In 2.9.8 it could
not: the agent's Bash tool has neither CLAUDE_PLUGIN_DATA nor
CLAUDE_SESSION_ID, so a receipt it wrote landed in <project>/.ds-receipts/
while the hook read the plugin data dir, and the hook blocked every turn for
the rest of the session (#24).
- Receipts are read from every place one can be written: the plugin data
dir, the project, the cwd, and each folder above the edited page. Safe
because a receipt only counts while the page still hashes as it did when
measured. - Only a passing receipt clears a page. A failing gate is a measurement,
not a pass (#27), and a run that printedSKIPPEDmeasured nothing (#25).
The hook now says which:not measuredormeasured, failing. - Only pages are required.
verify_stateson a stylesheet checks zero
elements, so a.css,.tsxor.vueedit no longer blocks. - The printed command is absolute and carries
CLAUDE_PLUGIN_DATA, so it
works from any cwd. A test runs it verbatim and checks the hook clears. measure_renderandaxe_auditfail underDS_REQUIRE_BROWSER=1when
the browser cannot launch or axe-core cannot load, like the other 16 render
gates (#25).axe-core4.10.2 is now a devDependency, so in a clone after
npm installaxe_auditno longer needs the network. A plugin install
still loads it from the CDN. A new guard stubs a failing launch and checks all
17 render gates exit non-zero.- Browser detection sees Linux (
/opt/google/chrome,/usr/bin/google-chrome,
Chromium, anything onPATH), shared by both hooks instead of two copies of
a macOS path list (#26). - Two SKILL.md files had invalid YAML frontmatter (
data-dashboard,
design-screen): an unquoted:in the description. Quoted, and
validate_instruction_surface.pynow rejects the construct (#23).