book-to-skill 的 SKILL.md 中文版
这是一份完全本地化、翻译并优化为中文环境可用的 SKILL.md。它保留了所有代码逻辑、系统变量和 Agent 指令,同时将需要输出给用户的交互提示语、生成模板以及 Agent 的思考指南转化为了流畅的中文。
你可以直接将其保存为你的 SKILL.md。
---
name: book-to-skill
description: "将书籍和文档 (PDF, EPUB, DOCX, HTML, Markdown, 纯文本, RTF, 借助 Calibre 的 MOBI/AZW) 转换为结构化的 Agent 技能,提取其中的框架、心智模型、原则、技术和反模式。当用户希望通过 GitHub Copilot CLI、Amp 或 Claude Code 学习文档,在工作时应用作者的框架,或者从文件构建可复用的知识库时,请使用此技能。"
---
<!--
跨 Agent 注意事项 (仅供参考;宿主 agent 会忽略此内容):
- 兼容的技能根目录: GitHub Copilot CLI (~/.copilot/skills, ~/.agents/skills,
.github/skills, .claude/skills, .agents/skills), Amp (.agents/skills,
~/.config/agents/skills, ~/.config/amp/skills), Claude Code (~/.claude/skills)。
- 故意省略了 `allowed-tools` 以保持对不同 Agent 的中立性:Copilot CLI 使用
`shell`/MCP-server 名称,Claude 使用 `Bash`/`Read`/`Write`/`Glob`/`Grep`,Amp
添加了 `shell_command`。该技能需要 shell(运行 extract.py)和文件
读写权限 — 宿主系统会在首次使用时提示授权。
- 参数提示: <文档文件夹或glob的路径>... [技能名称-slug]
-->
# 书籍转技能 (Book-to-Skill) 转换器
将书面知识转化为可执行的 Agent 技能——提取其深层结构,而不是仅仅生成摘要。
## 核心理念 (Philosophy)
书籍包含作者结晶化的专业知识:历经数年发展出的框架、原则和技术。此技能将这些知识提取为一种特殊格式,让 GitHub Copilot CLI、Amp、Claude Code 或其他兼容的 Agent 能够反复利用。
**提取结构,而非总结摘要。** 一个技能不是一份读书报告。它是一个工具箱,包含:
- 命名的框架(具有明确应用场景的心智模型)
- 可执行的原则(指导决策的规则)
- 技术与方法(循序渐进的方法论)
- 反模式(应该避免什么以及为什么)
- 语调校准(作者如何思考和沟通)
**保留作者的精确性。** 框架的命名通常有其特定原因。“5问法 (The 5 Whys)”与“多问几次为什么”是不能互换的。请捕捉精确的表述。
**适度分层。** 简单的书 → 简单的技能。包含 10 个以上框架的复杂书籍 → 带有参考文件和按需加载章节的复杂技能。
---
## 运行模式 (Modes of Operation)
提供四条路径。根据用户的请求进行路由:
### 1. 完整转换 (默认)
**触发条件:** 用户提供了一个或多个文档/目录/glob路径,且没有特殊指示
**执行动作:** 运行下方所有步骤 (Step 0–9)
**输出:** 包含 SKILL.md、chapters/ 目录、术语表(glossary)、模式(patterns)和速查表(cheatsheet)的完整技能
### 2. 仅分析 (Analyze Only)
**触发条件:** 用户说“分析 (analyze)”、“仅提取 (just extract)”或“我想在生成前先看看 (review before generating)”
**执行动作:** 运行 Step 0–3,然后生成一份结构化的提取报告(找到的框架、原则、技术)。然后停止 — **不要**生成技能文件。
**输出:** 供用户审查的分析报告
### 3. 基于先前的分析生成
**触发条件:** 用户拥有现有的分析笔记,或之前运行过“仅分析”
**执行动作:** 跳过 Step 0–3,使用提供的分析作为输入,运行 Step 4–9
**输出:** 根据提供的分析生成的技能文件
### 4. 更新 / 融入 (针对现有技能)
**触发条件:** 用户提供了一个或多个新的源路径,并表示希望更新现有技能(通过指向现有技能文件夹、提供 `SKILLS_HOME` 中已存在的技能 slug,或明确要求更新)。
**执行动作:** 运行 Step 0 (范围外检查)、Step 1 (验证输入)、Step 1.5 (识别书籍类型) 和 Step 2 (提取新文件)。然后跳至 Step 5 (识别现有技能路径) 并运行 **更新 / 融入工作流 (Update / Fold-in Workflow)**,将新内容合并到现有技能文件中。
**输出:** 更新后的现有技能,包含新增/修订的章节摘要和合并后的索引/术语表。
---
## 技能存储位置 (Skill Locations)
此转换器可从多个技能系统运行。在查找此转换器的辅助脚本或写入生成的技能时,请按以下顺序优先选择位置:
1. GitHub Copilot CLI 个人技能: `~/.copilot/skills/`
2. 跨 Agent 个人技能 (Copilot + Amp): `~/.agents/skills/`
3. Claude Code 个人技能: `~/.claude/skills/`
4. 项目本地 Copilot 技能: `.github/skills/`
5. 项目本地 Claude 技能: `.claude/skills/`
6. 项目本地 Amp / Copilot 技能: `.agents/skills/`
7. Amp 全局技能: `~/.config/agents/skills/`
8. Amp 旧版全局技能: `~/.config/amp/skills/`
对于**生成**的书籍技能,请选择用户宿主 Agent 实际能够发现的目标位置(见 Step 5)。如果存在多个有效的根目录,**请询问用户一次并在会话中记住该答案 — 不要静默使用默认值**。
---
## Step 0 — 范围外检查 (Out-of-scope check)
如果没有提供参数,请停止并回复:
> "book-to-skill 需要支持的文档路径、文件夹或 glob 模式。用法:`book-to-skill <文档文件夹或glob路径>... [技能名称-slug]`"
在整个工作流中:
- 识别输入路径和可选的技能 slug。
- 如果最后一个参数不是存在或匹配任何文件的文件、文件夹或 glob,并且它看起来像一个技能 slug(例如小写字母和连字符的组合),请将其视为 `SKILL_NAME`。
- 将所有其他参数视为 `INPUT_PATHS` 列表。
- 如果任何输入路径是一个现有的技能目录(包含 `SKILL.md` 和 `chapters/` 子文件夹),或者 `SKILL_NAME` 与 `SKILLS_HOME` 中现有的技能 slug 匹配,请将此次运行标记为 **更新/融入 (Update/Fold-in)** 操作 (模式 4)。
---
## Step 1 — 验证输入 (Validate input)
验证 `INPUT_PATHS` 中至少有一个受支持的文件、目录或 glob 模式。
对于目录和 globs,展开它们以寻找匹配的受支持文件 (`.pdf`, `.epub`, `.docx`, `.txt`, `.md`, `.markdown`, `.rst`, `.adoc`, `.html`, `.htm`, `.rtf`, `.mobi`, `.azw`, `.azw3`)。
如果没有找到受支持的文件,请显示清晰的错误信息并停止。
---
## Step 1.5 — 识别内容类型 (Identify content type)
在提取之前,向用户提问:
> "这些来源包含哪种类型的内容?这将帮助我选择最佳的提取方法。
>
> 1. **技术类 (Technical)** — 包含代码块、表格、公式、图表(如编程书籍、学术论文、架构指南)
> 2. **纯文本类 (Text-heavy)** — 主要是文字,几乎没有表格/代码(如管理、生产力、叙事性非虚构类)
> 3. **不确定 (Not sure)** — 我将使用快速方法,如果质量受限会提醒你"
将答案存储为 `BOOK_TYPE`:
- 选项 1 → `BOOK_TYPE=technical`
- 选项 2 → `BOOK_TYPE=text`
- 选项 3 → `BOOK_TYPE=text`
**如果 `BOOK_TYPE=technical`**,在继续之前通知用户:
> "📐 已选择技术模式 — 将使用 Docling 进行结构感知提取(保留表格、代码块、公式为 markdown 格式)。这大约需要 1.5 秒/页,因此较长的文档可能需要几分钟。现在开始执行…"
**如果 `BOOK_TYPE=text`**,通知用户:
> "📄 已选择纯文本模式 — 将为每种文件类型使用最快的合适提取器。纯文本/Markdown/HTML 通常在几秒内准备就绪;PDF 只要可用就会优先使用 pdftotext。"
---
## Step 2 — 从源文档提取文本 (Extract text)
运行提取脚本,传入输入路径:
```bash
SCRIPT_PATH=""
for candidate in \
"$HOME/.copilot/skills/book-to-skill/scripts/extract.py" \
"$HOME/.agents/skills/book-to-skill/scripts/extract.py" \
"$HOME/.claude/skills/book-to-skill/scripts/extract.py" \
".github/skills/book-to-skill/scripts/extract.py" \
".claude/skills/book-to-skill/scripts/extract.py" \
".agents/skills/book-to-skill/scripts/extract.py" \
"$HOME/.config/agents/skills/book-to-skill/scripts/extract.py" \
"$HOME/.config/amp/skills/book-to-skill/scripts/extract.py"
do
if [ -f "$candidate" ]; then
SCRIPT_PATH="$candidate"
break
fi
done
if [ -z "$SCRIPT_PATH" ]; then
echo "Could not find scripts/extract.py for book-to-skill" >&2
exit 1
fi
PYTHON_BIN="${PYTHON_BIN:-python3}"
if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
PYTHON_BIN="python"
fi
"$PYTHON_BIN" "$SCRIPT_PATH" $INPUT_PATHS --mode <BOOK_TYPE> --install-missing ask
在提取之前,脚本会检查检测到的格式所需的可选 Python 包。如果缺少更好的提取器,它会提示用户使用可用的降级方案。非交互式会话默认使用降级方案,除非明确将 install mode 设置为 yes。
提示 — 预检环境: 运行 "$PYTHON_BIN" "$SCRIPT_PATH" --check 以打印一份按格式分类的提取器安装报告,以及安装缺失组件的确切命令,而不会处理任何文件。当用户报告设置或质量问题时,这非常有用。
此操作将创建:
<tempdir>/book_skill_work/full_text.txt— 所有源合并后提取出的文本,具有清晰的视觉边界。<tempdir>/book_skill_work/metadata.json— 总体合并大小、字数、页数、token 计数,以及单独处理的sources的详细列表。
读取 <tempdir>/book_skill_work/metadata.json 以检查结果。
Step 2.5 — 预检成本估算 (Pre-flight cost estimate)
读取 <tempdir>/book_skill_work/metadata.json 并在进行任何生成操作之前向用户提供预估:
📖 检测到来源:<总来源数> 个
<列出 sources metadata 列表中的每个源文件名和格式>
📄 合计页数/章节:约 <N> | 字数:约 <N> | 总 Token 数:约 <N>K
💰 预估 Token 成本 (完整转换 / 更新):
输入 (读取 + 提示词):约 <N>K tokens
输出 (生成/更新技能文件):约 <N>K tokens
总计: 约 <N>K tokens
成本预估:请将上述 Token 数乘以您当前所用模型的
输入/输出每百万 Token 费率(因模型和定价经常变动,
此处不写死金额;请引用今日的费率并注明为预估)。
⏱ 预估时间:约 <N> 分钟
📁 将生成/更新的文件:
SKILL.md + 章节文件 + glossary(术语表) + patterns(模式) + cheatsheet(速查表)
➡ 是否继续进行完整转换 / 更新?(或回复 "analyze only" 以先进行预览)
如何估算:
-
输入 tokens ≈ metadata 中的
estimated_tokens× 1.3(每个章节生成的提示词开销) -
输出 tokens ≈ 章节数 × 每章预算 + 4,000 (SKILL.md) + 4,500 (术语表 + 模式 + 速查表)
-
根据
BOOK_TYPE确定每章预算中位数(DEPTH在 Step 4 决定,可能会提高它):text≈ 1,000,technical≈ 1,800。如果用户已表明只是参考而非深度学习,使用 Step 7 矩阵的对应行。 -
成本:报告 Token 数量,并乘以用户当前的每百万 Token 输入/输出费率。不要硬编码具体的美元数字 — 标注这是一个预估值和当前日期。
等待用户确认后再继续。如果他们说“仅分析 (analyze only)”,则切换到模式 2。
Step 2.6 — 针对大型书籍的 REPL 式访问 (> 50k tokens)
灵感来自递归语言模型 (RLM) 范式:将 full_text.txt 视为可查询的语料库,而不是一次性通读的文件。将整个文件加载到上下文中会耗尽后续生成所需的 Token 预算。
对于超过 50k tokens 的书籍,优先使用程序化探测,而不是无边界的 Read(full_text.txt):
# 在读取前检查大小
wc -w "$FULL_TEXT_PATH"
# 无需加载整个文件即可找到章节偏移量
grep -n -E "^\s*(Chapter|CHAPTER|第.*章)\s+[0-9]+" "$FULL_TEXT_PATH" | head -40
# 仅提取需要的章节 (提取 start..end 之间的行)
sed -n '<start>,<end>p' "$FULL_TEXT_PATH"
# 在 SKILL.md 宣称某框架前,验证它确实被提及
grep -c -i "westrum\|dora" "$FULL_TEXT_PATH"
# 使用带有 offset/limit 的目标读取,避免转储完整文件
# Read(file_path=full_text.txt, offset=<line>, limit=<lines>)
在 Step 3 (结构分析)、Step 7 (每章摘要) 和 Step 8 (术语/模式提取) 中使用这种方法。对于低于 50k tokens 的书籍,单次 Read 即可。
为什么这很重要:一本 200 页的书约 75k tokens。每章重读一次(假设28个传递)耗费约 2M 输入 tokens;使用 grep + sed 仅提取相关片段,使生成成本与输出成正比,而不是与源文件成正比。
Step 3 — 分析书籍结构 (Analyze book structure)
读取提取出的 full_text.txt 的前 8,000 个字符,以识别:
- 书籍 书名 (Title) 和 作者 (Author)
- 章节结构(查找“第 N 章”、“PART I”、带编号的标题、目录)
- 核心主题 和学科领域
- 约略的章节数量
然后如果存在目录 (Table of Contents) 部分,请阅读它以映射所有章节。
如果模式是“仅分析 (Analyze Only)”: 立即生成提取报告并停止。格式如下:
## 提取报告 — <书名>
### 作者的核心框架
- **<框架名称>**: <它是什么以及何时应用>
### 关键原则
- <原则>: <可执行的规则>
### 技术与方法
- <技术>: <分步指南或操作方法>
### 反模式
- <要避免什么>: <原因>
### 建议的技能名称
`{作者姓氏}-{核心概念}` — 例如 `cialdini-influence`
### 检测到的章节
| # | 标题 | 主要框架 |
Step 4 — 询问意图 (仅限完整转换)
在生成之前,向用户提问:
"这个技能主要用来帮你做什么?(可多选)
- 在工作时应用作者的框架
- 运用作者的心智模型进行思考
- 参考特定的章节和概念
- 以上全部"
利用该答案来决定 SKILL.md “核心内容 (Core)” 部分的侧重点。
从中推导出 DEPTH 参数(不需要额外提问):
- 答案只有选项 3 (参考) →
DEPTH=reference— 精简、便于快速查阅的章节。 - 答案包含 1、2 或 4 →
DEPTH=study— 更有深度的章节,包含更多具体案例、示例和推理过程。
DEPTH 和 BOOK_TYPE 共同决定了 Step 7 中的单章 Token 预算。千万不要单独问一个“学习还是参考”的问题——这会在这里自动推断。(在跳过 Step 4 的模式 2/3 中,默认 DEPTH=study。)
Step 5 — 确定技能名称 (Determine skill name)
如果提供了 SKILL_NAME,将其作为技能 slug。
否则,提出两个选项让用户选择:
- 按作者-概念:
{作者姓氏}-{核心概念}(例如cialdini-influence,meadows-systems) - 按书名: 提取书名的拼音或英文小写及连字符 (例如
designing-data-intensive-apps)
如果该书具有很强的方法论特征,默认推荐“作者-概念”格式。
选择目标技能根目录 (SKILLS_HOME)。探测用户文件系统中存在的技能位置,并根据用户当前运行的宿主进行选择:
| 宿主 Agent | 个人技能根目录 (按顺序探测) | 项目本地根目录 |
|---|---|---|
| GitHub Copilot CLI | ~/.copilot/skills → ~/.agents/skills |
.github/skills → .claude/skills → .agents/skills |
| Amp | ~/.agents/skills → ~/.config/agents/skills → ~/.config/amp/skills |
.agents/skills |
| Claude Code | ~/.claude/skills |
.claude/skills |
选择规则:
- 如果磁盘上正好存在一个宿主的候选根目录,直接使用而不询问。
- 如果都不存在(新机器),询问用户要创建哪个根目录——提供适合该宿主的选项并在会话中记住选择。不要静默选择。
- 如果用户明确要求输出为项目本地(project-local),优先选择项目本地的那一行。
- 如果无法识别宿主,询问:"你是在哪个 Agent 中运行此操作的 — GitHub Copilot CLI、Amp 还是 Claude Code?"
将 SKILLS_HOME 设置为选定的根目录,并检查 $SKILLS_HOME/<skill_name>/ 是否已存在。
如果已存在,提示用户选择:
- 更新 / 融入 (Update / Fold-in) (模式 4) — 将新文件/内容整合到现有的技能组件中。
- 覆盖 (Overwrite) — 删除并从头重新生成该技能。
- 重命名 (Rename) — 附加
-2或使用其他自定义 slug。
如果用户选择 更新 / 融入,请直接跳至 Step 2.5 之后的 更新 / 融入工作流部分(跳过 Step 3, 4, 6, 7, 8, 9)。
Step 6 — 创建技能目录结构
mkdir -p "$SKILLS_HOME/<skill_name>/chapters"
Step 7 — 生成章节摘要
TOKEN 预算规则 — 极度重要 (自适应):
单章预算随 BOOK_TYPE 和 DEPTH 缩放。技术章节需要空间放代码和表格;学习深度需要空间放推演过程。从以下矩阵中选择预算:
DEPTH=reference (参考) |
DEPTH=study (学习) |
|
|---|---|---|
BOOK_TYPE=text (文本) |
800–1,200 tokens | 1,000–1,800 tokens |
BOOK_TYPE=technical (技术) |
1,200–1,800 tokens | 2,000–3,000 tokens |
- 这些是单文件目标,而不是硬上限 — 内容密集的章节可以超出,内容单薄的可以低于。密度始终胜过长度(质量规则 #3):绝不要为了凑字数而填充内容。
- 文件按需加载,只有真正阅读某章节时,较长的章节才会消耗 Token。
- 当在两个单元格之间犹豫时(如混合内容书籍),使用较低的预算,让深度来自精确度而非字数。
DEPTH=study 是用实际内容挣来的,而不是数字游戏。 标准的小节模板(核心观点 → 关联概念)自然会让一篇密集的文字章节落在 700–900 Tokens 左右。要真正达到学习(study)预算的地步 —— 而不是水字数 —— 学习深度的章节必须添加具体的材料:
- 重现章节中的一个具体推演案例或产出物(例如:新闻稿示例、对话范例、填写好的模板、作者从头到尾演练的决策过程),放在
## 案例推演 (Worked Example)小节下。这是最大的抓手,也是学习者回头查阅的主要原因。 - 扩展每个框架的“如何做 (How)”,写出明确的步骤或标准,而不是一句废话。
- 为最核心的 1-2 个框架补充“为什么有效 / 失败模式”。
如果某章节确实没有推演示例,且很难扩写,那就让它低于“study”的预算下限,而不是强行注水 — 并在文档中说明该章节的核心观点较为单薄。相反,reference 深度的章节则有意省略推演示例,只保留准备用于决策的精要。
对于 Step 3 中识别出的每个章节/主要部分:
读取提取出的 full_text.txt 相应部分(使用字符偏移量或 grep 查找章节标题)。
使用以下结构创建 $SKILLS_HOME/<skill_name>/chapters/ch<NN>-<slug>.md。
根据 BOOK_TYPE 调整侧重点:
technical→ 优先考虑“代码示例 (Code Examples)”、“参考表格 (Reference Tables)”和“命令与API (Commands & APIs)”;精准保留语法。text→ 优先考虑“引入的框架 (Frameworks Introduced)”、“心智模型 (Mental Models)”和“核心要点 (Key Takeaways)”;忽略空的技术部分。
# 第 N 章: <完整标题>
## 核心观点 (Core Idea)
<1–2 句话:本章教授的最重要的一件事>
## 引入的框架 (Frameworks Introduced)
- **<框架名称>**: <精确的表述 — 保留作者的命名>
- 何时使用: <特定情境>
- 如何操作: <步骤或标准>
## 关键概念 (Key Concepts)
- **<术语>**: <用1句话精确定义>
(本章最重要的 5–10 个术语)
## 心智模型 (Mental Models)
<2–4 个框架或思考工具。写成 "当 Y 发生时,使用 X" 或 "将 X 视为 Y">
## 反模式 (Anti-patterns)
- **<应避免什么>**: <为什么它会失败>
## 代码示例 (Code Examples) *(仅技术类书籍 — 如果是纯文本则省略)*
<!-- 复制本章最具指导意义的代码片段。严格保留缩进。 -->
```<language>
<本章的关键代码示例>
- 它展示了什么: <一句话总结>
参考表格 (Reference Tables) (仅技术类书籍 — 如果是纯文本则省略)
案例推演 (Worked Example) (仅限 DEPTH=study — 如果是 reference 则省略)
核心要点 (Key Takeaways)
- <可执行的洞察>
- <可执行的洞察>
- <可执行的洞察>
(从业者必须记住的 3–7 个要点)
关联概念 (Connects To)
- 第 N 章: <为什么本章与其相关>
- <概念>: <与之相连的外部概念或标准>
---
## Step 8 — 生成支持文件
### glossary.md (术语表)
创建 `$SKILLS_HOME/<skill_name>/glossary.md`:
- 书中每个重要的术语,按字母 (或拼音) 排序
- 格式: `**术语** — 定义 (第 N 章)`
- 最多 1,500 tokens
### patterns.md (模式与技术)
创建 `$SKILLS_HOME/<skill_name>/patterns.md`:
- 书中所有具体的技术、设计模式、算法
- 格式: `## 模式名称\n**何时使用**: ...\n**如何操作**: ...\n**权衡与妥协**: ...`
- 最多 2,000 tokens
### cheatsheet.md (速查表)
创建 `$SKILLS_HOME/<skill_name>/cheatsheet.md`:
**这是该技能最具差异化的层面——请将其视为“推理辅助工具”,而不是关键词列表。** 任何人都可以去术语表 grep 搜索一个词。速查表捕捉的是作者的**判断力**:他们会做什么决定,以及为什么。这个文件能把“我知道这些词”变成“我会像作者那样行动”。
按优先顺序包括:
1. **决策规则 (Decision rules)** — “遇到 X,就做 Y,因为 Z。” 阐述作者采用的“如果/那么”逻辑,让读者不需重读书籍就能直接应用。
2. **决策树 / 流程图 (Decision trees)** (以嵌套列表或小型表格的形式) — 用于具有两个以上分支的选择。
3. **权衡矩阵 (Trade-off matrices)** — 针对作者关注的维度对竞争选项进行评分,使读者能在自己的约束条件下做出选择。
4. **阈值与默认值 (Thresholds & defaults)** — 作者承诺的特定数字、比率或经验法则(例如“保持函数在 20 行以内”、“当错误预算 < 10% 时触发警报”)。
5. **迹象与嗅觉 (Tells & smells)** — 快速识别情况的启发式方法(“如果你看到 X,你可能遇到了麻烦 Y”)。
避免:单纯的“术语→定义”行(那属于术语表),以及长篇大论的段落(那属于章节)。每一行都应该帮助读者*做出决定*。
- 尽量将其格式化为紧凑的表格和决策规则;也就是那种你希望在一张 A4 纸上打印出来放在手边工作的内容。
- 最多 1,200 tokens。
---
## Step 9 — 生成主 SKILL.md
**极其关键的 Token 预算:保持 SKILL.md 主体在 4,000 tokens 以内。**
Agent 会从末尾截断内容 — 将最重要的内容放在最前面。
创建 `$SKILLS_HOME/<skill_name>/SKILL.md`(注意保持 frontmatter 键名为英文):
```markdown
---
name: <skill_name>
description: "提取自 <Author(s)> 著作《<完整书名>》的知识库。当你在 <核心主题,3-6 个术语> 的工作上应用作者的框架,或希望学习该书、参考其概念时使用此技能。"
---
<!-- argument-hint: [主题, 框架名称, 或章节编号] -->
# <完整书名>
**作者**: <Author(s)> | **页数**: 约 <N> | **章节数**: <N> | **生成时间**: <YYYY-MM-DD>
## 如何使用本技能 (How to Use This Skill)
- **无参数** — 加载核心框架作为参考
- **提供主题** — 询问关于 `replication`、`定价` 或索引中的其他主题;我会找到并阅读相关章节
- **提供章节** — 请求 `ch05`;我会加载该特定章节
- **浏览** — 问“你有什么章节?”以查看完整索引
当您询问核心框架(Core Frameworks)中未涵盖的主题时,我会在回答前去阅读相关的章节文件。
---
## 核心框架与心智模型 (Core Frameworks & Mental Models)
<!-- 约 2,000 tokens:作者最重要且命名的框架和原则。
保留精确的名称。写成 "当 Y 时使用 X"、"优先选 X 而非 Y,因为 Z"。
这是一个工具箱,不是摘要。 -->
<在此处生成 2,000 tokens 的最关键框架和深刻见解>
---
## 章节索引 (Chapter Index)
| # | 标题 | 关键框架 |
|---|-------|----------------|
| [ch01](chapters/ch01-<slug>.md) | <章节标题> | <框架1>, <框架2> |
| [ch02](chapters/ch02-<slug>.md) | <章节标题> | <框架1>, <框架2> |
...
## 主题索引 (Topic Index)
<!-- 字母或拼音排序。主要术语/框架 → 涵盖它们的章节。 -->
- **<术语>** → ch<N>[, ch<N>]
- **<术语>** → ch<N>
## 支持文件 (Supporting Files)
- [glossary.md](glossary.md) — 所有关键术语及其定义
- [patterns.md](patterns.md) — 所有技术和设计模式
- [cheatsheet.md](cheatsheet.md) — 快速参考表和决策指南
---
## 范围与限制 (Scope & Limits)
本技能仅涵盖书籍内容。若要在代码库中实际实施,请结合针对特定项目的工具。对于超出本书范围的主题,请查看相关技能或直接询问 Agent。
Step 9.5 — 扫描生成的技能 (Scan the generated skill)
在向用户报告成功、在另一个会话中加载技能或发布它之前,运行建议性安全扫描:
SKILL_CONVERTER_ROOT="$(cd "$(dirname "$SCRIPT_PATH")/.." && pwd)"
"$PYTHON_BIN" "$SKILL_CONVERTER_ROOT/tools/scan_generated_skill.py" "$SKILLS_HOME/<skill_name>"
如果扫描仪以非零状态退出,请停止并要求人类检查其找出的文件/行信息。不要静默重写生成的文件,在发现被解决或人类明确接受之前,不要加载或发布该技能。
Step 10 — 清理并报告 (Cleanup and report)
PYTHON_BIN="${PYTHON_BIN:-python3}"
if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
PYTHON_BIN="python"
fi
"$PYTHON_BIN" - <<'PY'
import os
import shutil
import tempfile
from pathlib import Path
shutil.rmtree(
os.environ.get("BOOK_SKILL_WORKDIR", Path(tempfile.gettempdir()) / "book_skill_work"),
ignore_errors=True,
)
PY
然后向用户报告:
✅ 技能创建成功: $SKILLS_HOME/<skill_name>/
📚 书籍: <完整书名> — <作者>
📄 页数: 约 <N> | 章节: <N>
已生成文件:
SKILL.md — 核心框架 + 索引 (约 X tokens)
chapters/ — <N> 个章节摘要 (每个约 X tokens, 总计约 X)
glossary.md — 关键术语 (约 X tokens)
patterns.md — 技术与模式 (约 X tokens)
cheatsheet.md — 快速参考 (约 X tokens)
─────────────────────────────────────────────────────
技能总大小: 约 X tokens (按需加载,绝非一次性读取)
💡 提示: 检查你的 Agent 会话成本/用量命令,以查看实际的 Token 使用情况。
使用方法:
请求 <skill_name> → 加载核心框架
向 <skill_name> 询问 <某主题> → 查找并解释该主题
向 <skill_name> 请求 ch<N> → 深入特定章节
重新加载 (如果您的 Agent 无法自动检测新技能):
GitHub Copilot CLI: /skills reload
Claude Code: 重启会话
Amp: 重启会话
分享此技能 (Copilot 生态系统,可选):
gh skill publish $SKILLS_HOME/<skill_name>
更新 / 融入工作流 (Update / Fold-in Workflow)
在对 $SKILLS_HOME/<skill_name>/ 的现有技能执行“更新/融入”操作时:
1. 读取现有技能结构
读取并解析现有技能的文件:
- 读取
$SKILLS_HOME/<skill_name>/SKILL.md解析现有的章节索引 (Chapter Index)、主题索引 (Topic Index)、元数据(作者、总章节数)和核心框架 (Core Frameworks)。 - 列出
$SKILLS_HOME/<skill_name>/chapters/中的所有文件,以找到最高章节号(例如ch12)。 - 读取
glossary.md、patterns.md和cheatsheet.md以了解已经索引了哪些术语和框架。
2. 匹配内容 & 识别“修订”与“新增”
分析 <tempdir>/book_skill_work/full_text.txt 中的新提取文本,以确定新内容是否代表:
- 现有章节的更新/修订:如果新内容的某部分直接更新或扩展了现有章节的主题,请读取现有章节文件,将新细节合并进去,并重写该文件。
- 全新增加的内容:如果内容引入了新章节、论文或独立部分,请在
chapters/下创建新章节摘要文件。从现有最高章节号之后开始编号(例如,如果现有章节到ch12结束,则创建ch13-*.md、ch14-*.md等)。
3. 生成或更新章节摘要文件
对于每个新增或修订的章节:
- 读取提取出的新文本的相应部分。
- 遵循 Step 7 中的格式指南构建摘要。
- 在
$SKILLS_HOME/<skill_name>/chapters/中写入/更新文件。
4. 合并支持文件
-
合并 glossary.md:
-
读取现有的
$SKILLS_HOME/<skill_name>/glossary.md。 -
根据 Step 8 的指南从新内容中提取所有新术语及其定义。
-
组合并按字母(拼音)顺序排列现有和新术语。
-
如果术语已存在,将新章节/来源参考附加到其后(例如
**术语** — 定义 (第 4 章, 第 13 章))。 -
用完全合并且排序的列表重写
glossary.md。 -
合并 patterns.md:
-
读取现有的
$SKILLS_HOME/<skill_name>/patterns.md。 -
从新内容中提取任何新颖的技术、算法或模式。
-
附加新模式,确保格式一致,并保持总长度简洁(2,500 tokens 以内)。
-
合并 cheatsheet.md:
-
读取现有的
$SKILLS_HOME/<skill_name>/cheatsheet.md。 -
提取新的对比规则、决策表或参数指南。
-
将它们干净利落地整合到现有的速查表结构中。
5. 重新生成主 SKILL.md
更新主技能文件 $SKILLS_HOME/<skill_name>/SKILL.md:
- 元数据 (Metadata):增加章节数,更新估计的页数,并在合适的情况下添加新的源名称。将
Generated (生成时间)更新为当前日期。 - 核心框架 (Core Frameworks):将新内容中影响最大的心智模型或原则折叠进去(确保整体文件保持在 4,000 tokens 以内)。
- 章节索引 (Chapter Index):将新章节附加到索引表中,并链接到新创建的文件。
- 主题索引 (Topic Index):按字母顺序合并新主题。如果现有主题也在新章节中涉及,将新章节链接附加到其所在行(例如
- **主题** → ch05, ch13)。
6. 扫描、清理并报告
文件成功写入并合并后,运行 Step 9.5,然后进入 Step 10 执行清理,并打印一份自定义的更新报告,总结新添加的章节、合并的术语表词条以及更新的索引。
质量规则 (Quality Rules)
- 提取结构,不是写读后感 — 捕捉命名的框架、精确的表述、反模式;而不是写“本章讲了什么”的流水账。
- 保留作者的精确性 — “5问法” ≠ “多问几次为什么”;保留精准命名。
- 密度胜过完整性 — 1,000 tokens 的高密度精华胜过 10,000 tokens 的摘录。
- 从业者语调 — 写“当 Y 发生时,执行 X”,而不是写“书里解释了 X”。
- 前置 SKILL.md — Agent 会从尾部截断长达 5,000 tokens 以上的上下文;最关键的内容必须放在最前面。
- 章节文件是按需加载的 — 在被明确加载(Load/Read)之前,它们不会计入技能的 Token 预算。
- 永远不要原文复制整段书籍文本 — 始终要提炼、总结、提取有价值的信号。
- 主题索引至关重要 — 它是 Agent 准确导航并找到合适章节文件的唯一地图。

浙公网安备 33010602011771号