Retrieval-augmented generation (RAG) skill for the D&D 5e System Reference Document (SRD). Use when answering questions about D&D 5e core rules, spells, combat, equipment, conditions, monsters, and other SRD content. This skill provides agentic search-based access to the SRD split into page-range markdown files.
Content & Writing
105 Stars
9 Forks
Updated Dec 4, 2025, 10:14 PM
Why Use This
This skill provides specialized capabilities for Microck's codebase.
Use Cases
Developing new features in the Microck repository
Refactoring existing code to follow Microck standards
Understanding and working with Microck's codebase structure
---
name: dnd5e-srd
description: Retrieval-augmented generation (RAG) skill for the D&D 5e System Reference Document (SRD). Use when answering questions about D&D 5e core rules, spells, combat, equipment, conditions, monsters, and other SRD content. This skill provides agentic search-based access to the SRD split into page-range markdown files.
---
# D&D 5e SRD RAG
This skill provides search-based retrieval access to the Dungeons & Dragons 5th Edition System Reference Document (SRD), organized by page ranges as markdown files in the `references/` directory.
## When to Use This Skill
Use this skill whenever answering questions about D&D 5e SRD content, including:
- Core rules and gameplay procedures
- Ability checks, saving throws, and skill use
- Combat, actions, conditions, and movement
- Classes, backgrounds, equipment, and magic items
- Spells and spellcasting
- Creatures and stat blocks included in the SRD
## Search Strategy
Follow this agentic search process for D&D 5e SRD queries:
### 1. Identify Relevant Page Ranges
The SRD is organized by page ranges. Use this file index to locate content:
**Important: Always use the Python search tool (`scripts/search_with_positions.py`) to get exact character positions for source citations.**
#### File Index (by page range)
Note: Topics below follow your provided outline and are aligned to the actual file splits; where a topic spans multiple files, it's marked as continued.
- `DND5eSRD_001-018.md`: Intro through Character Creation
- `DND5eSRD_019-035.md`: Barbarian, Bard, Cleric (start)
- `DND5eSRD_036-046.md`: Cleric/Druid, Fighter, Monk (start)
- `DND5eSRD_047-063.md`: Monk, Paladin, Ranger, Rogue
- `DND5eSRD_064-076.md`: Sorcerer, Warlock, Wizard (start)
- `DND5eSRD_077-086.md`: Wizard, Origins, Feats
- `DND5eSRD_087-103.md`: Equipment
- `DND5eSRD_104-120.md`: Spells
- `DND5eSRD_121-137.md`: Spells
- `DND5eSRD_138-154.md`: Spells
- `DND5eSRD_155-175.md`: Spells
- `DND5eSRD_176-191.md`: Rules Glossary (part)
- `DND5eSRD_192-203.md`: Gameplay Toolbox, Magic Items (start, part 1)
- `DND5eSRD_204-229.md`: Gameplay Toolbox, Magic Items (continued)
- `DND5eSRD_230-252.md`: Magic Items (continued)
- `DND5eSRD_253-272.md`: Monsters intro + early entries
- `DND5eSRD_273-292.md`: Monsters
- `DND5eSRD_293-312.md`: Monsters
- `DND5eSRD_313-332.md`: Monsters
- `DND5eSRD_333-364.md`: Monsters / Animals (continued)
### 2. Search Using the Python Tools
Primary method: use the search + expand workflow for accurate positions and structured context.
```bash
# Step 1: Search to find content with exact character positions
python /skills/dnd5e-srd/scripts/search_with_positions.py "search term" --all
# Step 2: If you need more context, expand specific result(s)
python /skills/dnd5e-srd/scripts/expand_context.py "search term" --result 3 --mode section --all
# Examples
# Search combat-related terms
python /skills/dnd5e-srd/scripts/search_with_positions.py "grapple" --all
# Search spells and expand result #1 by section
python /skills/dnd5e-srd/scripts/expand_context.py "fireball" --result 1 --mode section --all
# Search specific page ranges
python /skills/dnd5e-srd/scripts/search_with_positions.py "longsword" --pages 200-300
# Batch expand multiple results
python /skills/dnd5e-srd/scripts/expand_context.py "Attack" --results 1,3,5 --mode paragraph --all
```
The search tool returns:
- Filename
- Character range (start-end positions)
- Matched text with context
- Ready-to-use citation format: `[filename, chars START-END]`
The expand tool returns:
- Expanded text (paragraph, section, or entire document)
- Heading breadcrumb trail
- Original match position within the expansion
- Expansion bounds and metadata
### 3. Expand Context When Needed
After searching, expand results that need deeper context:
- Use `--mode paragraph` for surrounding text
- Use `--mode section` to get the full rule section with headings
- Use `--results 1,3,5` to batch expand multiple results
### 4. Multi-hop Queries
For questions requiring multiple pieces of information:
1. Break down the query into components
2. Search for each component separately
3. Synthesize the information from multiple sources
### 5. Provide Accurate Answers with Source Citations
After retrieving information:
- Quote or paraphrase the exact rules as needed
- **Always cite sources using the character position format**: `[filename, chars START-END]`
- Include multiple sources when relevant
- Cite at the end of the relevant information, not inline
Citation examples:
```
The spell Fireball deals 8d6 fire damage on a failed save. [DND5eSRD_293-312.md, chars 12000-12100]
A grapple check uses Athletics vs. the target's escape DC (see Conditions). [DND5eSRD_087-103.md, chars 5400-5600]
```
## References Directory Structure
The `references/` directory contains the SRD split into page-range files.
Files are named `DND5eSRD_XXX-YYY.md` where `XXX-YYY` is the page range.
To list all files:
```bash
ls -lh /skills/dnd5e-srd/references/
```
To find which file contains specific content:
```bash
grep -l "search term" /skills/dnd5e-srd/references/*.md
```
## Python Tools
### 1. Search Tool (`search_with_positions.py`)
Features:
- Searches SRD reference files with regex-based term matching
- Returns precise character ranges for each match
- Includes contextual text around matches
- Supports filtering by page ranges or specific files
Usage:
```bash
# Basic search across all files
python scripts/search_with_positions.py "term" --all
# Search specific page range
python scripts/search_with_positions.py "term" --pages 200-300
# Control output
python scripts/search_with_positions.py "term" --all --max-results 10 --context 200
# Case-sensitive search
python scripts/search_with_positions.py "Attack" --all --case-sensitive
```
### 2. Context Expansion Tool (`expand_context.py`)
Features:
- Expands specific search results with boundary-aware modes
- Modes: `paragraph` (default), `section`, `section-only`, `char`, `document`
- Provides heading breadcrumb trails for context
- Supports batch expansion and JSON output
Usage:
```bash
# Expand a specific search result by section
python scripts/expand_context.py "fireball" --result 3 --mode section --all-search
# Expand multiple results at once
python scripts/expand_context.py "Attack" --results 1,3,5 --mode paragraph --all-search
# Direct expansion from known file position
python scripts/expand_context.py --file "DND5eSRD_121-137.md" --position 1234 --mode section
# JSON output for machine processing
python scripts/expand_context.py "wizard" --result 1 --all-search --format json
```
## Best Practices
- **Use the Python tools**: search first, then expand for deeper context
- **Always cite sources** with `[filename, chars START-END]`
- **Leverage structure**: use `--mode section` to get full rules and headings
- **Be specific**: search for exact SRD terminology
- **Check multiple files**: related rules may span multiple ranges
- **Handle ambiguity**: present possible interpretations with citations
## Notes
- Files are organized by page ranges (e.g., 001-018, 019-035)
- Some files are large (up to 120K+); prefer targeted searches
- This skill includes SRD content only; not supplements or non-SRD material