model-adaptation
The toolkit's home for what changes about your prompts, skills, and scaffolding
when the underlying model changes — currently the Claude 5 family
(Fable 5 + Mythos 5) succeeding Opus 4.x, plus the cross-vendor DeepSeek
landscape (V4 flash/pro). It advises and audits; it does not
build. skill-writer/skill-review enforce the authoring half, loop-controller
the long-run half, and orchestrator the multi-agent half — this skill is where
the why and the migration checklist live so those enforcement points stay in sync.
Why this skill exists
Model-adaptation guidance is the kind that rots. It's true only relative to a model
generation, it cuts across every skill, and it has no natural owner — so it survives
as scattered asides ("Fable 5 reroutes flagged agents", a stray /effort note) that
drift out of date the moment a new model ships and nobody remembers to reconcile them.
This skill is the single owner. When a new model lands, you update one landscape
table here and re-run the migration audit, instead of hunting the toolkit for stale
assumptions. Everything model-specific is quarantined in the Current landscape
section below; the patterns are written to outlive it.
Source of record: Anthropic's Prompting Claude Fable 5
and Prompting best practices;
for DeepSeek runs, the DeepSeek API docs
and Thinking Mode.
Re-fetch these when a new model generation ships — that's the trigger to update this skill.
The core move: a capability jump means PRUNE, not ADD
The reflex when a stronger model arrives is to write more guidance to exploit it.
That reflex is usually wrong. A skill written for a weaker model is a cast made around
that model's failure modes — enumerated do's and don'ts, rigid templates, anti-laziness
nagging, "show your work" instructions. A stronger model has fewer of those failure
modes, so the cast now constrains rather than supports it, and Anthropic measures
this as a real degradation in output quality, not a wash.
So migration is mostly subtraction:
- A brief instruction now beats an enumeration. Where you once listed every bad
behavior by name ("don't survey options, don't over-explain root causes, don't write
narrating comments…"), one short instruction plus the reason now steers the whole
cluster. Fewer words, better result. (This is why
skill-review's long-standing
anti-pattern — "Excessive MUST / NEVER / ALWAYS without explaining why" in its
audit checklist — was already the right instinct; the newer model rewards it more.)
- Some old instructions now actively backfire. The sharpest example: telling the
model to reproduce, echo, or explain its internal reasoning in the response can trip
a
reasoning_extraction refusal on the Claude 5 family and silently elevate
fallbacks to Opus. A tactic that helped a prior model now costs you the frontier model.
See The refusal landmine below.
- Trust defaults before adding a rule. The migration question is "does the model
already do this well without being told?" If yes, delete the instruction and let the
default carry it. Add scaffolding back only where measured behavior needs it.
The opposite is also true in one direction: long autonomous runs need new
scaffolding the shorter-turn era didn't (async harness, evidence-backed progress, a
send-to-user channel). Subtract the prescription; add the long-run hygiene. See
references/long-run-hygiene.md.
Current landscape (update this section when a new model ships)
This is the only part meant to age. The patterns below it are durable; these facts are not.
| Model |
Role today |
What to know for adaptation |
| Fable 5 |
Frontier (Claude 5 family) |
Long-horizon autonomy (multi-day runs), strong first-shot correctness, dispatches parallel subagents readily, high bug-finding recall. Runs safety classifiers (offensive cyber, bio/life-sciences, frontier-LLM development, reasoning-extraction) → can return stop_reason: "refusal". Adaptive thinking only; no extended-thinking budgets; summarized-only thinking output. |
| Mythos 5 |
Frontier sibling (Claude 5 family) |
Same family, same prompting patterns and refusal behavior as Fable 5. Everything here that says "Fable 5" applies to Mythos 5 unless a future note says otherwise. |
| Opus 4.8 |
Prior baseline and the fallback target |
The model a refused Claude 5 request should reroute to. Prompts/skills tuned for it are the ones this skill helps you prune. |
DeepSeek landscape (cross-vendor entry)
The toolkit also runs under DeepSeek models — the 2026-08-03 deep-dive vendor review
(DV-1–DV-5) was a Freebuff/DeepSeek session, and this is the first vendor this skill
covers besides Anthropic. The aging facts (pricing, model versions, effort mapping)
live in references/deepseek-adaptation.md; the durable shape is here:
| Model |
Role today |
What to know for adaptation |
| deepseek-v4-flash |
Cheap tier |
Non-thinking + thinking modes; tool calls, JSON output, Anthropic-format endpoint (api.deepseek.com/anthropic). Cache-hit input is ~30× cheaper than cache-miss — prompt-cache hits are the dominant cost lever. |
| deepseek-v4-pro |
Top tier |
Same feature set, stronger reasoning; the reasoning-gate tier. 1M context / 384K max output across the family. |
On DeepSeek the capability dial is thinking mode + effort (none/low/high/max;
xhigh and medium both map to high), not a model switch — and the chain of
thought arrives in reasoning_content, a separate channel from the answer. There is
no reasoning_extraction refusal classifier and no Opus fallback: refusals
retry inside the DeepSeek ladder (toggle thinking, switch flash↔pro). Body triggers
that route here but stay out of the description (lint band): "deepseek-reasoner",
"R1", "V4", "thinking mode", "cross-vendor run".
When "the next model" (a Mythos successor, an Opus 5, a DeepSeek V5) arrives:
re-fetch the vendor's current docs, update this table and
references/deepseek-adaptation.md, and run the migration audit at the bottom.
The pattern catalog
Each pattern: what changed, the toolkit move, and where it's enforced so it can't drift.
Depth lives in the two reference files; this is the map.
Bucket A — Authoring hygiene (enforced in skill-writer / skill-review)
| Pattern |
What changed |
The toolkit move |
Enforced in |
| Prune over-prescription |
Prior-model prescription degrades Claude 5 output |
On migration, delete enumerations/rigid templates the model no longer needs; keep the why, drop the MUSTs |
skill-review anti-pattern checklist ("Excessive MUST/NEVER/ALWAYS", "Overly rigid templates") — now flagged as a model-driven re-review trigger, not just static smell |
| Reasoning-extraction refusal |
Telling the model to narrate/echo its reasoning as response text now trips a refusal |
Never instruct "show your thinking / explain your reasoning in the output"; read structured thinking blocks or use a send-to-user tool instead |
skill-review audit checklist (new anti-pattern) → detail in references/refusal-and-fallback.md |
| Brief instruction > enumeration |
One instruction + the reason steers a whole behavior cluster |
Prefer a short "why" over naming every behavior; don't carry the description field's "pushy / over-enumerate" style into behavioral instructions |
skill-review audit checklist ("Excessive MUST/NEVER/ALWAYS" + the prior-model over-prescription trigger); references/long-run-hygiene.md has the drop-in brevity instruction |
| Give the reason, not only the request |
The model connects the task to context better when it knows intent |
Already a scored skill-review rubric dimension ("explains WHY, not just WHAT") — the Claude 5 family rewards it more |
skill-review deep-review rubric |
The one boundary to hold explicit: the "pushy / over-enumerate" philosophy is correct
for the frontmatter description (the trigger slot — you want to over-enumerate
contexts to combat under-triggering) and wrong for the skill body's behavioral
instructions (where over-enumeration is exactly the prescription that degrades the newer
model). Same word, opposite slots. skill-writer and skill-review keep these apart.
Bucket B — Long-running agents (enforced in loop-controller / the loops)
Full drop-in instructions and where each plugs into the 5-part loop contract:
references/long-run-hygiene.md. Summary:
| Pattern |
What changed |
The toolkit move |
| Longer turns by default |
A single request can run minutes; autonomous runs, hours |
Structure harnesses to check asynchronously (scheduled/poll), not block; lengthen timeouts; add progress indicators |
| Ground progress claims |
Long runs can emit fabricated status reports |
Instruct: audit each progress claim against an actual tool result before reporting it (distinct from the anti-gamed-gate rule loops already have) |
| Don't end a turn on a promise |
Deep in a run, the model can say "I'll now run X" with no tool call, or pause to ask when it has enough |
Add a last-paragraph self-check + an autonomous-operation reminder to the loop prompt |
| Context-budget reassurance |
Surfacing a token countdown makes the model prematurely summarize / suggest a new session |
Don't show the model raw budget counts; if you must, add "you have ample context, don't stop" |
| Fresh-context verifier |
Fresh verifiers beat self-critique |
Already covered — loop-controller's GAN / Plan-Generate-Evaluate evaluator is exactly this. Cite it; don't reinvent |
| Send-to-user tool |
Long async agents need to surface verbatim content mid-turn |
Give the agent a client-side send_to_user tool + elicitation language |
| Effort as the primary dial |
Effort trades intelligence/latency/cost; low effort on Claude 5 can beat xhigh on prior models |
Pick effort per task: high default, xhigh for the hardest, medium/low for routine |
Bucket C — Multi-agent coordination (enforced in orchestrator)
| Pattern |
What changed |
The toolkit move |
Enforced in |
| Async, long-lived subagents |
Fable 5 dispatches subagents readily; blocking on the slowest one wastes its strength |
Prefer async orchestrator↔subagent comms and long-lived subagents (cache reuse) over a strict block-on-every-reply relay, where the build allows |
orchestrator coordination rules + its references/workflow-orchestration.md |
| Effort per wave/role |
Effort is the main capability dial, not just the ultracode switch |
Set xhigh for the hardest agent (contracts, adversarial verify), low/medium for routine (docs, mechanical edits) |
orchestrator runtime section |
| Refusal reroute contract |
A flagged agent returns stop_reason: "refusal" and reroutes to Opus 4.8 |
Treat as expected routing; configure the server/client fallback rather than assuming it; note the security-agent implication |
orchestrator + references/refusal-and-fallback.md |
| State the boundaries / don't over-refactor at high effort |
At high effort the model may tidy/refactor beyond the ask, or act when only asked to assess |
When the ask is a question or a "thinking out loud", the deliverable is the assessment — report and stop; scope refactors to the task |
orchestrator coordination rules |
Model & effort tiering (the cost doctrine)
Buckets B and C treat effort as the primary capability dial. This section is the
fuller doctrine — model and effort chosen together, per task, not per project —
and it is canonical here: orchestrator (per-role dispatch and Workflow-mode
stages), loop-controller (Step 6), and use-freellmapi point at this section
rather than restating it.
The principle. Cost leaks when a premium model does bulk work — fan-out
crawls, boilerplate, mechanical edits, first drafts — that a cheaper model in
the same family does just as well. Reserve the top tier for the load-bearing
reasoning: architecture/contract design, adversarial verification, final
synthesis, hard debugging. Two dials on the same call: model (the cheapest
tier that clears the task's quality bar) and effort (low→max; lower it for
routine passes, raise it only for the hardest reasoning). Output tokens cost
~5× input across the Anthropic family, so moving bulk work down a tier and
trimming output dominate every other cost lever.
The provider-relativity rule (load-bearing). One project, one provider
ladder — never mix vendors to save tokens. A project declares its provider
and runs the whole toolkit on that one vendor's ladder:
- Default = Anthropic-native. The ladder is Haiku → Sonnet → Opus → Fable,
plus the effort dial. Read a project's declared provider from
.claude/profile.yaml; absent that, assume Anthropic.
- DeepSeek-native. The ladder is
deepseek-v4-flash → deepseek-v4-pro,
with thinking mode + effort (none/low/high/max) as the dial within each.
Full facts in references/deepseek-adaptation.md.
- The doctrine is a shape — cheapest-that-clears-the-bar for grunt work, top
tier for the reasoning gate — instantiated with whatever single provider the
project actually runs on, staying inside that provider's own ladder.
- FreeLLMAPI is the only multi-provider carve-out (see
use-freellmapi): it
deliberately aggregates free provider tiers behind one endpoint, the scarce
resource is rate/quota rather than dollars, and the aggregation is the ladder.
Task → tier map (the durable part; the priced ladder lives in the reference):
| Task class |
Examples |
Model |
Effort |
| Mechanical / high-volume |
file transforms, migration edits, formatting, lint-fix application, boilerplate, broad research crawl, first drafts |
Haiku, or Sonnet if it needs light reasoning |
low/medium (none on Haiku) |
| Standard implementation |
feature code, test authoring, straightforward role-agent build work |
Sonnet |
medium/high |
| Load-bearing reasoning |
architecture & contract design, adversarial verification / fresh-context evaluator, final synthesis, hard debugging, ambiguity resolution |
Opus or Fable |
high/xhigh (max only when correctness ≫ cost) |
On a DeepSeek project the same map instantiates as: deepseek-v4-flash with
thinking off for mechanical work, flash/pro with thinking on for standard
implementation, deepseek-v4-pro with thinking high/max for load-bearing
reasoning — the two-model family is the ladder.
The optimizer/target split. When one model authors or optimizes an
artifact (a skill, a prompt, a config) that another model then executes
under, tier by role, not just task difficulty: author/optimize/review on
the strong tier, execute/validate on the cheap tier. microsoft/SkillOpt's
cross-model study measured why this is the economical direction — the same
optimized skill gained roughly 2× more on a weaker execution model (more
headroom), so "cheap deployed target + one strong optimizer" beats "strong
everywhere." Detail in references/model-effort-tiering.md.
Guardrails:
- No
effort param on Haiku 4.5 — the API returns a 400. Tier down to
Haiku or dial effort down, not both.
- DeepSeek effort semantics differ. The API maps
xhigh→high and
medium→high; emit none/low/high/max (none = thinking off), and don't
bother with xhigh. Thinking mode ignores temperature/top_p/penalties
(accepted, no effect).
- Don't reflexively
max. On the Claude 5 family high/xhigh is the
sweet spot, and low effort often matches or beats prior-generation
xhigh/max — so low/medium is the correct setting for routine work,
not a compromise.
- Pass
model and effort explicitly on every Agent/Workflow spawn.
Per-agent defaults resolve to the session-start model, which goes stale the
moment the user runs /model — the subagent-model footgun. This deliberately
overrides the Workflow tool's generic "omit opts.model by default" guidance.
- Conciseness ≠ reasoning suppression. Output-trimming (
caveman-style) is
fine; instructing the model to expose its reasoning in the response trips the
reasoning_extraction refusal (see the landmine below).
The priced Anthropic ladder (model IDs, $/1M, effort support), the
billing-surface table, provider-relative instantiation, and the per-consumer
wiring live in references/model-effort-tiering.md — like the Current
landscape table above, its model and pricing facts age; update both when a new
model ships.
Image-proxy model allowlist
use-pxpipe puts an image proxy in front of a session: the bulky, re-sent parts
of every request are rendered into dense PNGs, because image tokens are priced by
pixel area rather than characters. That only works if the model behind the proxy
can actually read the render — and a model that misreads dense glyphs doesn't
error, it produces confident wrong answers from garbled input. Because the
failure is silent, the gate is governed here, in one place, fail-closed:
- Only allowlisted models may sit behind an image proxy. An unlisted or
newly released model defaults to not allowed, no matter how capable it is
otherwise — read fidelity on dense renders is a distinct, measured property.
- A model earns its slot by passing pxpipe's ~20-call glyph sweep — cheap,
minutes of work. Re-run it on every model release, the same trigger that
updates the Current landscape table above.
- This axis is independent of the tiering ladder. A model can be exactly the
right execution tier per the optimizer/target split above and still be barred
from the proxy. Choose model + effort from the tiering doctrine, then check
this allowlist before enabling the proxy — two separate gates.
The current allowlist — which models pass today and their measured read rates —
ages with the model generation, so it lives with the other aging facts in
references/model-effort-tiering.md (Image-proxy allowlist — current
state). use-pxpipe treats that list as its safety gate: it owns the wiring,
this skill owns the policy.
Capability handoff (extract an operating manual)
When a stronger model is leaving the plan — or you want a cheaper model to run
with a stronger model's discipline — extract an operating manual of working
procedures from the strong model and run it as the cheap model's system
prompt. The mechanic is real but bounded: a manual ports discipline, not
capability — the prompt-level cousin of the optimizer/target split above.
The hardened extractor (scripts/extract_operating_manual.py), an
already-extracted manual (references/operating-manual.md, reusable as-is —
on-demand only, never injected into Claude Code sessions), the three
refusal/continuation/framing hardenings, and the corrected cost note live in
references/capability-handoff.md.
Also reach for this section on "fable handoff", "capability handoff",
"model leaving plan", or "model is going away". These triggers live in
the body rather than the description because the description is held under the
950-char lint band — a body hit still routes here once the skill is open.
The refusal landmine (read this even if you read nothing else)
For a toolkit that authors prompts and skills, the highest-consequence change in the
Claude 5 family is a class of instruction that now causes a refusal:
Instructions that tell the model to echo, transcribe, or explain its internal
reasoning as response text can trigger the reasoning_extraction refusal category
on the Claude 5 family, returning stop_reason: "refusal" and silently elevating
fallbacks to Opus 4.8.
The danger is that a skill-authoring toolkit can bake this into every skill it produces
("narrate your reasoning", "show your thinking step by step in the output", "explain your
chain of thought"). If your app needs reasoning visibility, read the structured thinking
blocks from adaptive thinking, or surface progress with a send-to-user tool — never ask
the model to reproduce its reasoning in the response. skill-review now audits for this;
the full mechanics, the other classifier domains (offensive cyber, bio/life-sciences,
frontier-LLM development), and the fallback configuration are in
references/refusal-and-fallback.md.
On DeepSeek the classifier doesn't exist, but the instruction is still wrong.
Thinking mode already emits the chain of thought in reasoning_content (a separate
channel), so asking the model to also narrate its reasoning into the response doubles
output tokens and buries the answer — a cost/quality failure instead of a refusal.
Read reasoning_content (or the harness's structured thinking) when you need the
reasoning; and since there is no Opus fallback on DeepSeek, reroute refusals inside
the DeepSeek ladder (toggle thinking, switch flash↔pro). See
references/deepseek-adaptation.md.
When a new model lands: the migration audit
Run this checklist against an existing skill/harness (or the whole toolkit) on a model change:
- Re-fetch the guide. Pull the vendor's current docs — Anthropic's prompting
guide, or the DeepSeek API docs for a DeepSeek project — and update the Current
landscape table above and the priced ladder in
references/model-effort-tiering.md (models, pricing, effort support all age).
New behaviors = new audit items.
- Subtract first. For each skill, ask per instruction: does the new model already do
this well without being told? If yes, cut it. Rigid templates, anti-laziness nags, and
long enumerations are the first candidates.
- Hunt the refusal landmine. Run the audit recipe in
references/refusal-and-fallback.md — that file owns the canonical grep (don't
inline a variant here; divergent copies of the sweep are exactly the drift this
skill exists to prevent). Every hit that routes reasoning to the response is a
refusal risk — rewrite it.
- Check the long-run scaffolding. For any loop/autonomous skill, confirm the
references/long-run-hygiene.md patterns are wired: evidence-backed progress, the
last-paragraph check, context-budget reassurance, effort selection, send-to-user.
- Check the coordination scaffolding. For the orchestrator, confirm effort-per-wave,
async/long-lived subagents, and the refusal→fallback contract.
- Re-benchmark, don't assume. If the toolkit has evals (
skill-creator), re-run them
with and without the pruned instructions. Keep the cut only if quality holds or improves —
the model updating its own approach on the fly is often better than the old rule.
Reference files
references/deepseek-adaptation.md — the cross-vendor DeepSeek landscape: the
V4 flash/pro family, thinking-mode mechanics (reasoning_content, the
Anthropic-format endpoint, tool-call pass-back), the effort mapping, the
provider-relative tiering instantiation, the image-proxy status, and the audit
additions for DeepSeek runs. Read when a project declares DeepSeek, or when
adapting any skill for DeepSeek execution.
references/refusal-and-fallback.md — the four Claude 5 classifier domains, the
reasoning_extraction landmine in depth (what trips it, the symptom, the fix, how to
audit for it), the stop_reason: "refusal" contract, and server-side vs client-side
fallback to Opus 4.8. Read when a skill gets refused, when writing security-agent
prompts, or when auditing authored skills for the landmine.
references/long-run-hygiene.md — the long-running-agent behavioral patterns with
drop-in instruction text (verbatim from Anthropic where they published it) and where
each plugs into loop-controller's 5-part contract: async turns, evidence-backed
progress, last-paragraph check, context-budget reassurance, the send-to-user tool,
effort tiers, and user-facing readability. Read when authoring or migrating any loop.
references/model-effort-tiering.md — the aging half of the tiering doctrine: the
priced Anthropic ladder (model IDs, $/1M, effort support), the output-token asymmetry
and billing-surface table, provider-relative instantiation, the current image-proxy
allowlist (which models pass the glyph sweep today), and how each consumer
(orchestrator dispatch, Workflow-mode stages, loop-controller Step 6, use-freellmapi,
use-pxpipe) wires the policy in. Read when assigning model+effort to roles/stages/loops,
when enabling the image proxy, or when a new model ships and the ladder needs updating.
1---2name: model-adaptation3description: Adapt prompts, skills, and agent scaffolding when the underlying model changes — currently the Claude 5 family (Fable 5/Mythos 5) vs Opus 4.x, plus the cross-vendor DeepSeek landscape. Stronger models need LESS scaffolding: this skill says what to PRUNE, what backfires (narrating reasoning trips a reasoning_extraction refusal), and what to add for long autonomous runs. Canonical home of the model & effort tiering policy (declared-provider ladder — Anthropic or DeepSeek; FreeLLMAPI carve-out) and the capability-handoff technique — extract an operating manual from a stronger model to run on a cheaper one. Use when migrating a skill to a new model, agents get refused, or picking model/effort per role. Trigger on "migrate to Fable", "Fable 5", "Mythos 5", "deepseek", "model migration", "reasoning_extraction", "tune effort", "model tiering", "long-running agent hygiene", "extract operating manual", "pxpipe", "image proxy".4---56# model-adaptation78> The toolkit's home for **what changes about your prompts, skills, and scaffolding9> when the underlying model changes** — currently the Claude 5 family10> (Fable 5 + Mythos 5) succeeding Opus 4.x, plus the cross-vendor DeepSeek11> landscape (V4 flash/pro). It advises and audits; it does not12> build. `skill-writer`/`skill-review` enforce the authoring half, `loop-controller`13> the long-run half, and `orchestrator` the multi-agent half — this skill is where14> the *why* and the migration checklist live so those enforcement points stay in sync.1516## Why this skill exists1718Model-adaptation guidance is the kind that rots. It's true only relative to a model19generation, it cuts across every skill, and it has no natural owner — so it survives20as scattered asides ("Fable 5 reroutes flagged agents", a stray `/effort` note) that21drift out of date the moment a new model ships and nobody remembers to reconcile them.22This skill is the single owner. When a new model lands, you update **one** landscape23table here and re-run the migration audit, instead of hunting the toolkit for stale24assumptions. Everything model-specific is quarantined in the *Current landscape*25section below; the patterns are written to outlive it.2627Source of record: Anthropic's [Prompting Claude Fable 5](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5)28and [Prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices);29for DeepSeek runs, the [DeepSeek API docs](https://api-docs.deepseek.com/quick_start/pricing/)30and [Thinking Mode](https://api-docs.deepseek.com/guides/thinking_mode/).31Re-fetch these when a new model generation ships — that's the trigger to update this skill.3233## The core move: a capability jump means PRUNE, not ADD3435The reflex when a stronger model arrives is to write *more* guidance to exploit it.36That reflex is usually wrong. A skill written for a weaker model is a cast made around37that model's failure modes — enumerated do's and don'ts, rigid templates, anti-laziness38nagging, "show your work" instructions. A stronger model has fewer of those failure39modes, so the cast now **constrains** rather than supports it, and Anthropic measures40this as a real *degradation* in output quality, not a wash.4142So migration is mostly **subtraction**:4344- **A brief instruction now beats an enumeration.** Where you once listed every bad45 behavior by name ("don't survey options, don't over-explain root causes, don't write46 narrating comments…"), one short instruction plus the *reason* now steers the whole47 cluster. Fewer words, better result. (This is why `skill-review`'s long-standing48 anti-pattern — *"Excessive MUST / NEVER / ALWAYS without explaining why"* in its49 audit checklist — was already the right instinct; the newer model rewards it more.)50- **Some old instructions now actively backfire.** The sharpest example: telling the51 model to reproduce, echo, or explain its internal reasoning *in the response* can trip52 a **`reasoning_extraction` refusal** on the Claude 5 family and silently elevate53 fallbacks to Opus. A tactic that helped a prior model now costs you the frontier model.54 See *The refusal landmine* below.55- **Trust defaults before adding a rule.** The migration question is "does the model56 already do this well without being told?" If yes, delete the instruction and let the57 default carry it. Add scaffolding back only where measured behavior needs it.5859The opposite is also true in one direction: long *autonomous* runs need **new**60scaffolding the shorter-turn era didn't (async harness, evidence-backed progress, a61send-to-user channel). Subtract the prescription; add the long-run hygiene. See62`references/long-run-hygiene.md`.6364## Current landscape (update this section when a new model ships)6566This is the *only* part meant to age. The patterns below it are durable; these facts are not.6768| Model | Role today | What to know for adaptation |69|---|---|---|70| **Fable 5** | Frontier (Claude 5 family) | Long-horizon autonomy (multi-day runs), strong first-shot correctness, dispatches parallel subagents readily, high bug-finding recall. Runs safety classifiers (offensive cyber, bio/life-sciences, frontier-LLM development, reasoning-extraction) → can return `stop_reason: "refusal"`. Adaptive thinking only; no extended-thinking budgets; summarized-only thinking output. |71| **Mythos 5** | Frontier sibling (Claude 5 family) | Same family, same prompting patterns and refusal behavior as Fable 5. Everything here that says "Fable 5" applies to Mythos 5 unless a future note says otherwise. |72| **Opus 4.8** | Prior baseline **and the fallback target** | The model a refused Claude 5 request should reroute to. Prompts/skills tuned for it are the ones this skill helps you prune. |7374### DeepSeek landscape (cross-vendor entry)7576The toolkit also runs under DeepSeek models — the 2026-08-03 deep-dive vendor review77(DV-1–DV-5) was a Freebuff/DeepSeek session, and this is the first vendor this skill78covers besides Anthropic. The aging facts (pricing, model versions, effort mapping)79live in `references/deepseek-adaptation.md`; the durable shape is here:8081| Model | Role today | What to know for adaptation |82|---|---|---|83| **deepseek-v4-flash** | Cheap tier | Non-thinking + thinking modes; tool calls, JSON output, Anthropic-format endpoint (`api.deepseek.com/anthropic`). Cache-hit input is ~30× cheaper than cache-miss — prompt-cache hits are the dominant cost lever. |84| **deepseek-v4-pro** | Top tier | Same feature set, stronger reasoning; the reasoning-gate tier. 1M context / 384K max output across the family. |8586On DeepSeek the capability dial is **thinking mode + effort** (`none/low/high/max`;87`xhigh` and `medium` both map to `high`), not a model switch — and the chain of88thought arrives in `reasoning_content`, a separate channel from the answer. There is89**no `reasoning_extraction` refusal classifier** and **no Opus fallback**: refusals90retry inside the DeepSeek ladder (toggle thinking, switch flash↔pro). Body triggers91that route here but stay out of the description (lint band): **"deepseek-reasoner"**,92**"R1"**, **"V4"**, **"thinking mode"**, **"cross-vendor run"**.9394When "the next model" (a Mythos successor, an Opus 5, a DeepSeek V5) arrives:95re-fetch the vendor's current docs, update this table **and**96`references/deepseek-adaptation.md`, and run the *migration audit* at the bottom.9798## The pattern catalog99100Each pattern: what changed, the toolkit move, and where it's enforced so it can't drift.101Depth lives in the two reference files; this is the map.102103### Bucket A — Authoring hygiene (enforced in `skill-writer` / `skill-review`)104105| Pattern | What changed | The toolkit move | Enforced in |106|---|---|---|---|107| **Prune over-prescription** | Prior-model prescription degrades Claude 5 output | On migration, delete enumerations/rigid templates the model no longer needs; keep the *why*, drop the MUSTs | `skill-review` anti-pattern checklist (*"Excessive MUST/NEVER/ALWAYS"*, *"Overly rigid templates"*) — now flagged as a **model-driven** re-review trigger, not just static smell |108| **Reasoning-extraction refusal** | Telling the model to narrate/echo its reasoning as response text now trips a refusal | Never instruct "show your thinking / explain your reasoning in the output"; read structured `thinking` blocks or use a send-to-user tool instead | `skill-review` audit checklist (new anti-pattern) → detail in `references/refusal-and-fallback.md` |109| **Brief instruction > enumeration** | One instruction + the reason steers a whole behavior cluster | Prefer a short "why" over naming every behavior; don't carry the *description* field's "pushy / over-enumerate" style into *behavioral* instructions | `skill-review` audit checklist (*"Excessive MUST/NEVER/ALWAYS"* + the prior-model over-prescription trigger); `references/long-run-hygiene.md` has the drop-in brevity instruction |110| **Give the reason, not only the request** | The model connects the task to context better when it knows intent | Already a scored `skill-review` rubric dimension (*"explains WHY, not just WHAT"*) — the Claude 5 family rewards it more | `skill-review` deep-review rubric |111112The one boundary to hold explicit: the **"pushy / over-enumerate"** philosophy is correct113for the frontmatter `description` (the trigger slot — you *want* to over-enumerate114contexts to combat under-triggering) and **wrong** for the skill body's behavioral115instructions (where over-enumeration is exactly the prescription that degrades the newer116model). Same word, opposite slots. `skill-writer` and `skill-review` keep these apart.117118### Bucket B — Long-running agents (enforced in `loop-controller` / the loops)119120Full drop-in instructions and where each plugs into the 5-part loop contract:121**`references/long-run-hygiene.md`**. Summary:122123| Pattern | What changed | The toolkit move |124|---|---|---|125| **Longer turns by default** | A single request can run minutes; autonomous runs, hours | Structure harnesses to check **asynchronously** (scheduled/poll), not block; lengthen timeouts; add progress indicators |126| **Ground progress claims** | Long runs can emit *fabricated* status reports | Instruct: audit each progress claim against an actual tool result before reporting it (distinct from the anti-*gamed-gate* rule loops already have) |127| **Don't end a turn on a promise** | Deep in a run, the model can say "I'll now run X" with no tool call, or pause to ask when it has enough | Add a last-paragraph self-check + an autonomous-operation reminder to the loop prompt |128| **Context-budget reassurance** | Surfacing a token countdown makes the model prematurely summarize / suggest a new session | Don't show the model raw budget counts; if you must, add "you have ample context, don't stop" |129| **Fresh-context verifier** | Fresh verifiers beat self-critique | **Already covered** — `loop-controller`'s GAN / Plan-Generate-Evaluate evaluator is exactly this. Cite it; don't reinvent |130| **Send-to-user tool** | Long async agents need to surface verbatim content mid-turn | Give the agent a client-side `send_to_user` tool + elicitation language |131| **Effort as the primary dial** | Effort trades intelligence/latency/cost; low effort on Claude 5 can beat xhigh on prior models | Pick effort per task: `high` default, `xhigh` for the hardest, `medium`/`low` for routine |132133### Bucket C — Multi-agent coordination (enforced in `orchestrator`)134135| Pattern | What changed | The toolkit move | Enforced in |136|---|---|---|---|137| **Async, long-lived subagents** | Fable 5 dispatches subagents readily; blocking on the slowest one wastes its strength | Prefer async orchestrator↔subagent comms and long-lived subagents (cache reuse) over a strict block-on-every-reply relay, where the build allows | `orchestrator` coordination rules + its `references/workflow-orchestration.md` |138| **Effort per wave/role** | Effort is the main capability dial, not just the ultracode switch | Set `xhigh` for the hardest agent (contracts, adversarial verify), `low`/`medium` for routine (docs, mechanical edits) | `orchestrator` runtime section |139| **Refusal reroute contract** | A flagged agent returns `stop_reason: "refusal"` and reroutes to Opus 4.8 | Treat as expected routing; **configure** the server/client fallback rather than assuming it; note the security-agent implication | `orchestrator` + `references/refusal-and-fallback.md` |140| **State the boundaries / don't over-refactor at high effort** | At high effort the model may tidy/refactor beyond the ask, or act when only asked to assess | When the ask is a question or a "thinking out loud", the deliverable is the assessment — report and stop; scope refactors to the task | `orchestrator` coordination rules |141142## Model & effort tiering (the cost doctrine)143144Buckets B and C treat *effort* as the primary capability dial. This section is the145fuller doctrine — **model and effort chosen together, per task, not per project** —146and it is canonical here: `orchestrator` (per-role dispatch and Workflow-mode147stages), `loop-controller` (Step 6), and `use-freellmapi` point at this section148rather than restating it.149150**The principle.** Cost leaks when a premium model does bulk work — fan-out151crawls, boilerplate, mechanical edits, first drafts — that a cheaper model in152the same family does just as well. Reserve the top tier for the load-bearing153reasoning: architecture/contract design, adversarial verification, final154synthesis, hard debugging. Two dials on the same call: `model` (the cheapest155tier that clears the task's quality bar) and `effort` (`low`→`max`; lower it for156routine passes, raise it only for the hardest reasoning). Output tokens cost157~5× input across the Anthropic family, so moving bulk work down a tier and158trimming output dominate every other cost lever.159160**The provider-relativity rule (load-bearing).** One project, one provider161ladder — never mix vendors to save tokens. A project *declares* its provider162and runs the whole toolkit on that one vendor's ladder:163164- **Default = Anthropic-native.** The ladder is Haiku → Sonnet → Opus → Fable,165 plus the effort dial. Read a project's declared provider from166 `.claude/profile.yaml`; absent that, assume Anthropic.167- **DeepSeek-native.** The ladder is `deepseek-v4-flash` → `deepseek-v4-pro`,168 with thinking mode + effort (`none/low/high/max`) as the dial within each.169 Full facts in `references/deepseek-adaptation.md`.170- **The doctrine is a shape** — cheapest-that-clears-the-bar for grunt work, top171 tier for the reasoning gate — instantiated with whatever single provider the172 project actually runs on, staying inside that provider's own ladder.173- **FreeLLMAPI is the only multi-provider carve-out** (see `use-freellmapi`): it174 deliberately aggregates free provider tiers behind one endpoint, the scarce175 resource is rate/quota rather than dollars, and the aggregation *is* the ladder.176177**Task → tier map** (the durable part; the priced ladder lives in the reference):178179| Task class | Examples | Model | Effort |180|---|---|---|---|181| **Mechanical / high-volume** | file transforms, migration edits, formatting, lint-fix application, boilerplate, broad research crawl, first drafts | Haiku, or Sonnet if it needs light reasoning | low/medium (none on Haiku) |182| **Standard implementation** | feature code, test authoring, straightforward role-agent build work | Sonnet | medium/high |183| **Load-bearing reasoning** | architecture & contract design, adversarial verification / fresh-context evaluator, final synthesis, hard debugging, ambiguity resolution | Opus or Fable | high/xhigh (max only when correctness ≫ cost) |184185On a DeepSeek project the same map instantiates as: `deepseek-v4-flash` with186thinking off for mechanical work, flash/pro with thinking on for standard187implementation, `deepseek-v4-pro` with thinking high/max for load-bearing188reasoning — the two-model family *is* the ladder.189190**The optimizer/target split.** When one model *authors or optimizes* an191artifact (a skill, a prompt, a config) that another model then *executes192under*, tier by **role**, not just task difficulty: author/optimize/review on193the strong tier, execute/validate on the cheap tier. microsoft/SkillOpt's194cross-model study measured why this is the economical direction — the same195optimized skill gained roughly **2× more** on a weaker execution model (more196headroom), so "cheap deployed target + one strong optimizer" beats "strong197everywhere." Detail in `references/model-effort-tiering.md`.198199**Guardrails:**200201- **No `effort` param on Haiku 4.5** — the API returns a 400. Tier down to202 Haiku *or* dial effort down, not both.203- **DeepSeek effort semantics differ.** The API maps `xhigh`→`high` and204 `medium`→`high`; emit `none/low/high/max` (`none` = thinking off), and don't205 bother with `xhigh`. Thinking mode ignores `temperature`/`top_p`/penalties206 (accepted, no effect).207- **Don't reflexively `max`.** On the Claude 5 family `high`/`xhigh` is the208 sweet spot, and `low` effort often matches or beats prior-generation209 `xhigh`/`max` — so `low`/`medium` is the correct setting for routine work,210 not a compromise.211- **Pass `model` and `effort` explicitly on every Agent/Workflow spawn.**212 Per-agent defaults resolve to the *session-start* model, which goes stale the213 moment the user runs `/model` — the subagent-model footgun. This deliberately214 overrides the Workflow tool's generic "omit `opts.model` by default" guidance.215- **Conciseness ≠ reasoning suppression.** Output-trimming (`caveman`-style) is216 fine; instructing the model to expose its reasoning in the response trips the217 `reasoning_extraction` refusal (see the landmine below).218219The priced Anthropic ladder (model IDs, $/1M, effort support), the220billing-surface table, provider-relative instantiation, and the per-consumer221wiring live in **`references/model-effort-tiering.md`** — like the *Current222landscape* table above, its model and pricing facts age; update both when a new223model ships.224225## Image-proxy model allowlist226227`use-pxpipe` puts an image proxy in front of a session: the bulky, re-sent parts228of every request are rendered into dense PNGs, because image tokens are priced by229pixel area rather than characters. That only works if the model behind the proxy230can actually *read* the render — and a model that misreads dense glyphs doesn't231error, it produces **confident wrong answers from garbled input**. Because the232failure is silent, the gate is governed here, in one place, fail-closed:233234- **Only allowlisted models may sit behind an image proxy.** An unlisted or235 newly released model defaults to *not allowed*, no matter how capable it is236 otherwise — read fidelity on dense renders is a distinct, measured property.237- **A model earns its slot by passing pxpipe's ~20-call glyph sweep** — cheap,238 minutes of work. Re-run it on every model release, the same trigger that239 updates the *Current landscape* table above.240- **This axis is independent of the tiering ladder.** A model can be exactly the241 right execution tier per the optimizer/target split above and still be barred242 from the proxy. Choose model + effort from the tiering doctrine, then check243 this allowlist before enabling the proxy — two separate gates.244245The current allowlist — which models pass today and their measured read rates —246ages with the model generation, so it lives with the other aging facts in247**`references/model-effort-tiering.md`** (*Image-proxy allowlist — current248state*). `use-pxpipe` treats that list as its safety gate: it owns the wiring,249this skill owns the policy.250251## Capability handoff (extract an operating manual)252253When a stronger model is leaving the plan — or you want a cheaper model to run254with a stronger model's discipline — extract an **operating manual of working255procedures** from the strong model and run it as the cheap model's system256prompt. The mechanic is real but bounded: a manual ports *discipline*, not257*capability* — the prompt-level cousin of the optimizer/target split above.258The hardened extractor (`scripts/extract_operating_manual.py`), an259already-extracted manual (`references/operating-manual.md`, reusable as-is —260on-demand only, never injected into Claude Code sessions), the three261refusal/continuation/framing hardenings, and the corrected cost note live in262**`references/capability-handoff.md`**.263264Also reach for this section on **"fable handoff"**, **"capability handoff"**,265**"model leaving plan"**, or **"model is going away"**. These triggers live in266the body rather than the description because the description is held under the267950-char lint band — a body hit still routes here once the skill is open.268269## The refusal landmine (read this even if you read nothing else)270271For a toolkit that **authors** prompts and skills, the highest-consequence change in the272Claude 5 family is a class of instruction that now causes a **refusal**:273274> Instructions that tell the model to **echo, transcribe, or explain its internal275> reasoning as response text** can trigger the `reasoning_extraction` refusal category276> on the Claude 5 family, returning `stop_reason: "refusal"` and silently elevating277> fallbacks to Opus 4.8.278279The danger is that a skill-authoring toolkit can bake this into *every* skill it produces280("narrate your reasoning", "show your thinking step by step in the output", "explain your281chain of thought"). If your app needs reasoning visibility, read the structured `thinking`282blocks from adaptive thinking, or surface progress with a send-to-user tool — never ask283the model to reproduce its reasoning in the response. `skill-review` now audits for this;284the full mechanics, the other classifier domains (offensive cyber, bio/life-sciences,285frontier-LLM development), and the fallback configuration are in286**`references/refusal-and-fallback.md`**.287288**On DeepSeek the classifier doesn't exist, but the instruction is still wrong.**289Thinking mode already emits the chain of thought in `reasoning_content` (a separate290channel), so asking the model to also narrate its reasoning into the response doubles291output tokens and buries the answer — a cost/quality failure instead of a refusal.292Read `reasoning_content` (or the harness's structured thinking) when you need the293reasoning; and since there is no Opus fallback on DeepSeek, reroute refusals inside294the DeepSeek ladder (toggle thinking, switch flash↔pro). See295`references/deepseek-adaptation.md`.296297## When a new model lands: the migration audit298299Run this checklist against an existing skill/harness (or the whole toolkit) on a model change:3003011. **Re-fetch the guide.** Pull the vendor's current docs — Anthropic's prompting302 guide, or the DeepSeek API docs for a DeepSeek project — and update the *Current303 landscape* table above **and the priced ladder in304 `references/model-effort-tiering.md`** (models, pricing, effort support all age).305 New behaviors = new audit items.3062. **Subtract first.** For each skill, ask per instruction: *does the new model already do307 this well without being told?* If yes, cut it. Rigid templates, anti-laziness nags, and308 long enumerations are the first candidates.3093. **Hunt the refusal landmine.** Run the **audit recipe** in310 `references/refusal-and-fallback.md` — that file owns the canonical grep (don't311 inline a variant here; divergent copies of the sweep are exactly the drift this312 skill exists to prevent). Every hit that routes reasoning to the *response* is a313 refusal risk — rewrite it.3144. **Check the long-run scaffolding.** For any loop/autonomous skill, confirm the315 `references/long-run-hygiene.md` patterns are wired: evidence-backed progress, the316 last-paragraph check, context-budget reassurance, effort selection, send-to-user.3175. **Check the coordination scaffolding.** For the orchestrator, confirm effort-per-wave,318 async/long-lived subagents, and the refusal→fallback contract.3196. **Re-benchmark, don't assume.** If the toolkit has evals (`skill-creator`), re-run them320 with and without the pruned instructions. Keep the cut only if quality holds or improves —321 the model updating its own approach on the fly is often better than the old rule.322323## Reference files324325- `references/deepseek-adaptation.md` — the cross-vendor DeepSeek landscape: the326 V4 flash/pro family, thinking-mode mechanics (`reasoning_content`, the327 Anthropic-format endpoint, tool-call pass-back), the effort mapping, the328 provider-relative tiering instantiation, the image-proxy status, and the audit329 additions for DeepSeek runs. Read when a project declares DeepSeek, or when330 adapting any skill for DeepSeek execution.331- `references/refusal-and-fallback.md` — the four Claude 5 classifier domains, the332 `reasoning_extraction` landmine in depth (what trips it, the symptom, the fix, how to333 audit for it), the `stop_reason: "refusal"` contract, and server-side vs client-side334 fallback to Opus 4.8. Read when a skill gets refused, when writing security-agent335 prompts, or when auditing authored skills for the landmine.336- `references/long-run-hygiene.md` — the long-running-agent behavioral patterns with337 drop-in instruction text (verbatim from Anthropic where they published it) and where338 each plugs into `loop-controller`'s 5-part contract: async turns, evidence-backed339 progress, last-paragraph check, context-budget reassurance, the send-to-user tool,340 effort tiers, and user-facing readability. Read when authoring or migrating any loop.341- `references/model-effort-tiering.md` — the aging half of the tiering doctrine: the342 priced Anthropic ladder (model IDs, $/1M, effort support), the output-token asymmetry343 and billing-surface table, provider-relative instantiation, the current image-proxy344 allowlist (which models pass the glyph sweep today), and how each consumer345 (orchestrator dispatch, Workflow-mode stages, loop-controller Step 6, use-freellmapi,346 use-pxpipe) wires the policy in. Read when assigning model+effort to roles/stages/loops,347 when enabling the image proxy, or when a new model ships and the ladder needs updating.