静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
✨步子哥 @steper · 2026-06-20 17:11

---

name: book-to-skill description: "将典籍与文书(PDF、EPUB、DOCX、HTML、Markdown、纯文、RTF,及藉Calibre之MOBI/AZW)化作结构化代理技能,抽取框架、心智模型、原则、技法与反模式。凡欲藉GitHub Copilot CLI、Amp或Claude Code研读一文,应用作者之框架于实务,或自文件筑可复用知识库者,皆可用之。"

---

book-to-skill 转换器

化书写之知为代理可行之技——抽其结构,非撮要成篇。

理念

书者,岁积月累之智晶也。其框架、原则、技艺,非一朝可得。此术非撮要成篇,乃化其结构为代理可反复调用之利器。

抽结构,非撮要。 技能非书评,乃一 toolkit 也,内含:

  • 已名之框架(心智模型,应用情境清晰)
  • 可行之原则(导决策之规)
  • 技法(步步之法)
  • 反模式(当避者与所以)
  • 声调校准(作者思与言之道)
存作者之精微。 框架之名,往往有故。“五问法”不可与“多问何故”互换。须录其确切之式。

层深适度。 简书出简技。繁书具十余框架者,则技能附参考档与按需章节。

---

运作模式

有四途可循,视君所求而定。

1. 完全转换(默认)

触发: 君提供一个或多个文档/目录/glob 路径,且无特别指示。 动作: 运行以下全部步骤(Step 0–9)。 输出: 完整技能,含 SKILL.md、chapters/、glossary、patterns、cheatsheet。

2. 仅分析

触发: 君言“analyze”“just extract”或“我欲先审再生成”。 动作: 运行 Step 0–3,产出结构化抽取报告(框架、原则、技法)。止步,不生成技能文件。 输出: 分析报告,供君审阅。

3. 依前分析生成

触发: 君已有分析笔记,或曾运行“仅分析”。 动作: 跳过 Step 0–3,以君提供之分析为输入,运行 Step 4–9。 输出: 依分析生成之技能文件。

4. 更新 / 折入(既有技能)

触发: 君提供新源路径,并指明欲更新既有技能(或指向既有技能文件夹,或给已存在之 slug,或明确要求更新)。 动作: 运行 Step 0(范围检查)、Step 1(验证输入)、Step 1.5(辨内容类型)、Step 2(抽取新文件)。然后跳至 Step 5(识别既有技能路径),执行更新 / 折入流程,将新内容并入既有技能文件。 输出: 更新后之既有技能,新/修订章摘要与合并索引/术语表。

---

技能存放处

此转换器可运行于多处技能系统。寻其辅助脚本或写生成之书技能时,优先以下位置:

