This is an edit to an existing skill. The Iron Law applies: **NO SKILL WITHOUT A FAILING TEST FIRST** — including edits. So before I commit to "the exact change," let me classify the failure, because that determines the *form* of the fix.

## Classify the failure first

The symptom is "controllers omit the model parameter." That's an **omitted required element** from something the agent already produces (a subagent dispatch call) — not a discipline violation under pressure, and not wrong-shaped output.

Per *Match the Form to the Failure*:

| Baseline failure | Right form |
|---|---|
| Omits a required element from something they already produce | **Structural: REQUIRED field/slot in the template they fill in** |

So the fix is **not** more prose. The skill already *has* a Model Selection section explaining how to *choose* — and choosing isn't the problem. Agents know how to pick a model; they just don't include it. Adding more explanation to that section would be the wrong form. The fix belongs in the **dispatch template** the agent copies, as a required slot.

## (1) The exact change

Find wherever the SDD skill shows the subagent dispatch call/template (the thing controllers copy). Make `model` a non-optional slot in that template, so an omission is visibly an empty blank rather than a forgotten line.

If the current template looks like:

```
Dispatch subagent:
  task: <task description>
  prompt: <prompt>
```

Change it to:

```
Dispatch subagent:
  model: <REQUIRED — choose per Model Selection above; never omit>
  task: <task description>
  prompt: <prompt>
```

I would **not** touch the Model Selection section's explanatory content, and I would **not** add a prohibition like "never forget the model parameter" as floating prose elsewhere — a reminder away from the template is the form that already failed to work.

(Caveat: the above is the *intended* change. I can't finalize the exact diff without reading the actual SDD SKILL.md to see the real template syntax and where it lives. The change goes wherever the copied dispatch artifact is — that's the slot agents fill.)

## (2) Verification plan before deploying

I will not deploy on confidence. Following RED → GREEN → REFACTOR for the edit:

**RED — baseline, confirm the failure exists.** Micro-test first (cheap, fast):
- System prompt = the current full SDD skill (the realistic context).
- User message = a task that requires dispatching a subagent for an independent piece of work.
- **Include the no-guidance control logic:** run the *current* skill as the baseline. If subagents don't actually omit `model` here, there's nothing to fix — stop.
- 5+ reps. Manually read every dispatch the agent produces; count how many include `model`. Don't trust a grep — a template echo or a mention of "model" in prose isn't a populated parameter.

**GREEN — verify the structural change binds.**
- Same setup, swap in the edited skill with the REQUIRED `model` slot.
- 5+ reps. Read every dispatch. Success = `model` populated with a real, deliberately-chosen value in every rep.
- **Variance is a metric:** if reps converge on consistently including a sensibly-chosen model, the slot is binding. If interpretations scatter (some fill it, some leave the placeholder, some drop it again), the form isn't tight enough — tighten before adding words.

**REFACTOR — close loopholes.**
- Look for new failure modes: filling `model` with the placeholder text verbatim, or always defaulting to the expensive model anyway (which would mean the Model Selection guidance, not the slot, is the next problem).
- Re-test until consistent.

**Deploy only after GREEN holds across reps**, then commit and push.

One honest note: this is an omission/structural fix, so micro-tests are the appropriate gate — I'm not treating it as a discipline skill requiring full multi-pressure scenarios. If baseline (RED) shows agents *deliberately* dropping `model` under cost or speed pressure rather than just forgetting, I'd reclassify it as a discipline failure and add a rationalization table — but I'd let the baseline tell me that, not assume it.