> dspy
You are an expert in DSPy, the Stanford framework that replaces prompt engineering with programming. You help developers define LLM tasks as typed signatures, compose them into modules, and automatically optimize prompts/few-shot examples using teleprompters — so instead of manually crafting prompts, you write Python code and DSPy finds the best prompts for your task.
curl "https://skillshub.wtf/TerminalSkills/skills/dspy?format=md"DSPy — Programming (Not Prompting) LLMs
You are an expert in DSPy, the Stanford framework that replaces prompt engineering with programming. You help developers define LLM tasks as typed signatures, compose them into modules, and automatically optimize prompts/few-shot examples using teleprompters — so instead of manually crafting prompts, you write Python code and DSPy finds the best prompts for your task.
Core Capabilities
Signatures and Modules
import dspy
lm = dspy.LM("openai/gpt-4o-mini")
dspy.configure(lm=lm)
# Define task as a signature (not a prompt)
class SentimentAnalysis(dspy.Signature):
"""Classify the sentiment of a review."""
review: str = dspy.InputField()
sentiment: str = dspy.OutputField(desc="positive, negative, or neutral")
confidence: float = dspy.OutputField(desc="0.0 to 1.0")
# Use it
classify = dspy.Predict(SentimentAnalysis)
result = classify(review="Great product, fast shipping!")
print(result.sentiment) # "positive"
print(result.confidence) # 0.95
# Chain of Thought (automatic reasoning)
classify_cot = dspy.ChainOfThought(SentimentAnalysis)
result = classify_cot(review="It works but the manual is confusing")
print(result.reasoning) # Shows step-by-step reasoning
print(result.sentiment) # "neutral"
Composable Modules
class RAGModule(dspy.Module):
def __init__(self, num_passages=3):
self.retrieve = dspy.Retrieve(k=num_passages)
self.generate = dspy.ChainOfThought("context, question -> answer")
def forward(self, question):
context = self.retrieve(question).passages
return self.generate(context=context, question=question)
rag = RAGModule()
answer = rag(question="What is DSPy?")
# Multi-hop reasoning
class MultiHop(dspy.Module):
def __init__(self):
self.generate_query = dspy.ChainOfThought("context, question -> search_query")
self.retrieve = dspy.Retrieve(k=3)
self.generate_answer = dspy.ChainOfThought("context, question -> answer")
def forward(self, question):
context = []
for _ in range(2): # 2 hops
query = self.generate_query(context=context, question=question).search_query
passages = self.retrieve(query).passages
context = deduplicate(context + passages)
return self.generate_answer(context=context, question=question)
Automatic Optimization
from dspy.teleprompt import BootstrapFewShot
# Training data
trainset = [
dspy.Example(question="What is Python?", answer="A programming language").with_inputs("question"),
dspy.Example(question="Who created Linux?", answer="Linus Torvalds").with_inputs("question"),
]
# Metric
def accuracy(example, prediction, trace=None):
return example.answer.lower() in prediction.answer.lower()
# Optimize — finds best few-shot examples and instructions
teleprompter = BootstrapFewShot(metric=accuracy, max_bootstrapped_demos=4)
optimized_rag = teleprompter.compile(RAGModule(), trainset=trainset)
# optimized_rag now has automatically selected few-shot examples
# that maximize accuracy — no manual prompt engineering
Installation
pip install dspy
Best Practices
- Signatures over prompts — Define typed inputs/outputs; DSPy generates and optimizes prompts automatically
- ChainOfThought — Use for complex tasks; adds reasoning step that improves accuracy significantly
- Modules — Compose LLM calls like neural network layers; chain retrieval + reasoning + generation
- Teleprompters — Use BootstrapFewShot to automatically find optimal few-shot examples from training data
- Typed outputs — OutputField descriptions constrain generation; more reliable than free-form prompts
- Evaluation-driven — Define metrics first, then optimize; DSPy finds prompts that maximize your metric
- Model-agnostic — Same code works with GPT-4, Claude, Llama, Gemini; optimization adapts per model
- Assertions — Use
dspy.Assertanddspy.Suggestfor runtime output validation and self-correction
> related_skills --same-repo
> zustand
You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.
> zoho
Integrate and automate Zoho products. Use when a user asks to work with Zoho CRM, Zoho Books, Zoho Desk, Zoho Projects, Zoho Mail, or Zoho Creator, build custom integrations via Zoho APIs, automate workflows with Deluge scripting, sync data between Zoho apps and external systems, manage leads and deals, automate invoicing, build custom Zoho Creator apps, set up webhooks, or manage Zoho organization settings. Covers Zoho CRM, Books, Desk, Projects, Creator, and cross-product integrations.
> zod
You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.
> zipkin
Deploy and configure Zipkin for distributed tracing and request flow visualization. Use when a user needs to set up trace collection, instrument Java/Spring or other services with Zipkin, analyze service dependencies, or configure storage backends for trace data.