dspy-optimizer-selection — Claude Code skill: pick a DSPy optimizer
Helps you pick a DSPy optimizer that fits your data and budget, from LabeledFewShot up to GEPA and BetterTogether. Useful when you don't know where to start compiling.
npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a claude-codeWhat dspy-optimizer-selection does
The skill ships a selection matrix: what you need, which optimizer to try first, what to watch out for. Each entry lists its prerequisites. dspy.MIPROv2 wants the dspy[optuna] package installed. A metric passed to dspy.GEPA has to accept five arguments. dspy.BootstrapFinetune only works with a model you can fine-tune, and it needs set_lm().
The workflow runs in order: split data into train and validation, measure the uncompiled program, take the cheapest optimizer that fits, save the compiled result, compare it against the baseline. Escalate only when the gain covers the extra model calls or fine-tuning. Cross-references point to companion skills — dspy-bootstrap-fewshot, dspy-miprov2-optimizer, dspy-gepa-reflective, dspy-simba-optimizer, dspy-better-together.
The skill runs nothing on its own. It reads and writes files, and searches the project with Glob and Grep. Without a held-out validation set there is nothing to compare optimizers on, so set one up first.
What it helps with
- choose a DSPy optimizer for the number of labeled examples you have
- compare MIPROv2, SIMBA and GEPA by model-call cost
- decide when to move from prompt tuning to weight fine-tuning
- record a baseline before compiling the program
- find the right companion skill for a given optimization step
Example prompts for the agent
- I have 60 labeled examples — which DSPy optimizer should I try first?
- Compare MIPROv2 and SIMBA for my program and tell me which is cheaper
- Help me pick an optimizer when prompts have plateaued and the model can be fine-tuned
How to install dspy-optimizer-selection
1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a claude-code2Manually: put the files in place
~/.claude/skills/dspy-optimizer-selection/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/dspy-optimizer-selection/
1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a codex2Manually: put the files in place
.agents/skills/dspy-optimizer-selection/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a cursor2Manually: put the files in place
.cursor/skills/dspy-optimizer-selection/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install OmidZamani/dspy-skills dspy-optimizer-selection2Manually: put the files in place
.github/skills/dspy-optimizer-selection/SKILL.md1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a gemini-cli2Platform CLI
gemini skills install https://github.com/OmidZamani/dspy-skills --path skills/dspy-optimizer-selectionManually: put the files in place
.devin/skills/dspy-optimizer-selection/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about dspy-optimizer-selection
How do I install dspy-optimizer-selection in Claude Code?
Run npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a claude-code. The skill file lands at ~/.claude/skills/dspy-optimizer-selection/SKILL.md.
What does dspy-optimizer-selection do?
It helps you choose or compare DSPy optimizers: LabeledFewShot, BootstrapFewShot, MIPROv2, SIMBA, GEPA, BootstrapFinetune, Ensemble and BetterTogether. Each entry says how much data it suits and what has to be installed first.
Which optimizers need extra dependencies?
dspy.MIPROv2 requires the dspy[optuna] package. dspy.BootstrapFinetune only works with a fine-tunable model and needs a set_lm() call.
Source text
SKILL.md · MIT
--- name: dspy-optimizer-selection version: "1.0.0" dspy-compatibility: "3.2.1" tags: ["optimizer"] requires-extras: [] description: Use to choose or compare DSPy optimizers including LabeledFewShot, BootstrapFewShot, MIPROv2, SIMBA, GEPA, BootstrapFinetune, Ensemble, and BetterTogether. allowed-tools: - Read - Write - Glob - Grep --- # DSPy Optimizer Selection ## Goal Choose the smallest DSPy optimizer that matches the data, budget, and artifact being tuned. Establish a baseline before compiling anything. ## Selection Matrix | Need | Start with | Notes | |------|------------|-------| | Include a few labeled examples | `dspy.LabeledFewShot` | Random labeled demos; useful as a baseline | | About 10 examples | `dspy.BootstrapFewShot` | Teacher-generated demos with metric filtering | | 50+ examples and stronger demo search | `dspy.BootstrapFewShotWithRandomSearch` | Searches multiple demo sets; alias: `dspy.BootstrapRS` | | Per-input nearest demos | `dspy.KNNFewShot` | Retrieves nearby examples before bootstrapping | | Instruction-only hill climbing | `dspy.COPRO` | Coordinate ascent over instructions | | Instruction and demo search | `dspy.MIPROv2` | Bayesian search; install `dspy[optuna]` | | Mini-batch introspective rules or demos | `dspy.SIMBA` | Uses output variability and self-reflection | | Rich textual feedback and trace reflection | `dspy.GEPA` | Metric must accept five arguments | | Distill prompts into model weights | `dspy.BootstrapFinetune` | Requires a fine-tunable LM and `set_lm()` | | Combine candidate programs | `dspy.Ensemble` | Trades inference cost for robustness | | Sequence prompt and weight optimization | `dspy.BetterTogether` | Meta-optimizer for configurable optimizer chains | ## Workflow 1. Split data into train and validation sets. 2. Evaluate the uncompiled program with [dspy-evaluation-suite](../dspy-evaluation-suite/SKILL.md). 3. Start with the least expensive optimizer that matches the need. 4. Save the compiled program and compare it against the baseline. 5. Escalate only when the measured gain justifies extra LM calls, fine-tuning, or inference cost. ## Common Paths ### Fast Demo Optimization Use [dspy-bootstrap-fewshot](../dspy-bootstrap-fewshot/SKILL.md) for the first optimization pass. Move to `BootstrapFewShotWithRandomSearch` when enough examples are available to search multiple demo sets. ### Prompt Search Use [dspy-miprov2-optimizer](../dspy-miprov2-optimizer/SKILL.md) for instruction and demonstration search. Install its optional dependency first: ```bash pip install -U "dspy[optuna]>=3.2.1,<3.3" ``` ### Reflective Optimization Use [dspy-gepa-reflective](../dspy-gepa-reflective/SKILL.md) when failures can be described with actionable text. Use [dspy-simba-optimizer](../dspy-simba-optimizer/SKILL.md) for a smaller mini-batch introspective loop with numeric metrics. ### Prompt Plus Weight Optimization Use [dspy-better-together](../dspy-better-together/SKILL.md) when a fine-tunable LM is available and prompt optimization alone has plateaued. ## Best Practices 1. Keep a held-out validation set. 2. Track optimization cost and inference cost separately. 3. Use reproducible seeds where supported. 4. Avoid claiming one optimizer is universally best; compare measured results. 5. Save intermediate candidates for expensive runs. ## Official Documentation - **Optimizer guide**: https://dspy.ai/learn/optimization/optimizers/ - **Optimizer API index**: https://dspy.ai/api/optimizers/ - **DSPy releases**: https://github.com/stanfordnlp/dspy/releases
© OmidZamani · MIT · OmidZamani/dspy-skills