“He’s now baking the model + effort + spawn/fork decision into a skill’s front matter at authoring time, so no runtime inference is spent picking a model — pure signal-to-noise optimization.” — Session notes, 2026-06-18

Session context: 2026-06-18_Mastermind — Lou described his model-effort-optimized agentic writing team and the protocol shift that emerged from it: every skill now declares its own model, effort level, and spawn/fork behavior in frontmatter — decided once, at authoring time, by the human who understands the tradeoffs.

Core Idea

Every AI workflow that involves multiple steps has a latent model-selection problem. Which model runs this step? How much effort does it get? Does it spawn a sub-agent or run inline? Without explicit decisions at authoring time, these questions are answered implicitly — usually badly, by whichever default the runtime happened to set.

The default is almost never optimal. A creative-writing step that gets assigned Haiku low-effort because the pipeline defaulted there will underperform. A simple JSON validation step that inherits Opus max-effort from the parent is wasting money on reasoning the task doesn’t need.

Lou’s protocol shift: declare the model, effort level, and spawn/fork decision in the skill’s frontmatter — not in the body, not in the runtime, but at authoring time, by the person who understands what each step is doing. In practice this means a frontmatter line like:

model: opus-4.7
effort: high
spawn: true

The consequence is that no runtime inference is spent figuring out the right configuration. The skill arrives already configured. When the pipeline runs, it reads the declaration and routes accordingly. Pure signal-to-noise optimization.

This is the skill-level application of Insight - Model Altitude — Route Model and Effort by Workflow Step, Not by Whole Artifact: the altitude decision is made step-by-step, but it’s made once, deliberately, by the author — not guessed on every invocation by a routing layer.

The asymmetry of who knows what: the author of a skill knows what kind of reasoning it needs, what quality bar it needs to hit, and whether it can tolerate a sub-agent round-trip. The runtime doesn’t know any of this unless you tell it. Declaring at authoring time moves the decision to the person with the most information.

Practical Application

Audit your current skills for implicit model selection. If a skill doesn’t specify a model, it’s using whatever the caller’s default is — which is probably Sonnet, probably at medium effort. For each step: does Sonnet actually match what this step needs? Most authors will find two or three mismatches immediately.

Add a three-field header to every skill. Even informal:

  • model: — the specific model this skill is designed for (not “the best model” — the one whose behavior you’re designing around)
  • effort: — low / normal / high
  • spawn: — true if this skill should run in a forked context and return a clean output; false if it should run inline

Work backwards from quality requirements. “Anything with your name and face on it, stick with 4.7.” The model declaration should reflect the quality bar, not the cost preference. Optimize cost by routing lower steps to Sonnet, not by ratcheting down the model on the output steps that matter most.

Coaching question: “Pick one skill you use regularly. Do you know which model runs it? Do you know what effort level it uses? If not, you’re leaving configuration to chance.”

Evolution Across Sessions

Insight - Effort Can’t Buy Reasoning — The Model Sets the Ceiling, Effort Sets the Depth established that effort and model are separate dials that must both be set correctly. Insight - Model Altitude — Route Model and Effort by Workflow Step, Not by Whole Artifact established that the routing should happen at the step level. This insight adds the operational mechanism: the declaration lives in frontmatter, authored once, and travels with the skill. The next development: multi-skill pipelines where each skill declares independently, and an orchestrator respects those declarations rather than imposing its own defaults.