down-skilling/SKILL.md
Distill Opus-level reasoning into optimized instructions for Haiku 4.5 (and Sonnet). Generates explicit, procedural prompts with n-shot examples that maximize smaller model performance on a given task. Use when user says "down-skill", "distill for Haiku", "optimize for Haiku", "make this work on Haiku", "generate Haiku instructions", or needs to delegate a task to a smaller model with high reliability.
npx skillsauth add oaustegard/claude-skills down-skillingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Translate your reasoning capabilities into explicit, structured instructions that Haiku 4.5 can execute reliably. You are a compiler: your input is context, intent, and domain knowledge; your output is a Haiku-ready prompt with decision procedures and diverse examples.
Opus infers from WHY. Haiku executes from WHAT and HOW.
Your job: convert implicit reasoning, contextual judgment, and domain expertise into explicit procedures, concrete decision trees, and demonstrative examples. Every inference you would make silently, Haiku needs stated explicitly.
Opus input costs ~6× Haiku input. A task that costs $1.00 on Opus costs ~$0.17 on Haiku — but only if Haiku gets it right on the first try. One retry wipes the savings; two retries makes Haiku more expensive.
The math that matters:
What this means for prompt design:
Bottom line: Every example that prevents a Haiku misfire saves 5-25× its input cost in wasted output tokens. Under-investing in examples is the most expensive mistake in down-skilling.
When triggered, perform these steps:
Extract task context from the conversation: what is the user trying to accomplish? What domain knowledge applies? What quality criteria matter?
Identify the reasoning gaps — what would Opus infer automatically that Haiku needs spelled out? Common gaps:
Generate the distilled prompt following the structure in Prompt Architecture
Generate 4-7 diverse examples following the principles in Example Design — this is the highest-leverage step
Audit your example set before delivering. Two checks, both must pass:
If either check fails, regenerate the offending examples before delivering. Examples beat rules; misaligned examples beat aligned rules.
Deliver the complete Haiku-ready prompt as a copyable artifact or file, including system prompt and user prompt components as appropriate
Structure every distilled prompt with these components in this order. Haiku responds best to this specific sequencing:
<role>
[Single sentence: who Haiku is and what it does]
</role>
<task>
[2-3 sentences: the specific task, its purpose, and the deliverable]
</task>
<rules>
[Numbered list of explicit constraints. Be precise about:]
- Output format (JSON schema, markdown structure, etc.)
- Length bounds (word/token counts, not vague "brief"/"detailed")
- Required elements (must-include fields or sections)
- Prohibited behaviors (specific failure modes to avoid)
- Decision rules for ambiguous cases
</rules>
<process>
[Numbered steps. Maximum 7 steps. Each step is one action.]
[Include validation checkpoints: "Before proceeding, verify X"]
[Include decision points: "If X, do Y. If Z, do W."]
</process>
<examples>
[4-7 diverse examples showing input → output pairs]
[This section should be the LARGEST part of the prompt]
[See Example Design section for distribution requirements]
</examples>
<context>
[Task-specific data, reference material, or domain knowledge]
[Use labels: [Context], [Policy], [Reference]]
</context>
Apply these when generating any Haiku-targeted prompt:
Examples are the single highest-leverage investment in a Haiku prompt. Rules tell Haiku what to do; examples show it what "done right" looks like. When rules and examples conflict, Haiku follows the examples. When rules are ambiguous, Haiku extrapolates from examples. This makes examples the primary steering mechanism — not a supplement to rules, but the dominant signal.
Given the economics (see Economics), you should invest heavily here. A prompt with 800 tokens of rules and 3,000 tokens of examples will outperform one with 2,000 tokens of rules and 500 tokens of examples almost every time.
Generate 4-7 diverse examples per distilled prompt. Fewer than 4 is under-investing. The marginal cost of each example is negligible compared to the reliability improvement. Use this distribution:
| # | Role | Purpose | |---|------|---------| | 1 | Typical case | The most common, straightforward input. Establishes the baseline pattern. | | 2 | Second typical variant | A different but common input — varies length, domain, or structure from #1. Prevents Haiku from over-fitting to a single pattern. | | 3 | Edge case | Unusual but valid input: empty fields, very long text, special characters, boundary conditions, ambiguous phrasing. | | 4 | Negative case (tagged BAD/GOOD pair) | For tasks where Haiku could output something plausible-but-wrong (rewriting, summarization, NL→command, anything that rewards confident specificity), include an example pair tagged "BAD output:" and "GOOD output:" that demonstrates the specific failure mode you want to prevent for this task — invented architecture details, invented CLI flags, invented numbers, etc. A generic "bad output" example is much less effective than one that names the failure category Haiku is most likely to fall into. | | 5+ | Tricky/boundary cases | Inputs near decision boundaries where Haiku is most likely to fail. The cases you'd use for a test suite. |
Why the second typical case matters: With only one typical example, Haiku may latch onto incidental features of that example (its length, word choice, domain). A second typical case from a different angle shows Haiku which features are task-relevant and which are coincidental.
<example>
<input>
[Realistic input data — use real-world length and complexity]
</input>
<output>
[Exact format Haiku should produce — not a description, the actual output]
</output>
<reasoning>
[1-2 sentences: WHY this output is correct. Which rules applied.
What Haiku might have gotten wrong without this example.]
</reasoning>
</example>
The <reasoning> tag is not optional for complex tasks. It acts as
a chain-of-thought anchor, showing Haiku the reasoning pattern to follow.
For classification and extraction tasks, reasoning should reference the
specific rule numbers that drive the decision.
Some tasks (rewriting, summarization, voice/register editing, explanation-from-source) take inputs where the source content is itself abstract — marketing copy, vague descriptions, high-level summaries. These tasks are uniquely prone to a failure mode where Haiku invents concrete details that sound right for the domain but aren't in the source.
Symptom: an output that confidently mentions specifics — algorithm names, technology choices, percentile numbers, version comparisons — not present in the input.
Fix: include an example pair where the input is genuinely abstract and the output explicitly acknowledges what is unspecified, rather than filling the gap with plausible-sounding inferences. Pattern:
<example>
<input>
"We're excited to release our new search backend. We think it's a
massive upgrade over the old one."
</input>
<output>
New search backend released. The announcement does not specify the
underlying changes — whether they affect indexing, ranking, query
parsing, or operational characteristics is not stated. Migration
guidance will follow. The old search path remains available during
transition.
</output>
<reasoning>
The source provides only one factual claim ("released") and one
unverifiable claim ("upgrade"). The output stays at the source's
level of abstraction and explicitly names the categories of
information the source omits, rather than inventing plausible
specifics (algorithm changes, performance numbers, technology names).
</reasoning>
</example>
Pair this with the tagged BAD/GOOD negative example (row 4 in the distribution table above) that demonstrates the exact invention you want to prevent. On a voice-rewrite task, switching from un-anchored examples to this pattern dropped Haiku's architectural-hallucination rate from 95% to 0% (n=25 across two probes).
| Task processing... | Recommended example budget | |---------------------|---------------------------| | Short inputs (<500 tokens) | 1,500-2,500 tokens of examples (4-5 examples) | | Medium inputs (500-4K tokens) | 2,500-4,000 tokens of examples (4-6 examples) | | Long inputs (4K-8K tokens) | 3,000-5,000 tokens of examples (5-7 examples) |
These budgets assume Haiku's 200K context window. The constraint is diminishing returns, not cost — after 7 examples the marginal benefit drops sharply unless the task has a very large classification space.
Present the distilled prompt in a code block or artifact with clear section markers. Include:
When generating for API use, include the model parameter and recommended settings:
model: claude-haiku-4-5-20251001
max_tokens: [appropriate for task]
temperature: 0 (for deterministic tasks) or 0.3 (for creative tasks)
The skill includes two directories of granular reference files. Do NOT read them all. Scan the index below, then read only the files relevant to the current task.
Each file documents one reasoning pattern where Haiku diverges from Opus, with a tested mitigation strategy. Read 2-4 per task.
| File | Use when the task involves... |
|------|------|
| ambiguity-resolution.md | Input that has multiple valid interpretations; vague user requests |
| code-generation.md | Generating code, scripts, or queries; style matching to existing code |
| comparative-analysis.md | Comparing options, pros/cons, tradeoff analysis |
| conditional-logic.md | Decision trees, branching rules, nested if/then logic |
| context-utilization.md | Long context windows, documents >2K tokens, position-sensitive info |
| counting-enumeration.md | "Generate exactly N items", counting occurrences, list lengths |
| creative-generation.md | Writing, tone adaptation, persona consistency, style matching |
| implicit-constraints.md | Tasks where tone, audience, or format norms are assumed not stated |
| instruction-density.md | Tasks requiring 8+ simultaneous constraints; complex rule sets |
| multi-hop-reasoning.md | 3+ step inference chains; cause-effect-consequence analysis |
| multi-turn-consistency.md | Chatbot behavior, stateful conversations, persona maintenance |
| negation-handling.md | Constraints phrased as "don't", "never", "avoid"; prohibitions |
| nuanced-classification.md | Borderline cases, multi-label classification, overlapping categories |
| output-calibration.md | Length control, format precision, verbosity management (ALWAYS read) |
| parallel-consistency.md | Generating multiple similar items; lists where format must be uniform |
| partial-information.md | Missing fields, incomplete input, optional data, error states |
| schema-adherence.md | Structured output (JSON, tables) that must survive edge-case inputs |
| self-correction.md | Tasks needing verification; quality checks before output |
| summarization-fidelity.md | Summarizing documents without distortion, position bias, or fabrication |
| tool-use-planning.md | Multi-tool workflows, API orchestration, dependency ordering |
Complete before/after distillations. Each shows an Opus-level task → Haiku-optimized prompt with annotated examples. Read 1-2 closest to the current task domain.
| File | Use when distilling... |
|------|------|
| api-orchestration.md | Multi-step tool/API workflows with dependencies and branching |
| code-review-triage.md | Analysis tasks with severity classification and structured JSON output |
| content-moderation.md | Safety-critical classification with "when uncertain" defaults |
| creative-rewriting.md | Tone adaptation, audience-aware rewriting, style transfer |
| data-extraction.md | Schema-bound extraction from unstructured text to JSON |
| document-qa.md | RAG / retrieval-grounded QA with citation and "not found" handling |
| email-summarization.md | Information extraction from conversations/threads into sections |
| meeting-notes.md | Transcript processing into decisions, actions, and next steps |
| resume-screening.md | Multi-criteria evaluation with parallel scoring structure |
| sql-generation.md | Natural language to code with schema constraints and error handling |
| step-by-step-analysis.md | Multi-step analytical reasoning with explicit decision rubrics |
| text-classification.md | Multi-label classification with confidence and ambiguity handling |
Before delivering, verify the distilled prompt against these criteria:
<reasoning> tags explain WHY each example output is correcttesting
Disciplined, validation-gated revision of an EXISTING skill so each edit is a measured improvement rather than a guess. Use when editing, revising, or tuning a skill that already exists and there is evidence it underperforms (observed failures, drift, complaints) — invoke by name, or have versioning-skills / creating-skill defer to it before applying edits. Not for authoring a brand-new skill from scratch (use creating-skill) or one-off prose.
development
Skill-aware orchestration with context routing. Decomposes complex tasks into skill-typed subtasks, extracts targeted context subsets, executes subagents in parallel, and synthesizes results. Self-answers trivial lookups inline. No SDK dependency — uses raw HTTP via httpx. Use when tasks require multiple analytical perspectives, when context is large and subtasks only need portions, or when orchestrating-agents spawns too many redundant subagents.
tools
Orchestrates parallel API instances, delegated sub-tasks, and multi-agent workflows with streaming and tool-enabled delegation patterns. Use for parallel analysis, multi-perspective reviews, or complex task decomposition.
development
Invokes Google Gemini models for structured outputs, image generation, multi-modal tasks, and Google-specific features. Use when users request Gemini, image generation, structured JSON output, Google API integration, or cost-effective parallel processing.