never-twicelisted
Install: claude install-skill Vivswan/skills
# Never Twice
> Categorically eliminate the problem (through better architecture or a better choice of data structures) so the failure class cannot recur, instead of fixing its instances one at a time.
Every correction and every repeated failure gets the most durable response reachable:
| Rung | Response | What the class can still do | Preference |
| --- | --- | --- | --- |
| 1 | better architecture or data structures | cannot recur | the goal |
| 2 | a lint rule or test in CI | recurs, but cannot land | acceptable |
| 3 | a skill or written rule | recurs, but the next agent knows | fallback |
| 4 | human vigilance | anything | avoid |
The ladder is not a menu. Preference decays exponentially down it: rung 1 is the goal, rung 2 a clearly weaker but acceptable gate, rungs 3 and 4 each another large step down, taken only when every higher rung is genuinely unreachable.
And a rung-3 or rung-4 landing is a **debt**, not a resolution: when a higher rung becomes reachable, convert the rule or vigilance entry up the ladder.
## Rung 1: the class cannot recur
An event enum keeps outgrowing the roster that dispatches on it:
```ts
// Fix 1 shipped Event.Deleted's missing entry. Fix 2 shipped
// Event.Archived's, plus a guard. Both read as complete:
handlers[Event.Archived] = onArchived;
assert(Object.keys(handlers).length === EVENT_COUNT); // fires at runtime, after the hole ships
```
```ts
// Rung 1: the roster is total, so the hole cannot be built:
const handlers: Record<Even