$npx -y skills add gtrabanco/agentic-workflow --skill design-featureTurn an idea or a feature request into an exhaustive, checkable product definition — the stage before engineering planning. The core mechanism is capability closure: a checklist that forces every entity, capability, and role a feature introduces to be walked to its full surfa
| 1 | # Design Feature |
| 2 | |
| 3 | Product definition — the stage that turns an idea or a feature request into an |
| 4 | exhaustive, checkable set of acceptance criteria, before any engineering |
| 5 | planning happens. **Docs only — no code, no branch.** |
| 6 | |
| 7 | ## Turn contract — verify before ending the turn |
| 8 | |
| 9 | ``` |
| 10 | ✓ The Product half of the SPEC is filled (Context, Business goals, Scope, |
| 11 | Capability closure, Expectation sweep, Tooling, Product decisions, Deferred |
| 12 | decisions) OR a `NEEDS_INPUT` question is pending — never a half-filled |
| 13 | section left silently incomplete |
| 14 | ✓ Every Capability closure row resolves to a filled surface (UI + API + test) |
| 15 | or an explicit `n/a: <reason>` — a blank row is not a valid end state |
| 16 | ✓ Integration closure walked the capability inventory (`docs/CAPABILITIES.md`, |
| 17 | or the derived inventory when the project has none) with one resolved row |
| 18 | per subsystem — zero subsystems skipped; every capability's role matrix |
| 19 | lists EVERY inventory role as `allowed`/`denied` |
| 20 | ✓ The Expectation sweep table is present and fully resolved (≥ 10 rows M/L, |
| 21 | ≥ 5 XS/S; each `in-scope`/`out-of-scope`/`deferred` with a pointer) — an |
| 22 | enumerated expectation left unresolved is not a valid end state |
| 23 | ✓ Interview questions (when any were needed) went out ONE per turn — never a |
| 24 | batched round |
| 25 | ✓ `## Design status` is set to `designed` only when the Spec-lint product |
| 26 | boxes all tick (closure complete included) — otherwise it stays |
| 27 | `not designed` and the turn reports the failed boxes |
| 28 | ✓ The roadmap row's status is set to `defined` in lockstep with `designed` |
| 29 | (added at `idea` first if it didn't exist) — never `defined` with an |
| 30 | incomplete closure, never `designed` with the roadmap row left at `idea` |
| 31 | ✓ Upsert discipline honored: an existing SPEC/decisions.md was re-read first; |
| 32 | nothing recorded there was destroyed; revisions were appended, not overwritten |
| 33 | ✓ Artifact language: explicit user instruction > the project's declared docs |
| 34 | language > English. The CONVERSATION language never decides — a Spanish |
| 35 | prompt still produces an English SPEC/decisions unless one of the first two |
| 36 | says otherwise |
| 37 | ✓ The closing `→ Next:` block is printed as the ABSOLUTE last output |
| 38 | ``` |
| 39 | |
| 40 | About to end the turn with any box unchecked? The turn is NOT done — complete |
| 41 | the missing box first (weak models drop end-of-document duties; this list is |
| 42 | first on purpose). |
| 43 | |
| 44 | ## When to use |
| 45 | |
| 46 | - A rough idea, no issue yet, and no SPEC: `design-feature "<idea>"`. |
| 47 | - An existing feature slug whose SPEC is not yet marked `designed`: |
| 48 | `design-feature <NN-slug>`. |
| 49 | - Revising an already-designed feature's product definition: |
| 50 | `design-feature <NN-slug> "<change>"` (instruction mode), or bare |
| 51 | `design-feature <NN-slug>` for review mode (see *Interaction & upsert*). |
| 52 | - `plan-feature` redirects here automatically when it detects an undesigned |
| 53 | feature — you don't have to notice the gap yourself. |
| 54 | |
| 55 | ## Step 0 — Discover the project (always first) |
| 56 | |
| 57 | Per the |