skill-perfection
Use this skill when you need to QA audit and fix a plugin skill file. Provides a methodology for verifying skill content against…
Use for MIPROv2, Bayesian optimization, instruction and demo tuning, and high-performance DSPy program optimization.
Claude Code
$ npx -y skills add OmidZamani/dspy-skills --skill dspy-miprov2-optimizer --agent claude-code
Codex
$ npx skills add OmidZamani/dspy-skills --skill dspy-miprov2-optimizer -a codex -y
Cursor
$ npx skills add OmidZamani/dspy-skills --skill dspy-miprov2-optimizer -a cursor -y
Gemini CLI
$ npx skills add OmidZamani/dspy-skills --skill dspy-miprov2-optimizer -a gemini-cli -y
GitHub Copilot
$ npx skills add OmidZamani/dspy-skills --skill dspy-miprov2-optimizer -a github-copilot -y
OpenCode
$ npx skills add OmidZamani/dspy-skills --skill dspy-miprov2-optimizer -a opencode -y
Windsurf
$ npx skills add OmidZamani/dspy-skills --skill dspy-miprov2-optimizer -a windsurf -y
name: dspy-miprov2-optimizer version: "1.0.0" dspy-compatibility: "3.2.1" tags: ["optimizer"] requires-extras: ["dspy[optuna]"] description: Use for MIPROv2, Bayesian optimization, instruction and demo tuning, and high-performance DSPy program optimization. allowed-tools: - Read - Write - Glob - Grep
Jointly optimize instructions and few-shot demonstrations using Bayesian Optimization for maximum performance.
| Input | Type | Description | |-------|------|-------------| | `program` | `dspy.Module` | Program to optimize | | `trainset` | `list[dspy.Example]` | 200+ training examples | | `metric` | `callable` | Evaluation function | | `auto` | `str` | "light", "medium", or "heavy" | | `num_trials` | `int` | Optimization trials (40+) |
| Output | Type | Description | |--------|------|-------------| | `compiled_program` | `dspy.Module` | Fully optimized program |
Install the optional Optuna dependency before using MIPROv2:
pip install -U "dspy[optuna]>=3.2.1,<3.3"
1. **Bootstrap** - Generate candidate demonstrations 2. **Propose** - Create grounded instruction candidates 3. **Search** - Bayesian optimization over combinations
import dspy
from dspy.teleprompt import MIPROv2
lm = dspy.LM('openai/gpt-4o-mini')
dspy.configure(lm=lm)class RAGAgent(dspy.Module):
def __init__(self):
self.retrieve = dspy.Retrieve(k=3)
self.generate = dspy.ChainOfThought("context, question -> answer")
def forward(self, question):
context = self.retrieve(question).passages
return self.generate(context=context, question=question)from dspy.teleprompt import MIPROv2
optimizer = MIPROv2(
metric=dspy.evaluate.answer_exact_match,
auto="medium", # Balanced optimization
num_threads=24
)
compiled = optimizer.compile(RAGAgent(), trainset=trainset)| Preset | Trials | Use Case | |--------|--------|----------| | `"light"` | ~10 | Quick iteration | | `"medium"` | ~40 | Production optimization | | `"heavy"` | ~100+ | Maximum performance |
import dspy
from dspy.teleprompt import MIPROv2
from dspy.evaluate import Evaluate
import json
import logging
logger = logging.getLogger(__name__)
class ReActAgent(dspy.Module):
def __init__(self, tools):
self.react = dspy.ReAct("question -> answer", tools=tools)
def forward(self, question):
return self.react(question=question)
def search_tool(query: str) -> list[str]:
"""Search knowledge base."""
results = dspy.ColBERTv2(url='http://20.102.90.50:2017/wiki17_abstracts')(query, k=3)
return [r['long_text'] for r in results]
def optimize_agent(trainset, devset):
"""Full MIPROv2 optimization pipeline."""
agent = ReActAgent(tools=[search_tool])
# Baseline evaluation
evaluator = Evaluate(
devset=devset,
metric=dspy.evaluate.answer_exact_match,
num_threads=8
)
baseline = evaluator(agent)
logger.info(f"Baseline: {baseline:.2%}")
# MIPROv2 optimization
optimizer = MIPROv2(
metric=dspy.evaluate.answer_exact_match,
auto="medium",
num_threads=24,
# Custom settings
num_candidates=15,
max_bootstrapped_demos=4,
max_labeled_demos=8
)
compiled = optimizer.compile(agent, trainset=trainset)
optimized = evaluator(compiled)
logger.info(f"Optimized: {optimized:.2%}")
# Save with metadata
compiled.save("agent_mipro.json")
metadata = {
"baseline_score": baseline,
"optimized_score": optimized,
"improvement": optimized - baseline,
"num_train": len(trainset),
"num_dev": len(devset)
}
with open("optimization_metadata.json", "w") as f:
json.dump(metadata, f, indent=2)
return compiled, metadatafrom dspy.teleprompt import MIPROv2
# Disable demos for pure instruction optimization
optimizer = MIPROv2(
metric=metric,
auto="medium",
max_bootstrapped_demos=0,
max_labeled_demos=0
)1. **Data quantity matters** - 200+ examples for best results 2. **Use auto presets** - Start with "medium", adjust based on results 3. **Parallel threads** - Use `num_threads=24` or higher if available 4. **Monitor costs** - Track API usage during optimization 5. **Save intermediate** - Bayesian search saves progress
A Claude Code plugin containing 22 focused skills for programming, optimizing, evaluating, and deploying LLM applications with DSPy. Stable DSPy baseline: 3.2.1, released May 5, 2026.
Use this skill when you need to QA audit and fix a plugin skill file. Provides a methodology for verifying skill content against…
Use for DSPy adapter selection, JSONAdapter, XMLAdapter, ChatAdapter, native function calling, structured outputs, and multimodal…
Use for composing DSPy modules with Ensemble, MultiChainComparison, ensemble voting, sequential pipelines, and multi-program…
Use for BetterTogether, prompt plus weight optimization, fine-tuning sequences, and strategy chains like p -> w -> p.
Use for BootstrapFewShot, bootstrapped demonstrations, teacher-model demos, and low-data DSPy prompt optimization.
Use for creating custom DSPy modules, extending dspy.Module, reusable components, stateful modules, serialization, and module…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.