distill
/distill: the smallest faithful contract
Every skill named here is required. When a step names one (/name), invoke it with the Skill tool at that step and follow it in full. Working from memory of a skill is not following it.
A contract is any promise your system makes that someone relies on: an API shape, a schema, an invariant, an error code, a request grammar, a config key, a process rule. A consumer is anyone who relies on it: a caller, a client team, the next maintainer.
Software work runs in two loops. The inner loop is implement, review, fix. It converges only when the contract under the code is right. When review keeps finding new problems in the same area, you rarely have that many separate bugs. You have one wrong contract producing many symptoms, and every symptom-level fix adds code for the next pass to flag. Distill is the outer loop, where you question the contracts themselves.
One criterion decides every proposal:
Change a contract when the change shrinks the system's total description: the machinery that implements the contract, plus the theory a consumer must hold to use it.