ADR 0013 — Declare what a skill needs, and make a degraded run say so
ga · floor-software-engineer
Decision
Declare what a skill needs, and make a degraded run say so
Why
A skill that describes its dependencies in prose branches in the reader, not in a program. Worse, the two-tier prose model means the skill silently produces a smaller, differently-grounded answer when a connector is missing and the output looks identical either way. So: declare against a closed vocabulary, decide with a pure total function, and make a degraded run owe a sentence naming what is missing and what the answer therefore does not contain. Four verdicts rather than three, because unknown is not absent -- fold unknown into absent and every skill refuses on a session that never probed; fold it into present and the silent degradation returns wearing a green verdict.
Measured
92 skills on the populated floors. Case-insensitive grep for integration names makes the repository's most-mentioned integration outreach at 15 hits, all of them the English noun; box gets 11, mostly Box plot. 15 skills carry the ALWAYS/SUPERCHARGED box in prose. The tier is upstream's, not ours: academy.claude.com badges each connector required-or-Optional, and joining name to badge across its 57 Connect-your-tools pages gives Google Drive 24 required against 11 optional, Slack 18 against 3, GitHub 6 against 4. First real run found two bugs in the implementation, both wrong in the safe-looking direction.
Inputs and outputs
This decision declares none. Every name in this section, when present, resolves against the capability vocabulary or the floor registry -- a typo fails the generator rather than rendering.
Where it is
| Floor | floor-software-engineer |
| Stage | ga |
| Pull request | akwlabs-ai/akw-factory-floors#7 |
| Routed | 2026-09-02 |
| Id | 9a3fff4e1fad5e6e |