1. GitHub Copilot CLI 个人技能:~/.copilot/skills/ 2. 跨代理个人技能(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/

生成之书技能,择君之主机代理实能发现之目的地(见 Step 5)。若有多处有效根目录存在,问君一次,记住本次会话之答,不默默认值。

---

Step 0 — 范围检查

若无参数,止步并应:

> "book-to-skill 需一受支持之文档路径、文件夹或 glob 模式。用法:book-to-skill <文档文件夹或glob路径>... [技能slug]"

全程:

  • 识输入路径与可选技能 slug。
  • 若末参数非文件、文件夹或匹配文件之 glob,且形似技能 slug(小写连字符、字母数字),则视之为 SKILL_NAME
  • 其余参数皆为 INPUT_PATHS 列表。
  • 若任一输入路径为既有技能目录(含 SKILL.mdchapters/ 子文件夹),或 SKILL_NAME 匹配 SKILLS_HOME 中既有技能 slug,则标此运行为更新/折入操作(模式 4)。
---

Step 1 — 验证输入

INPUT_PATHS 中至少有一受支持文件、目录或 glob 模式。 对目录与 glob,展开之,寻匹配之受支持文件(.pdf.epub.docx.txt.md.markdown.rst.adoc.html.htm.rtf.mobi.azw.azw3)。

若无受支持文件,止步,给清晰错误讯息。

---

Step 1.5 — 辨内容类型

抽取前,问君:

> "这些源含何种内容?此有助于择最佳抽取法。 > > 1. 技术型 —— 有代码块、表格、公式、图表(例如编程书、学术论文、架构指南) > 2. 文字为主 —— 多为散文,少或无表格/代码(例如管理、生产力、叙事非虚构) > 3. 不确定 —— 我将用快速法,若品质似有限,会警示"

存答为 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 — 自源文档抽取文字

运行抽取脚本,传输入路径:

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 包。若缺更优抽取器,则提示君可用回退。非交互会话默认回退,除非安装模式明确为 yes

提示——预检环境: 运行 "$PYTHON_BIN" "$SCRIPT_PATH" --check,可印各格式抽取器安装情况与安装缺失包之确切命令,而不处理任何文件。君报安装或品质问题时有用。

此步产出:

  • /book_skill_work/full_text.txt —— 所有源合并抽取文字,边界清晰 demarcated。
  • /book_skill_work/metadata.json —— 合并大小、字数、页数、token 数,以及各处理源之详表。
/book_skill_work/metadata.json 以检结果。

---

Step 2.5 — 预飞成本估算

/book_skill_work/metadata.json生成前先给君估算:

📖 检出源:<total_sources> 个源
<逐列出各源文件名与格式>
📄 合并页/节:约 <N> | 字数:约 <N> | 总 token:约 <N>K

💰 估算 token 成本(完全转换 / 更新):
   输入(读取 + 提示):约 <N>K tokens
   输出(生成/更新技能文件):约 <N>K tokens
   合计:约 <N>K tokens

   参考价格(2025 年):
   Claude Sonnet 4.5 → 约 $<X> USD
   Claude Haiku 4.5  → 约 $<X> USD

   ⏱  估算耗时:约 <N> 分钟

📁 将生成/更新之文件:
   SKILL.md + 章节文件 + 术语表 + 模式 + 速查表

➡  是否继续完全转换 / 更新?(或输入 "analyze only" 先预览)

估算法:

  • 输入 token ≈ metadata 之 estimated_tokens × 1.3(每章提示开销)
  • 输出 token ≈ 章数 × 每章预算 + 4,000(SKILL.md) + 4,500(术语表 + 模式 + 速查表)
  • 每章预算中值依 BOOK_TYPE(DEPTH 后定,可上调):text ≈ 1,000,technical ≈ 1,800。若君已示参考 vs 深研,用 Step 7 矩阵对应行。
  • 价格:Sonnet input=$3/MTok output=$15/MTok — Haiku input=$0.80/MTok output=$4/MTok
待君确认方行。若君言“analyze only”,转模式 2。

---

Step 2.6 — 大书(> 50k tokens)之 REPL 式访问

受 Recursive Language Model (RLM) 启发:视 full_text.txt 为可查询语料,而非一次性读入。全文入上下文,耗费本可留给生成之预算。

对超 ~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

# 仅取所需章(含起止行)
sed -n '<start>,<end>p' "$FULL_TEXT_PATH"

# 认领框架前先验其确有提及
grep -c -i "westrum\|dora" "$FULL_TEXT_PATH"

# 带偏移/限制之 targeted Read,避免倾倒全文
# Read(file_path=full_text.txt, offset=<行>, limit=<行数>)

Step 3(结构分析)、Step 7(每章摘要)、Step 8(术语表/模式抽取)皆用此法。50k tokens 以下之书,单次 Read 即可。

何以重?200 页书约 75k tokens。每章重读一次(28 遍)耗 ~2M 输入 token;用 grep + sed 仅取相关片,生成成本与输出成比例,而非与源成比例。

---

Step 3 — 分析书结构

读抽取 full_text.txt 之前 8,000 字符,识:

  • 标题作者
  • 章结构(寻“Chapter N”、“PART I”、编号标题、目录)
  • 核心主题与学科域
  • 约章数
再读目录部分(若有),映射全章。

若模式为“仅分析”: 即产抽取报告并止。结构:

## 抽取报告 —— <标题>

### 作者核心框架
- **<框架名>**:<何为及何时用>

### 关键原则
- <原则>:<可行之规>

### 技法与方法
- <技法>:<步步或如何做>

### 反模式
- <当避者>:<所以>

### 建议技能名
`{作者姓氏}-{核心概念}` —— 例如 `cialdini-influence`

### 检出章节
| # | 标题 | 主要框架 |

---

Step 4 — 问目的(仅完全转换)

生成前,问君:

> "此技能欲助君何为?(可选一项或多项) > 1. 实务中应用作者框架 > 2. 以作者心智模型思考 > 3. 参考特定章与概念 > 4. 以上皆是"

用答加权 SKILL.md 核心部分所强调者。

自答推 DEPTH(不另问):

  • 仅选选项 3(参考)→ DEPTH=reference —— 轻量、快速查阅章。
  • 含选项 1、2 或 4 → DEPTH=study —— 更深章,含更多实作细节、例与推理。
DEPTHBOOK_TYPE 共定 Step 7 每章 token 预算。(模式 2/3 跳 Step 4 时,默认 DEPTH=study。)

---

Step 5 — 定技能名

若已给 SKILL_NAME,用之为 slug。 否则,提两选项,待君择:

  • 作者-概念式{作者姓氏}-{核心概念}(例如 cialdini-influencemeadows-systems
  • 书名式:书名小写连字符(例如 designing-data-intensive-apps
书有强方法论身份时,默认作者-概念式。

择技能根目录(SKILLS_HOME)。探君文件系统既有技能根,按君运行之主机择:

主机代理个人技能根(探序)项目本地根
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
择规: 1. 若主机候选根恰有一存在于磁盘,无问即用。 2. 若(新机),问君欲建哪根——呈主机适配选项,记住本次会话选择。不默默认。 3. 若君明确要项目本地输出,优先项目本地行。 4. 若不能识主机,问:“君运行于何代理——GitHub Copilot CLI、Amp 或 Claude Code?”

SKILLS_HOME 为所选根,查 $SKILLS_HOME// 是否已存在。 若存在,提示君择: 1. 更新 / 折入(模式 4)—— 将新文件/内容并入既有技能组件。 2. 覆盖—— 删除并自头重生成。 3. 改名—— 追加 -2 或用不同自定义 slug。

若君选更新 / 折入,跳过 Step 3、4、6、7、8、9,直接行更新 / 折入流程(Step 2.5 后)。

---

Step 6 — 建技能目录结构

mkdir -p "$SKILLS_HOME/<skill_name>/chapters"

---

Step 7 — 生成章摘要

TOKEN 预算规则——要紧(自适应):

每章预算随 BOOK_TYPEDEPTH 伸缩。技术章需容代码与表格;深研需容实作推理。自下表择预算:

DEPTH=referenceDEPTH=study
BOOK_TYPE=text800–1,200 tokens1,000–1,800 tokens
BOOK_TYPE=technical1,200–1,800 tokens2,000–3,000 tokens
  • 此为每文件目标,非硬上限——密章或超,薄章或不及。密度胜长度(质量规则 3):勿为凑数而垫。
  • 文件按需载入,故大章仅在实读时耗 token。
  • 疑难时择较低预算,让深度来自精准,而非体积。
DEPTH=study 须以内容挣得,非更大数字。 标准节模板(核心理念 → 关联)自然使散文章落于 700–900 tokens 左右。欲诚实达深研预算——非垫——须加具体料:
  • 重现章中一实作例或工件(例如作者所走之示例新闻稿、对话、填好之模板、决策全程),置于 ## 实作例 节。此为最大杠杆,亦学习者复返所求。
  • 将各框架之“How”展开为明确步骤或判据,非一行了事。
  • 为前 1–2 框架加短“何以奏效 / 失效模式”注
若章真无实作例且抗展开,则让其低于深研底,而非垫——并于核心理念注该章薄。反之,reference 深度章故意略实作例,仅留决策-ready 精要。

对 Step 3 所识每章/大节

读抽取 full_text.txt 对应部分(用字符偏移或 grep 章标题)。

用下结构建 $SKILLS_HOME//chapters/ch-.md

BOOK_TYPE 调强调:

  • technical → 优先“代码例”“参考表”“命令与 API”节;确切存语法
  • text → 优先“引入框架”“心智模型”“关键收获”;空技术节略去
# 第 N 章:<全标题>

## 核心理念
<1–2 句:本章所授最要者>

## 引入框架
- **<框架名>**:<确切表述——存作者命名>
  - 何时用:<具体情境>
  - 如何:<步骤或判据>

## 关键概念
- **<术语>**:<精确定义,一句>
(本章 5–10 最要术语)

## 心智模型
<2–4 框架或思维工具。写为“X 情境用 Y”或“视 X 为 Y”>

## 反模式
- **<当避者>**:<所以失效>

## 代码例(仅技术书——若 BOOK_TYPE=text 则略)
<!-- 复制章中最具启发之片段。确切存缩进。 -->
<语言> <本章关键代码例>
- **示何**:<一句>

## 参考表(仅技术书——若 BOOK_TYPE=text 则略)
<!-- 将章中比较矩阵、参数表或决策表以 markdown 重现。 -->

## 实作例(仅 DEPTH=study——reference 深度略)
<!-- 重现或重构作者所走之一具体例:样本文档、对话、填好模板、前后对比、或决策全程。此为深研章值其预算之关键。忠于源;勿抄长原文——紧凑重构。 -->

## 关键收获
1. <可行洞见>
2. <可行洞见>
3. <可行洞见>
(实践者须记 3–7 条)

## 关联
- **第 N 章**:<何以相联>
- **<概念>**:<所联之外部概念或标准>

---

Step 8 — 生成支撑文件

glossary.md

$SKILLS_HOME//glossary.md
  • 书中所有要术语,字母序
  • 格式:术语 —— 定义(第 N 章)
  • 最多 1,500 tokens

patterns.md

$SKILLS_HOME//patterns.md
  • 书中所有具体技法、设计模式、算法
  • 格式:## 模式名\n何时用:...\n如何:...\n权衡:...
  • 最多 2,000 tokens

cheatsheet.md

$SKILLS_HOME//cheatsheet.md

此为技能最殊层——视之为推理辅,而非关键词表。 任何人皆可 grep 术语表。速查表捕作者之判断:彼将如何决、何以。正是此文件使“识词”变为“我将如作者所为而行”。

优先序: 1. 决策规——“X 时,做 Y,因 Z。”作者所用 if/then 逻辑,述之使读者无需重读书即可用。 2. 决策树 / 流程图(嵌套 bullet 或小表)——多于两分支之选择。 3. 权衡矩阵——竞争选项依作者所重维度评分,使读者可依己约束择。 4. 阈值 & 默认——作者所定具体数字、比率或经验法则(例如“函数保持 ~20 行内”“错误预算 < 10% 时告警”)。 5. 征象 & 气味——速启发识情境(“见 X,恐陷 Y 困境”)。

避: bare 术语→定义行(那是术语表),与散文段(那是章)。每行皆助读者某事。

  • 格式多为紧凑表与决策规;可印一页置案头者。
  • 最多 1,200 tokens。
---

Step 9 — 生成主 SKILL.md

要紧 TOKEN 预算: 保持 SKILL.md 正文 < 4,000 tokens。 压缩自末尾截——最要内容置最前

$SKILLS_HOME//SKILL.md

---
name: <skill_name>
description: "「<全标题>」作者 <作者> 之知识库。凡应用 <作者> 框架于 <关键主题,3–6 词>、研读本书或参考其概念者用之。"
---

<!-- argument-hint: [主题、框架名或章号] -->

# <全标题>
**作者**:<作者> | **页数**:约 <N> | **章数**:<N> | **生成**:<YYYY-MM-DD>

## 如何用此技能

- **无参数** —— 载核心框架供参考
- **带主题** —— 问 `replication`、`pricing` 或其他索引主题;我寻并读相关章
- **带章** —— 求 `ch05`;我载该章
- **浏览** —— 问“有哪些章?”见全索引

当君问及核心框架下未覆主题时,我将先读相关章文件再答。

---

## 核心框架与心智模型
<!-- ~2,000 tokens:作者最要已名框架与原则。
     存确切名。写为“X 情境用 Y”“因 Z 故宁 X 勿 Y”。
     乃 toolkit,非撮要。 -->

<此处生成最要框架与洞见,约 2,000 tokens>

---

## 章索引

| # | 标题 | 关键框架 |
|---|------|----------|
| [ch01](chapters/ch01-<slug>.md) | <标题> | <框架1>、<框架2> |
| [ch02](chapters/ch02-<slug>.md) | <标题> | <框架1>、<框架2> |
...

## 主题索引

<!-- 字母序。主要术语/框架 → 覆之章 -->
- **<术语>** → ch<N>[, ch<N>]
- **<术语>** → ch<N>

## 支撑文件

- [glossary.md](glossary.md) —— 所有关键术语与定义
- [patterns.md](patterns.md) —— 所有技法与设计模式
- [cheatsheet.md](cheatsheet.md) —— 速查表与决策导引

---

## 范围与限界

此技能仅覆本书内容。欲于代码库实作,须与项目特定工具合用。书外主题,请查相关技能或直问代理。

---

Step 10 — 清理与报告

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(按需载入,非全载)

💡 提示:查君代理会话成本/用量命令,见实 token 耗。

用法:
  问 <skill_name>                  → 载核心框架
  问 <skill_name> 关于 <主题>      → 寻并解主题
  问 <skill_name> 要 ch<N>         → 深潜某章

重载(若代理不自检新技能):
  GitHub Copilot CLI:  /skills reload
  Claude Code:         重启会话
  Amp:                 重启会话

分享此技能(Copilot 生态,可选):
  gh skill publish $SKILLS_HOME/<skill_name>

---

更新 / 折入流程

$SKILLS_HOME// 既有技能行更新/折入时:

1. 读既有技能结构

读并析既有技能文件:
  • $SKILLS_HOME//SKILL.md,析章索引主题索引、元数据(作者、总章数)与核心框架
  • $SKILLS_HOME//chapters/ 下所有文件,寻最高章号(例如 ch12)。
  • $SKILLS_HOME//glossary.md$SKILLS_HOME//patterns.md$SKILLS_HOME//cheatsheet.md,视已有术语与框架索引。

2. 匹配内容,识修订 vs 新增

析新抽取 /book_skill_work/full_text.txt,识新内容是否为:
  • 既有章之更新/修订:若新内容直接更新或扩展既有章主题,读既有章文件,合并新细节,重写之。
  • 新添:若引入新章、论文或独立节,则于 chapters/ 下建新章摘要文件。编号自既有最高章号后始(例如既有止于 ch12,则建 ch13-*.mdch14-*.md 等)。

3. 生成或更新章摘要文件

对每新或修订章:
  • 读新抽取文字对应部分。
  • Step 7 格式指南建摘要。
  • 写/更新 $SKILLS_HOME//chapters/ 下文件。

4. 合并支撑文件

  • 合并 glossary.md
  • 读既有 $SKILLS_HOME//glossary.md
  • 自新内容抽所有新术语与定义(Step 8 术语表指南)。
  • 合既有与新术语,字母序。
  • 若术语已存,追加新章/源引用(例如 术语 —— 定义(第 4 章、第 13 章))。
  • 重写 $SKILLS_HOME//glossary.md,为完全合并、字母序列表。
  • 合并 patterns.md
  • 读既有 $SKILLS_HOME//patterns.md
  • 自新内容抽新技法、算法或模式。
  • 追加新模式,格式一致,总长精简(< 2,500 tokens)。
  • 合并 cheatsheet.md
  • 读既有 $SKILLS_HOME//cheatsheet.md
  • 抽新比较规、决策表或参数导。
  • 洁净并入速查表结构。

5. 重生成主 SKILL.md

更新主技能文件 $SKILLS_HOME//SKILL.md
  • 元数据:递增章数,更新估页数,适加新源名。更新 Generated 日期为今日。
  • 核心框架:折入新内容中最具冲击之心智模型或原则(确保全文件仍 < 4,000 tokens)。
  • 章索引:追加新章至索引表,链向新建文件。
  • 主题索引:字母序合并新主题。若既有主题亦为新章所覆,追加新章链(例如 - 主题 → ch05, ch13)。

6. 清理并行 Step 10

文件成功写并合并后,跳 Step 10 做清理,印定制更新报告,总结新添章、合并术语与更新索引。

---

质量守则

1. 抽结构,非撮要 —— 捕已名框架、确切表述、反模式;非章回 2. 存作者之精微 —— “五问法” ≠ “多问何故”;存确切命名 3. 密度胜完备 —— 1,000 token 摘要胜 10,000 token 摘抄 4. 实践者声调 —— 写“X 情境用 Y”,非“书解释 X” 5. 前置 SKILL.md —— 压缩保前 5,000 tokens;最要内容最前 6. 章文件按需 —— 载入前不计入技能预算 7. 勿抄原书文字 —— 恒合成、撮要、抽信号 8. 主题索引要紧 —— 代理赖之以导航至正确章文件

---

暂无表态