Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add OmidZamani/dspy-skills --skill dspy-optimizer-selection -a claude-code
Open on GitHub

What 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-code

2Manually: put the files in place

~/.claude/skills/dspy-optimizer-selection/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/dspy-optimizer-selection/

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

Similar skills

All skills for AI and ML →

From the same set7

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor