Implements the decision recorded in #5. Not started — filed so the decision does not rot in a comment.
The gate
bin/check-escalation (following bin/check-surfaces and bin/generate-index), wired into task check, with its own test file:
A skill in the acting set must have an ## Escalation section naming stop conditions and the hand-back mechanism.
Everything else is exempt.
The hard part: defining the acting set
Deliberately not solved here, because the obvious answers are all bad:
Hardcoded list in the script — rots the first time someone adds a skill and does not read the gate.
Content sniffing ("does the SKILL.md tell you to write/deploy/dispatch") — fragile and unfalsifiable.
A new frontmatter flag — #5 rejected new frontmatter, and this would reintroduce it through the back door.
The least-bad candidate is probably deriving it from what a skill tells the model to do: a skill that never instructs a write, a dispatch, or a credential touch is advisory. That needs a real rule, and the rule needs to be checkable, not vibes. Worth solving properly rather than shipping a list.
Starting candidates for the acting set
From a read of the current 41: tdd, atdd, refactoring, gitea-ci, web-shot, playwright, trainer, dream, own-the-task, secret-hygiene, superpowers-executing-plans, superpowers-subagent-driven-development, superpowers-dispatching-parallel-agents.
Read-only or advisory, and should say so explicitly rather than being silently exempt: debug, code-review, cad-babysit, cognitive-load, test-design, grill-me, discovery-framing, stage-gate-review.
Prior art to copy, not reinvent
cad-babysit already has the shape this gate wants — Iron Laws stating what it will never do, plus DECISION NEEDED (question / options / recommendation / blocks) as the named hand-back mechanism. Use it as the reference implementation; every acting skill's section should be as concrete as that one.
Bar
Per #19, each skill's escalation section is per-skill work, not a mechanical edit — a stop condition nobody pressure-tested is a stop condition nobody will hit. Expect one skill at a time, not a batch.
Definition of done
task check fails on an acting skill with no ## Escalation section; every skill in the acting set has one that names both the conditions and the hand-back mechanism; the exempt set says why it is exempt.
Implements the decision recorded in #5. Not started — filed so the decision does not rot in a comment.
## The gate
`bin/check-escalation` (following `bin/check-surfaces` and `bin/generate-index`), wired into `task check`, with its own test file:
- A skill in the **acting set** must have an `## Escalation` section naming stop conditions *and* the hand-back mechanism.
- Everything else is exempt.
## The hard part: defining the acting set
Deliberately not solved here, because the obvious answers are all bad:
- **Hardcoded list in the script** — rots the first time someone adds a skill and does not read the gate.
- **Content sniffing** ("does the SKILL.md tell you to write/deploy/dispatch") — fragile and unfalsifiable.
- **A new frontmatter flag** — #5 rejected new frontmatter, and this would reintroduce it through the back door.
The least-bad candidate is probably deriving it from what a skill *tells the model to do*: a skill that never instructs a write, a dispatch, or a credential touch is advisory. That needs a real rule, and the rule needs to be checkable, not vibes. Worth solving properly rather than shipping a list.
## Starting candidates for the acting set
From a read of the current 41: `tdd`, `atdd`, `refactoring`, `gitea-ci`, `web-shot`, `playwright`, `trainer`, `dream`, `own-the-task`, `secret-hygiene`, `superpowers-executing-plans`, `superpowers-subagent-driven-development`, `superpowers-dispatching-parallel-agents`.
Read-only or advisory, and should say so explicitly rather than being silently exempt: `debug`, `code-review`, `cad-babysit`, `cognitive-load`, `test-design`, `grill-me`, `discovery-framing`, `stage-gate-review`.
## Prior art to copy, not reinvent
`cad-babysit` already has the shape this gate wants — Iron Laws stating what it will never do, plus `DECISION NEEDED` (question / options / recommendation / blocks) as the named hand-back mechanism. Use it as the reference implementation; every acting skill's section should be as concrete as that one.
## Bar
Per #19, each skill's escalation section is per-skill work, not a mechanical edit — a stop condition nobody pressure-tested is a stop condition nobody will hit. Expect one skill at a time, not a batch.
## Definition of done
`task check` fails on an acting skill with no `## Escalation` section; every skill in the acting set has one that names both the conditions and the hand-back mechanism; the exempt set says why it is exempt.
Mechanism shipped in 1d140ec. Issue stays open — 30 of 41 skills still owe a rule, and that is the actual work.
The acting-set problem, solved by deleting it
This issue listed three candidate definitions and rejected all three. The fourth option was not on the list: there is no acting set. Every skill answers the question; a read-only one answers it in a line.
That removes the classification problem entirely, and buys something the gated-subset design could not — "this skill never hands back" stops being an absence and becomes a claim someone can disagree with. Today those two states looked identical.
The ratchet
bin/escalation-pending.txt exempts skills whose rule has not been written yet, because a stop condition nobody thought about is not worth enforcing. It only shrinks, and it is self-cleaning: a listed skill that has a section fails the gate, so an exemption cannot outlive its reason. Mutation-verified — appending a section to tdd while it is still listed turns task check red with "remove it from the list".
Also gated: an entry naming a skill that no longer exists. A stale exemption is how a gate quietly stops covering something.
Eleven written, and they are not rote
The advisory and read-only ones, where the honest answer is short. Worth reading a few, because generic ones would have been worthless:
cognitive-load — stop when the measurement disagrees with the reader's lived experience of the code. A metric that says "fine" about code everyone finds hard is evidence about the metric.
test-design — stop when the tests are fine and the design under test is what makes them awkward. Hard-to-test is a design finding; rewriting the tests around it hides the thing worth knowing.
code-review — stop when the diff is large enough that a review would be a skim, and say so, rather than producing confident coverage of a fraction of it.
grill-me — stop when a round produces no new objection. Interrogation past that point manufactures doubt rather than finding it.
debug — stop when the report has no failure text and no locator: name the artifact you need. This is item 1 of #36, answered here rather than there, and it now agrees with cad-babysit's read-the-log-first rule as that issue asked.
What remains
The 30 in the list are the ones that write files, dispatch agents, touch credentials or move releases — tdd, atdd, refactoring, gitea-ci, web-shot, playwright, trainer, dream, own-the-task, secret-hygiene, the superpowers-* execution cluster, and the rest.
Per #19, one at a time with a pressure test, not a batch. A stop condition nobody tested is a stop condition nobody will hit — and #14 already demonstrated twice that my prediction of what a model needs told me the wrong thing.
cad-babysit remains the reference implementation: Iron Laws stating what it will never do, plus DECISION NEEDED as the named hand-back mechanism. Every remaining section should be that concrete.
Mechanism shipped in `1d140ec`. Issue stays open — 30 of 41 skills still owe a rule, and that is the actual work.
## The acting-set problem, solved by deleting it
This issue listed three candidate definitions and rejected all three. The fourth option was not on the list: **there is no acting set**. Every skill answers the question; a read-only one answers it in a line.
That removes the classification problem entirely, and buys something the gated-subset design could not — "this skill never hands back" stops being an absence and becomes a claim someone can disagree with. Today those two states looked identical.
## The ratchet
`bin/escalation-pending.txt` exempts skills whose rule has not been written yet, because a stop condition nobody thought about is not worth enforcing. It only shrinks, and it is **self-cleaning**: a listed skill that *has* a section fails the gate, so an exemption cannot outlive its reason. Mutation-verified — appending a section to `tdd` while it is still listed turns `task check` red with "remove it from the list".
Also gated: an entry naming a skill that no longer exists. A stale exemption is how a gate quietly stops covering something.
## Eleven written, and they are not rote
The advisory and read-only ones, where the honest answer is short. Worth reading a few, because generic ones would have been worthless:
- **`cognitive-load`** — stop when the measurement disagrees with the reader's lived experience of the code. A metric that says "fine" about code everyone finds hard is evidence about the metric.
- **`test-design`** — stop when the tests are fine and the design under test is what makes them awkward. Hard-to-test is a design finding; rewriting the tests around it hides the thing worth knowing.
- **`code-review`** — stop when the diff is large enough that a review would be a skim, and say so, rather than producing confident coverage of a fraction of it.
- **`grill-me`** — stop when a round produces no new objection. Interrogation past that point manufactures doubt rather than finding it.
- **`debug`** — stop when the report has no failure text and no locator: name the artifact you need. This is item 1 of #36, answered here rather than there, and it now agrees with `cad-babysit`'s read-the-log-first rule as that issue asked.
## What remains
The 30 in the list are the ones that write files, dispatch agents, touch credentials or move releases — `tdd`, `atdd`, `refactoring`, `gitea-ci`, `web-shot`, `playwright`, `trainer`, `dream`, `own-the-task`, `secret-hygiene`, the `superpowers-*` execution cluster, and the rest.
Per #19, one at a time with a pressure test, not a batch. A stop condition nobody tested is a stop condition nobody will hit — and #14 already demonstrated twice that my prediction of what a model needs told me the wrong thing.
`cad-babysit` remains the reference implementation: Iron Laws stating what it will never do, plus `DECISION NEEDED` as the named hand-back mechanism. Every remaining section should be that concrete.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements the decision recorded in #5. Not started — filed so the decision does not rot in a comment.
The gate
bin/check-escalation(followingbin/check-surfacesandbin/generate-index), wired intotask check, with its own test file:## Escalationsection naming stop conditions and the hand-back mechanism.The hard part: defining the acting set
Deliberately not solved here, because the obvious answers are all bad:
The least-bad candidate is probably deriving it from what a skill tells the model to do: a skill that never instructs a write, a dispatch, or a credential touch is advisory. That needs a real rule, and the rule needs to be checkable, not vibes. Worth solving properly rather than shipping a list.
Starting candidates for the acting set
From a read of the current 41:
tdd,atdd,refactoring,gitea-ci,web-shot,playwright,trainer,dream,own-the-task,secret-hygiene,superpowers-executing-plans,superpowers-subagent-driven-development,superpowers-dispatching-parallel-agents.Read-only or advisory, and should say so explicitly rather than being silently exempt:
debug,code-review,cad-babysit,cognitive-load,test-design,grill-me,discovery-framing,stage-gate-review.Prior art to copy, not reinvent
cad-babysitalready has the shape this gate wants — Iron Laws stating what it will never do, plusDECISION NEEDED(question / options / recommendation / blocks) as the named hand-back mechanism. Use it as the reference implementation; every acting skill's section should be as concrete as that one.Bar
Per #19, each skill's escalation section is per-skill work, not a mechanical edit — a stop condition nobody pressure-tested is a stop condition nobody will hit. Expect one skill at a time, not a batch.
Definition of done
task checkfails on an acting skill with no## Escalationsection; every skill in the acting set has one that names both the conditions and the hand-back mechanism; the exempt set says why it is exempt.Mechanism shipped in
1d140ec. Issue stays open — 30 of 41 skills still owe a rule, and that is the actual work.The acting-set problem, solved by deleting it
This issue listed three candidate definitions and rejected all three. The fourth option was not on the list: there is no acting set. Every skill answers the question; a read-only one answers it in a line.
That removes the classification problem entirely, and buys something the gated-subset design could not — "this skill never hands back" stops being an absence and becomes a claim someone can disagree with. Today those two states looked identical.
The ratchet
bin/escalation-pending.txtexempts skills whose rule has not been written yet, because a stop condition nobody thought about is not worth enforcing. It only shrinks, and it is self-cleaning: a listed skill that has a section fails the gate, so an exemption cannot outlive its reason. Mutation-verified — appending a section totddwhile it is still listed turnstask checkred with "remove it from the list".Also gated: an entry naming a skill that no longer exists. A stale exemption is how a gate quietly stops covering something.
Eleven written, and they are not rote
The advisory and read-only ones, where the honest answer is short. Worth reading a few, because generic ones would have been worthless:
cognitive-load— stop when the measurement disagrees with the reader's lived experience of the code. A metric that says "fine" about code everyone finds hard is evidence about the metric.test-design— stop when the tests are fine and the design under test is what makes them awkward. Hard-to-test is a design finding; rewriting the tests around it hides the thing worth knowing.code-review— stop when the diff is large enough that a review would be a skim, and say so, rather than producing confident coverage of a fraction of it.grill-me— stop when a round produces no new objection. Interrogation past that point manufactures doubt rather than finding it.debug— stop when the report has no failure text and no locator: name the artifact you need. This is item 1 of #36, answered here rather than there, and it now agrees withcad-babysit's read-the-log-first rule as that issue asked.What remains
The 30 in the list are the ones that write files, dispatch agents, touch credentials or move releases —
tdd,atdd,refactoring,gitea-ci,web-shot,playwright,trainer,dream,own-the-task,secret-hygiene, thesuperpowers-*execution cluster, and the rest.Per #19, one at a time with a pressure test, not a batch. A stop condition nobody tested is a stop condition nobody will hit — and #14 already demonstrated twice that my prediction of what a model needs told me the wrong thing.
cad-babysitremains the reference implementation: Iron Laws stating what it will never do, plusDECISION NEEDEDas the named hand-back mechanism. Every remaining section should be that concrete.