You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make two skill routings mandatory instead of merely instructed
Everything vstack does to route skills is instruction: the SessionStart
digest spells out "any prose you write -> unslop", and the skill
descriptions carry their own triggers. auto-trigger.sh measures that
landing on 12 cases, which is a weaker claim than "always".
claude/hooks/skill-mandate.sh runs on Stop and makes two of them
certain. It reads the transcript for what actually happened — which
files were written, which skills were invoked — and blocks the turn
when a rule went unmet: .md/.mdx requires unslop, .ts/.tsx requires
typescript-best-practices.
Two rules, not twenty. The bar for a third is that the situation is
decidable from a tool call rather than from judgement, and that the
skill is the right answer every single time. A rule right nine times
in ten belongs in the routing block; as a gate it would only teach you
to switch the gate off. It blocks at most twice per session, never
fires inside an active Stop hook, and VSTACK_NO_MANDATE=1 disables it.
Check 27 exercises all seven behaviours in both directions.
Measured first, rather than assumed: --debug-file on the real CLI
reports 73 skills sent and no dropped descriptions at the current
0.016 listing fraction, so there is headroom for mandated routing.
That measurement also confirmed the merged research PR's correction
that Claude Code folds slash commands into skills — 32 user skills
plus 14 legacy commands.
Also in this commit:
The redactor added last commit ate ordinary prose. The session digest
line "TOKENS: never read whole files" came back as "TOKENS: [REDACTED]
read whole files", because matching the name alone is not enough. The
name now only nominates a candidate and the value decides: opaque
enough to be a credential, or left alone. Check 25 gained four prose
controls, which is what the single control line missed.
New check 28: every doc under docs/ must be reachable from another
doc. The merged research handoff was 783 lines nothing linked to. A
link to the containing directory counts, since provenance/README.md
indexes plans/ that way.
The curl and marketplace lanes measured a published install against
local counts, so adding a hook made the matrix red for the correct
reason that it was not pushed yet — unclearable, since preflight gates
the commit. They now measure against the tree they actually installed
and print a note when this checkout is ahead.
verify 30/30, falsifiability 32/32, matrix 22/22, preflight green.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments