核心问题: 你的 AI 编码助手是否支持开放的 Agent Skills 标准(SKILL.md)?
RepoDaily 采用评分
RepoDaily 将该项目的采用分评为 89/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。
包含 5 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。
检测到 5 个工作流步骤、4 个下一步动作,以及 4 个命令/安装信号。
趋势热度为 +358 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。
采纳风险标记为 medium,并包含 7 条安全说明与 3 条跳过条件。
3 个机会视角、3 个替代方案,以及 3 个类型化模块支撑差异化判断。
文章中包含许可证来源或许可证表述。
文章正文和元数据中检测到 5 个 AI/Agent 相关信号。
项目概览
book-to-skill 是一个 Python 转换工具,输入一本技术书籍(通常是 PDF,也支持 EPUB、DOCX、HTML、Markdown、RTF、MOBI),输出一个结构化的 Agent Skill——由 SKILL.md 清单文件加上按章节拆分的参考文件组成。安装到 agent 的 skills 目录后,agent 在回答问题时只加载相关章节,从书籍的真实内容中作答,而不是凭空编造。
这个工具瞄准的痛点非常具体:你读完一本 300 页的技术书,三个月后想不起来第 7 章讲了什么框架。搜索 PDF 只给你页码,不给答案。直接问 AI 助手,它要么幻觉编造,要么说没有相关内容。book-to-skill 把书变成一组命名框架、决策规则和反模式,agent 可以按需检索。
对安全敏感的用户来说,值得关注的是它的本地解析流程。工具不上传文件、不运行网络服务、不回传数据。最新 changelog 中新增了无依赖的提示注入扫描器,在生成的 skill 被接受或发布前,标记指令覆盖短语、模型控制标签、不可见 Unicode 和形如数据外泄的内容。DOCX 提取器会阻止 XML 外部实体和 Billion Laughs 攻击,子进程参数注入加固确保以连字符开头的文件名不会被当作命令行选项。
Token 效率的数据是可测量的:回答一个问题比全文灌入上下文节省 24x-51x token,基准测试通过 tools/discovery_tax.py 在真实书籍上完成。按章节拆分的文件结构意味着一本 200 页的书,token 消耗与问题相关,而非与页数成正比。
为什么现在变热
- 358 个周期新增 star,趋势排名第 11,反映了开发者对结构化 agent 知识的需求。
- Trendshift 于 2026 年 5 月 23 日将其列为 Python 仓库日榜第 10 名、全语言日榜第 25 名。
- 填补了 PDF 搜索和通用 RAG 流水线都没解决好的空白:让 AI 编码 agent 以章节索引方式访问一本书的框架和决策规则。
- MIT 许可证,无上传无遥测,降低了安全敏感场景的采用门槛。
- 通过开放 Agent Skills 标准,同一份 SKILL.md 同时支持 Claude Code、GitHub Copilot CLI 和 Amp 三大 agent 宿主。
解决什么问题
- 技术书读完即忘——三个月后第 7 章的框架完全隐形。
- PDF 搜索返回的是页面列表,不是针对具体问题的答案。
- 向未摄入书籍的 AI agent 提问,得到的是幻觉或拒绝回答。
- 将整本书灌入上下文窗口既昂贵又低效——agent 被无关章节淹没。
- 手动笔记变成一份再也不会打开的 200 行文档。
工作原理
- 指向文件、文件夹或 glob 模式:/book-to-skill ./my-book.pdf。确定性提取器使用标准库回退或可选依赖(pdftotext、pypdf、ebook-convert)在本地解析文档。
- 提取器通过模式匹配识别章节边界——阿拉伯数字、罗马数字(Chapter I.)以及包括泰语在内的语言特定标题。处理前会清除不可见 Unicode 字符。
- 规格驱动的生成器使用书籍原始术语,将每章蒸馏为命名框架、决策规则和反模式——是结构,不是摘要。
- 输出写入 agent 的 skills 目录,包含 SKILL.md 清单和按章节拆分的文件。在接受任何生成的 skill 之前,会运行提示注入扫描器。
- 在 agent 会话中输入 /your-book-slug <主题>,agent 只读取相关章节文件,从蒸馏后的内容中作答。
架构:确定性提取器 + 规格驱动生成器
book-to-skill 分为两个组件。确定性提取器负责文档解析:通过 pdftotext 或 pypdf 读取 PDF(pypdf 已在 pdf extra 中替换了已停止维护的 PyPDF2),原生支持 EPUB,DOCX 提取带有 XXE 阻断加固,MOBI/AZW 通过 Calibre 的 ebook-convert 处理。所有解析器在生成指标或 full_text.txt 之前,会清除零宽字符(U+200B、U+200C、U+200D、U+FEFF)和 Unicode 标签块(U+E0000-U+E007F)。
规格驱动生成器产出 SKILL.md——每次运行都会加载的转换器规格——以及按章节拆分的 skill 文件。SKILL.md 定义提取步骤、深度预算和质量规则。贡献者被明确要求保持 SKILL.md 精简,因为没有证据支撑的增量会被拒绝。CI 流水线在 Python 3.10-3.13 上运行 ruff check、pytest 和 python3 tools/validate_skill.py SKILL.md。
基准测试使用 tools/discovery_tax.py,测量 Discovery Loop Tax——从一本书回答一个问题所需的 token 成本。结果显示比全文灌入上下文节省 24x-51x token。
试用路径:两种安装模式
- Agent skill 安装:git clone https://github.com/virgiliojr94/book-to-skill.git ~/.claude/skills/book-to-skill——然后在 agent 会话中运行 /book-to-skill /path/to/book.pdf [skill-name]。
- 独立 CLI:pip install "book-to-skill[pdf,epub,docx]"——获得 book-to-skill /path/to/book.pdf --mode text,但不会注册 agent skill。
- 检查提取器状态:python3 scripts/extract.py --check 显示哪些可选解析器已激活、哪些系统工具(pdftotext、ebook-convert)可用。
- 开发环境:克隆仓库,创建虚拟环境,pip install pytest ruff,然后运行 CI 相同的检查:ruff check .、pytest -q、python3 tools/validate_skill.py SKILL.md。
安全面:哪些攻击被加固
- 提示注入扫描器:无依赖,标记指令覆盖短语、模型控制标签、不可见 Unicode、扩权 frontmatter 和数据外泄模式。结果只报告规则和文件/行号位置,从不回显攻击者文本(#73)。
- 不可见 Unicode 清除:所有解析器在输出前移除 U+200B/C/D、U+FEFF 和 U+E0000-U+E007F;清除后无可可见内容的来源会被拒绝。
- DOCX XXE / Billion Laughs:DOCX 提取器扫描归档,在解析前拒绝任何声明 DTD 或实体的 XML 部分(#53、#54)。
- 子进程参数注入加固:文件路径在传递给 pdftotext、pdfinfo、ebook-convert 前被绝对化,防止以 - 开头的文件名被当作命令行选项(#53、#54)。
- 依赖 CVE 审查:dependency-review CI 任务标记任何带中高危 CVE 或被禁许可证的新依赖,并将结果作为 PR 评论发布。Dependabot 覆盖 pip 生态。
- pypdf 替换 PyPDF2:PyPDF2 已停止维护且不再接收安全修复;pypdf 是后继维护版本(#54)。
谁适合关注
适合关注
- 使用 Claude Code、GitHub Copilot CLI 或 Amp 且拥有需要反复查阅的技术书籍的开发者。
- 拥有可转化为可查询 agent skill 的内部手册或标准文档的安全团队。
- 希望 agent 从书籍真实内容回答、零幻觉且 token 成本可控的任何人。
可以先跳过
- AI agent 不支持 Agent Skills 标准或 SKILL.md 格式的用户。
- 需要逐字复制长段落的读者——book-to-skill 提取结构,从不复制原始文本。
- 处理无权转换的受版权保护材料的用户(README 明确讨论了版权与合理使用)。
风险与注意事项
核心提取流水线已较成熟并经过安全加固,但项目仍在持续添加功能,多项加固改进尚未正式发版。完整格式覆盖需要可选的系统依赖。
- 完整格式覆盖需要系统工具:PDF 需要 pdftotext(poppler),MOBI/AZW 需要 ebook-convert(Calibre)。缺少这些工具时,提取会回退到标准库或 pypdf。
- 提示注入扫描器、泰语章节检测和多项加固修复在 changelog 中标记为 [Unreleased]——尚未包含在已标记的发布版本中。
- 采用依赖于你的 agent 宿主是否支持 Agent Skills 标准。已确认支持 Claude Code、Copilot CLI 和 Amp;其他宿主未知。
- 项目由单人开发者维护,资金来自 GitHub Sponsors——需要考虑 bus factor。
- 纯本地运行:不上传文件、不运行网络服务、不回传遥测数据(依据 SECURITY.md 的范围声明)。
- 生成 skill 的提示注入扫描:在接受前标记指令覆盖、模型控制标签、不可见 Unicode 和数据外泄模式(#73)。
- DOCX 提取器在解析前拒绝 DTD 和实体声明,阻断 XXE 和 Billion Laughs 攻击(#53、#54)。
- 子进程参数注入加固:传递给 pdftotext、pdfinfo、ebook-convert 的路径预先绝对化(#53、#54)。
- 所有解析器输出清除不可见 Unicode;清除后无可可见内容的来源被拒绝。
- dependency-review CI 任务标记 CVE 和被禁许可证;pypdf 替换已停止维护的 PyPDF2(#54)。
- 贡献指南:生成的 skill 必须合成提炼,不得复制长段落,需尊重来源许可证。
替代方案比较
| 方案 | 适用场景 | 代价 |
|---|---|---|
原始上下文窗口灌入 | 书籍较短(50 页以内)且只需一次性回答。 | 免费,但每个问题多消耗 24x-51x token,且无持久化结构。 |
LlamaIndex | 你需要一个通用 RAG 框架,支持比书籍更广泛的文档连接器。 | 开源(MIT);需要 Python,配置更复杂。 |
paper-qa | 来源是学术论文,需要带引用的多文档综合而非单本书的 skill 文件。 | 开源;基于 Python,依赖栈更重。 |
这个趋势说明了什么
企业手册转 skill 流水线
安全团队拥有的内部标准、威胁模型或运行手册(以 PDF 存储),可转化为 agent skill,供开发者在事件响应或代码审查时查询。
用 /book-to-skill 转换一份内部标准文档,测量生成的 skill 是否能正确回答测试问题,对比手动 PDF 搜索的效率。
多书 skill 库
将一整架技术书籍转换为独立 skill,共享相同的 SKILL.md 格式,让一个 agent 在不同时加载所有来源的情况下访问数十本书的结构化知识。
转换三本涵盖重叠主题的书,测试 agent 是否能为跨领域问题选择正确的 skill 文件。
新人入职培训材料
将入职文档、架构决策记录或代码风格指南转化为 skill,新员工从第一天起就能通过编码 agent 查询。
转换一组入职文档,调查新团队成员是否比搜索 wiki 更快找到答案。
RepoDaily 判断
book-to-skill 解决了一个真实痛点——将静态 PDF 转化为 agent 可查询的知识,附带可测量的 token 节省和严格的输入安全加固。安全面(提示注入扫描、XXE 阻断、不可见 Unicode 清除)在转换工具中高于平均水平。采用风险为中等:依赖 Agent Skills 兼容宿主,且多项加固功能尚未正式发版。