ship-a-feature

Installation
SKILL.md

Ship a feature (so it ships, not half-ships)

The nine-row definition-of-done already exists — cohesive-feature-delivery in CLAUDE.md. On 2026-09-02 equivalentDisasters went out tested, gated and committed, and failed four of those rows unnoticed: unreachable from every public door, a neighbour's JSDoc silently stolen, no doc, no stability mark. Prose in a 2000-line file does not fire. This does. Every check below names the failure it was written for; nothing here is theory.

1. Before writing — three decisions only you can make

Decision Criterion
Which door? (package.json exports subpath) Free + deterministic → . (src/test.ts). Bills a model → ./eval (paid_ prefix). Hook vocabulary → ./hook. A symbol not re-exported from a door's barrel does not exist to require("vigiles") (failure 1).
Stable or experimental_? STABILITY.md: exported + not stable ⇒ @experimental tag AND experimental_ name. One day old with one consumer is not stable. ESLint local/experimental-name holds tag→name; it cannot write the tag (failure 4).
Where does the WHY live publicly? (document-the-why) A docs/*.md section beside the claim it changes — for equivalentDisasters, next to "blocks 7/7" in docs/compiled-hooks.md. Not the README (brevity), not this file (contributor tier).

Write the answers into the PR body. The script below refuses to pass the stability row until you state it.

Installs
78
Repository
zernie/vigiles
GitHub Stars
15
First Seen
Sep 3, 2026