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 deploying DSPy with save/load, configure_cache, restrict_pickle, track_usage, async execution, streaming, and production runtime controls.
Claude Code
$ npx -y skills add OmidZamani/dspy-skills --skill dspy-production-deployment --agent claude-code
Codex
$ npx skills add OmidZamani/dspy-skills --skill dspy-production-deployment -a codex -y
Cursor
$ npx skills add OmidZamani/dspy-skills --skill dspy-production-deployment -a cursor -y
Gemini CLI
$ npx skills add OmidZamani/dspy-skills --skill dspy-production-deployment -a gemini-cli -y
GitHub Copilot
$ npx skills add OmidZamani/dspy-skills --skill dspy-production-deployment -a github-copilot -y
OpenCode
$ npx skills add OmidZamani/dspy-skills --skill dspy-production-deployment -a opencode -y
Windsurf
$ npx skills add OmidZamani/dspy-skills --skill dspy-production-deployment -a windsurf -y
name: dspy-production-deployment version: "1.0.0" dspy-compatibility: "3.2.1" tags: ["production"] requires-extras: [] description: Use for deploying DSPy with save/load, configure_cache, restrict_pickle, track_usage, async execution, streaming, and production runtime controls. allowed-tools: - Read - Write - Glob - Grep
Prepare a DSPy program for repeatable, observable, scalable, and safer production execution.
DSPy enables memory and disk caches by default. Disk cache deserialization uses pickle unless restricted. Enable the allowlist mode in production:
import dspy dspy.configure_cache(restrict_pickle=True)
Register trusted custom cache types only when needed:
dspy.configure_cache(
restrict_pickle=True,
safe_types=[MyResult, Metadata],
)Disable a cache layer explicitly when a deployment cannot persist data or requires fresh model responses:
dspy.configure_cache(
enable_disk_cache=False,
enable_memory_cache=True,
)Prefer state-only JSON for readable, safer artifacts:
compiled.save("./artifacts/program.json", save_program=False)
loaded = MyProgram()
loaded.load("./artifacts/program.json")Use whole-program save only for trusted artifacts. It uses cloudpickle:
compiled.save("./artifacts/program/", save_program=True)
loaded = dspy.load("./artifacts/program/")Keep the DSPy major version compatible when loading saved programs.
dspy.configure(
lm=dspy.LM("openai/gpt-4o-mini"),
track_usage=True,
)
prediction = program(question="What is DSPy?")
print(prediction.get_lm_usage())Cached calls return no new token usage.
Most built-in modules support `acall()`:
import asyncio
async def main():
prediction = await program.acall(question="What is DSPy?")
print(prediction.answer)
asyncio.run(main())Implement `aforward()` for custom async modules. Use `dspy.asyncify(program)` only when adapting a synchronous callable is the right boundary.
import asyncio
import dspy
stream_program = dspy.streamify(
dspy.Predict("question -> answer"),
stream_listeners=[
dspy.streaming.StreamListener(signature_field_name="answer"),
],
)
async def main():
async for chunk in stream_program(question="Explain DSPy briefly."):
print(chunk)
asyncio.run(main())For looped modules such as ReAct, set `allow_reuse=True` on listeners for repeated fields. Cache hits yield the final `Prediction` without replaying token chunks.
1. Pin the stable DSPy series. 2. Use state-only JSON unless whole-program pickle is necessary and trusted. 3. Enable `restrict_pickle=True`. 4. Record usage, latency, errors, and traces. 5. Load-test async and streaming paths separately. 6. Use [dspy-debugging-observability](../dspy-debugging-observability/SKILL.md) for MLflow and callbacks.
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.