dspy-reasoning-modules — Claude Code skill: features and setup
Guides configuration of DSPy 3.2.1 reasoning modules including RLM, ProgramOfThought, CodeAct, and Parallel. Useful for sandboxed code and long documents.
npx skills add OmidZamani/dspy-skills --skill dspy-reasoning-modules -a claude-codeWhat dspy-reasoning-modules does
This skill guides module selection across DSPy reasoning architectures. It outlines patterns for dspy.RLM to inspect massive documents iteratively in a REPL without packing the full text into model prompts. For code generation and host tool calling, it configures dspy.ProgramOfThought and dspy.CodeAct. Concurrent batch processing runs through dspy.Parallel with explicit thread counts and exception tracking.
Execution safety relies on Deno and Pyodide inside dspy.PythonInterpreter. The sandbox denies filesystem, network, and environment variable access by default. Specific read paths and remote domains must be allowed explicitly before running tasks. Without Deno installed on your system, code execution modules like RLM and CodeAct will fail immediately.
What it helps with
- inspect long documents using iterative sub-LM calls in dspy.RLM
- bind custom Python functions to agents using dspy.CodeAct
- restrict sandbox network and file access within dspy.PythonInterpreter
- execute prompt-module batches concurrently with dspy.Parallel
Example prompts for the agent
- Configure a dspy.RLM instance to inspect a long document with max_iterations set to 12
- Create a dspy.CodeAct agent that uses the lookup_rate tool inside a restricted sandbox
- Run a list of question examples concurrently across 8 threads with dspy.Parallel
How to install dspy-reasoning-modules
1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-reasoning-modules -a claude-code2Manually: put the files in place
~/.claude/skills/dspy-reasoning-modules/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/dspy-reasoning-modules/
1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-reasoning-modules -a codex2Manually: put the files in place
.agents/skills/dspy-reasoning-modules/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-reasoning-modules -a cursor2Manually: put the files in place
.cursor/skills/dspy-reasoning-modules/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install OmidZamani/dspy-skills dspy-reasoning-modules2Manually: put the files in place
.github/skills/dspy-reasoning-modules/SKILL.md1Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-reasoning-modules -a gemini-cli2Platform CLI
gemini skills install https://github.com/OmidZamani/dspy-skills --path skills/dspy-reasoning-modulesManually: put the files in place
.devin/skills/dspy-reasoning-modules/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-reasoning-modules -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-reasoning-modules
How to install dspy-reasoning-modules in Claude Code?
Run npx skills add OmidZamani/dspy-skills --skill dspy-reasoning-modules -a claude-code.
What is the purpose of dspy-reasoning-modules?
It instructs your agent on implementing DSPy reasoning modules, managing iteration limits, and securing sandboxed code execution.
What external runtime is required for sandboxed execution?
Modules like RLM, ProgramOfThought, and CodeAct require Deno by default to run Python via Pyodide in an isolated environment.
Source text
SKILL.md · MIT
---
name: dspy-reasoning-modules
version: "1.0.0"
dspy-compatibility: "3.2.1"
tags: ["reasoning"]
requires-extras: []
description: Use for DSPy reasoning modules including RLM, ProgramOfThought, CodeAct, Parallel, sandboxed execution, and long-context workflows.
allowed-tools:
- Read
- Write
- Glob
- Grep
---
# DSPy Reasoning Modules
## Goal
Choose the appropriate DSPy reasoning module for long-context exploration, code-assisted reasoning, or parallel execution.
## Module Selection
| Module | Use it for | Important constraint |
|--------|------------|----------------------|
| `dspy.RLM` | Exploring very large contexts with iterative REPL code and recursive sub-LM calls | Experimental; requires Deno by default |
| `dspy.ProgramOfThought` | Solving tasks by generating and executing Python | Requires Deno by default |
| `dspy.CodeAct` | Combining generated Python with predefined tool functions | Functions only; requires Deno |
| `dspy.Parallel` | Running `(module, example)` pairs concurrently | Tune threads and error handling |
## RLM for Large Contexts
`RLM` treats long inputs as external data in a sandbox rather than placing the full context in each LM prompt.
```python
import dspy
dspy.configure(lm=dspy.LM("openai/gpt-4o"))
rlm = dspy.RLM(
"document, question -> answer",
max_iterations=12,
max_llm_calls=30,
sub_lm=dspy.LM("openai/gpt-4o-mini"),
)
result = rlm(
document=very_long_document,
question="What were the main revenue drivers?",
)
print(result.answer)
```
Use `max_iterations`, `max_llm_calls`, and `max_output_chars` as explicit cost and output bounds.
## Sandboxed Execution
The default `dspy.PythonInterpreter` uses Deno and Pyodide. It denies host filesystem, environment, and network access unless explicitly enabled.
```python
from pathlib import Path
import dspy
with dspy.PythonInterpreter(
enable_read_paths=[Path("./inputs")],
enable_network_access=["api.example.com"],
) as interpreter:
print(interpreter.execute("print('ready')"))
```
Grant only the minimum paths, environment variables, and network hosts needed by the task.
## ProgramOfThought and CodeAct
```python
import dspy
dspy.configure(lm=dspy.LM("openai/gpt-4o-mini"))
math = dspy.ProgramOfThought("question -> answer")
print(math(question="What is the sum of the first 100 integers?").answer)
```
Use `CodeAct` when generated code also needs curated host-side tools:
```python
def lookup_rate(currency: str) -> float:
"""Return a trusted exchange rate from the application service."""
return rates[currency]
agent = dspy.CodeAct("amount, currency -> converted", tools=[lookup_rate])
```
## Parallel Execution
```python
parallel = dspy.Parallel(num_threads=8, return_failed_examples=True)
results, failed_examples, exceptions = parallel(
[(program, {"question": question}) for question in questions]
)
```
## Best Practices
1. Prefer `Predict` or `ChainOfThought` until code execution or long-context exploration is justified.
2. Treat `RLM` as experimental and load-test before production deployment.
3. Bound loops and sub-LM calls.
4. Keep sandbox permissions narrow.
5. Create separate interpreters for concurrent custom-interpreter use.
## Official Documentation
- **RLM API**: https://dspy.ai/api/modules/RLM/
- **ProgramOfThought API**: https://dspy.ai/api/modules/ProgramOfThought/
- **CodeAct API**: https://dspy.ai/api/modules/CodeAct/
- **Parallel API**: https://dspy.ai/api/modules/Parallel/
© OmidZamani · MIT · OmidZamani/dspy-skills