mcpField
D
dnd5e-srd

dnd5e-srd

github.com/microck其他40883 次安装17 周前更新
代码仓库

关于 dnd5e-srd

dnd5e-srd 是面向回答 D&D 5e SRD 问题的检索技能,将规则、职业、法术和生物等内容按页码整理为 Markdown。它通过搜索及上下文扩展工具定位文本,并要求引用精确字符位置。

主要功能

  1. 01按页码范围组织 SRD 文档
  2. 02正则搜索并返回字符位置
  3. 03按段落或章节扩展上下文
  4. 04支持多文件与多步检索
  5. 05回答时提供来源引用

适用场景

  1. 01查找战斗规则与状态说明
  2. 02检索职业、装备及法术资料
  3. 03核对 SRD 生物数据
  4. 04为规则回答生成精确引用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/microck/ordinary-claude-skills --skill dnd5e-srd

安装后在 Claude Code 中输入/dnd5e-srd确认已加载。

附带文件metadata.json

详细介绍

D&D 5e SRD 检索增强生成(RAG)

此技能提供基于搜索的检索功能,可访问《龙与地下城》第五版系统参考文档(SRD)。文档按页码范围整理为 Markdown 文件,存放在 references/ 目录中。

何时使用此技能

回答有关 D&D 5e SRD 内容的问题时,请使用此技能,包括:

  • 核心规则和游戏流程
  • 属性检定、豁免检定和技能使用
  • 战斗、动作、状态和移动
  • 职业、背景、装备和魔法物品
  • 法术和施法
  • SRD 中包含的生物和属性数据

搜索策略

处理 D&D 5e SRD 查询时,请遵循以下 Agentic 搜索流程:

1. 确定相关页码范围

SRD 按页码范围整理。使用此文件索引定位内容:

重要提示:始终使用 Python 搜索工具(scripts/search_with_positions.py)获取来源引用所需的精确字符位置。

文件索引(按页码范围)

注意:以下主题遵循你提供的大纲,并与实际文件拆分方式对应;跨越多个文件的主题会标注为续篇。

  • DND5eSRD_001-018.md:引言至角色创建
  • DND5eSRD_019-035.md:野蛮人、吟游诗人、牧师(开篇)
  • DND5eSRD_036-046.md:牧师/德鲁伊、战士、武僧(开篇)
  • DND5eSRD_047-063.md:武僧、圣武士、游侠、游荡者
  • DND5eSRD_064-076.md:术士、邪术师、法师(开篇)
  • DND5eSRD_077-086.md:法师、起源、专长
  • DND5eSRD_087-103.md:装备
  • DND5eSRD_104-120.md:法术
  • DND5eSRD_121-137.md:法术
  • DND5eSRD_138-154.md:法术
  • DND5eSRD_155-175.md:法术
  • DND5eSRD_176-191.md:规则术语表(部分)
  • DND5eSRD_192-203.md:游戏工具箱、魔法物品(开篇,第 1 部分)
  • DND5eSRD_204-229.md:游戏工具箱、魔法物品(续篇)
  • DND5eSRD_230-252.md:魔法物品(续篇)
  • DND5eSRD_253-272.md:怪物简介及前几项内容
  • DND5eSRD_273-292.md:怪物
  • DND5eSRD_293-312.md:怪物
  • DND5eSRD_313-332.md:怪物
  • DND5eSRD_333-364.md:怪物/动物(续篇)
2. 使用 Python 工具搜索

主要方法:使用“搜索 + 展开”工作流,以获取准确位置和结构化上下文。

# 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

搜索工具会返回:

  • 文件名
  • 字符范围(起止位置)
  • 含上下文的匹配文本
  • 可直接使用的引用格式:[filename, chars START-END]

展开工具会返回:

  • 展开的文本(段落、章节或整篇文档)
  • 标题层级路径
  • 匹配内容在展开文本中的原始位置
  • 展开范围和元数据
3. 按需展开上下文

搜索后,展开需要更深入上下文的结果:

  • 使用 --mode paragraph 查看周边文本
  • 使用 --mode section 获取带标题的完整规则章节
  • 使用 --results 1,3,5 批量展开多个结果
4. 多跳查询

对于需要多条信息的问题:

  1. 将查询拆分为多个部分
  2. 分别搜索每个部分
  3. 综合多个来源的信息
5. 提供准确答案并标注来源

检索信息后:

  • 按需准确引用或转述规则
  • 始终使用字符位置格式标注来源:[filename, chars START-END]
  • 相关时引用多个来源
  • 在相关信息末尾标注引用,而非在文中插入

引用示例:

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 目录结构

references/ 目录包含按页码范围拆分的 SRD 文件。 文件名格式为 DND5eSRD_XXX-YYY.md,其中 XXX-YYY 表示页码范围。

列出所有文件:

ls -lh /skills/dnd5e-srd/references/

查找包含特定内容的文件:

grep -l "search term" /skills/dnd5e-srd/references/*.md

Python 工具

1. 搜索工具(search_with_positions.py)

功能:

  • 使用基于正则表达式的词条匹配搜索 SRD 参考文件
  • 返回每个匹配项的精确字符范围
  • 包含匹配项周围的上下文文本
  • 支持按页码范围或指定文件筛选

用法:

# 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. 上下文扩展工具(expand_context.py)

功能:

  • 使用感知边界的模式扩展特定搜索结果
  • 模式:paragraph(默认)、section、section-only、char、document
  • 提供用于上下文的标题层级路径
  • 支持批量扩展和 JSON 输出

用法:

# 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

最佳实践

  • 使用 Python 工具:先搜索,再扩展以获取更深入的上下文
  • 始终引用来源,格式为 [filename, chars START-END]
  • 利用文档结构:使用 --mode section 获取完整规则和标题
  • 具体明确:搜索精确的 SRD 术语
  • 检查多个文件:相关规则可能分布在多个范围内
  • 处理歧义:通过引用列出可能的解释

注意事项

  • 文件按页码范围组织(例如,001-018、019-035)
  • 部分文件较大(最多超过 120K);优先进行定向搜索
  • 此技能仅包含 SRD 内容,不包括补充材料或非 SRD 内容

评论

支持 Markdown