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
3
Repository
zernie/vigiles
GitHub Stars
15
First Seen
7 days ago
ship-a-feature — zernie/vigiles