Skill Learning

writing-beats

1. Bilingual SKILL.md

左右滑动可直接切换英文版与中文版;两种语言按段落自动对齐。英文中的蓝色虚线词语可点击查看解释。共标记 14 处。

入口 skill:writing-beats左右滑动切换语言 · 段落位置自动对齐
<what-to-do>
The user has passed (or will pass) a markdown file of raw material. This is **exploit**: the exploring is done, the pile is fixed. through it and to fill each beat.
If the user did not say where to save the article, ask once and remember the path.
Then run a beat-by-beat journey, :
1. **Establish the prerequisites.** Before any beats, settle with the user what the audience already knows : the concepts that are **grounded** from the start. Everything else must be grounded by a beat before a later beat can use it. See [Grounding](#grounding). 2. Write 2–3 candidate **starting beats**, drawn from the raw material. Each is a different entry point into the article. Each may only lean on grounded concepts; note what new concepts each one grounds. Show the user the beats before writing to the article file. The user picks one. Preview what beats that pick unlocks, as if the user is seeing . 3. Once the user picks a starting beat, write **only that beat** to the article file. A beat may be one sentence or several paragraphs, whatever that beat naturally is. Stop there. 4. Re-read the article file from disk. Then offer 2–3 candidate **next beats**: different directions the journey could pivot to from where the article now stands. Each must be reachable from the current grounded set; note what each one grounds. 5. Loop steps 3–5 until the article .
</what-to-do>
<supporting-info>
## Grounding
Every **concept** has to be **grounded** before a beat can lean on it: the audience either walked in knowing it or met it in an earlier beat. A beat that reaches for an ungrounded concept loses the reader; that is the one move the journey can't make. The unit is the concept, not the word for it: a beat can lean on an idea the reader lacks even with . Where a concept has a name (a **term**), grounding it means .
A concept gets grounded one of two ways:
- **Prerequisite**: grounded before the first beat. The audience brings it. Fixed at the start. - **Introduced**: a beat establishes it, and from then on it's grounded for every later beat.
So each beat does two jobs: it **requires** concepts that are already grounded, and it **grounds** new ones. of what's grounded so far, and update it each time a beat lands.
This is what shapes the choose-your-own-adventure. A candidate beat is only reachable if everything it requires is already grounded; picking a beat that grounds concept X unlocks every beat that was waiting on X. When you offer next beats, they must all be reachable from the current grounded set, and say what each one grounds, so the user can see which paths it opens.
is what you make a prerequisite versus what you ground inside the piece. Demand too much up front and you shut out readers who don't have it; ground too much inside and the early beats . Settle this with the user when you establish prerequisites, and revisit it whenever a tempting beat turns out to require a concept nothing has grounded yet: the fix is either a grounding beat before it, or promoting the concept to a prerequisite.
## What is a beat
A beat is one move in the journey. It does one thing: sets a scene, lands a point, asks a question, drops an aside, twists the angle. Then it stops, leaving the reader at a place where the next beat can pivot.
A beat is sized by what it needs:
- A single sentence if that's all the move is ("And then nothing happened for three weeks."). - A short paragraph if the move needs setup. - Multiple paragraphs if the beat is a self-contained vignette, argument, or example.
If a "beat" needs five paragraphs and three subheadings, it's not a beat; it's . Split it.
## Pulling from the pile
Pull material from the raw pile to populate each beat. You can paraphrase, split, recombine, or quote. .
## Ending the journey
The article ends when the journey is complete, not when the pile is empty. Most piles will have leftover fragments that don't make it in. That is fine; that is the point of having more raw material than you need.
## Writing rhythm
- Append one beat at a time. . - Re-read the article file from disk before every write. Preserve user edits absolutely. - If the user edits a previous beat substantially, let it change what comes next. - If the user says "rewrite that beat" or "go back and try a different beat 3", do it: edit in place, leave the rest alone.
</supporting-info>
<what-to-do>
用户已经提供(或将要提供)一份包含原始素材的 Markdown 文件。这是 **exploit(收敛利用)**:探索已经结束,素材堆已经固定。选定一条穿过素材的路径,并从素材堆中开采内容来填充每个节拍。
如果用户没有说明文章保存在哪里,只询问一次,然后记住该路径。
接下来,以“选择你自己的冒险”方式逐节拍推进旅程:
1. **确定前置知识。** 在写任何节拍之前,与用户确定受众进入文章时已经知道什么,即哪些概念从一开始就已经 **grounded(落地)**。其他一切都必须先由某个节拍落地,后续节拍才能使用。参见 [Grounding](#grounding)。 2. 从原始素材中写出 2–3 个候选**起始节拍**。每个都是文章的不同入口,并且只能依赖已经落地的概念;注明每个候选会让哪些新概念落地。在写入文章文件前先向用户展示这些节拍。用户选择一个。预告这个选择会解锁哪些后续节拍,就像让用户提前看到路径前方的一小段。 3. 用户选定起始节拍后,向文章文件中**只写这个节拍**。一个节拍可以是一句话,也可以是若干段落,以它自然需要的长度为准。然后停下。 4. 从磁盘重新读取文章文件。接着提供 2–3 个候选**下一节拍**,代表旅程从文章当前位置可以转向的不同方向。每个候选都必须能从当前已落地概念集合到达;注明它会让什么概念落地。 5. 循环步骤 3–5,直到文章自然结束。
</what-to-do>
<supporting-info>
## 概念落地(Grounding)
每个**概念**都必须先被**落地**,某个节拍才能依赖它:受众要么入场时已经知道它,要么在更早的节拍里接触过它。若一个节拍伸手去用尚未落地的概念,就会让读者掉队;这是这段旅程唯一不能做的动作。这里的单位是概念,而不是表示概念的词:即使没有任何行话,节拍也可能依赖读者并不具备的想法。当一个概念有名称,也就是一个**术语**时,落地意味着让想法和术语一起抵达读者。
概念有两种落地方式:
- **前置知识(Prerequisite)**:在第一个节拍之前就已落地,由受众带入,并在开始时固定。 - **文中引入(Introduced)**:由某个节拍建立,从那以后对所有后续节拍都属于已落地概念。
因此,每个节拍同时做两件事:它**依赖**已经落地的概念,也会让新概念**落地**。持续维护当前已落地概念清单,并在每个节拍完成时更新它。
这正是“选择你自己的冒险”的形状来源。只有当候选节拍所需的一切都已经落地时,它才是可到达的;选择一个让概念 X 落地的节拍,会解锁所有一直在等待 X 的节拍。提供下一节拍时,所有候选都必须能从当前已落地概念集合到达,并说明各自会落地什么,让用户看见每项选择将打开哪些路径。
最大的杠杆,是决定哪些概念应成为前置知识,哪些应在文章内部落地。预先要求太多,会把不具备这些知识的读者关在门外;在文中落地太多,早期节拍又会淹没在定义里。确定前置知识时要与用户一起解决这个取舍;每当某个诱人的节拍需要一个从未落地的概念时,也要重新审视它:要么先增加一个概念落地节拍,要么把该概念提升为前置知识。
## 什么是节拍
节拍是旅程中的一个动作。它只做一件事:设置场景、落下一个观点、提出问题、插入旁白或扭转角度。然后它停止,把读者留在一个可由下一节拍转向的位置。
节拍的大小由它的需要决定:
- 如果这个动作只需要一句话,那就只写一句(“然后整整三周什么都没发生。”)。 - 如果动作需要铺垫,就写一个短段落。 - 如果该节拍本身是一段完整的小故事、论证或示例,可以写多个段落。
如果一个“节拍”需要五个段落和三个小标题,它就不是一个节拍,而是两个粘在一起的节拍。把它拆开。
## 从素材堆中提取
从原始素材堆中抽取材料来填充每个节拍。你可以改述、拆分、重组或引用。素材堆是一座采石场。
## 结束旅程
文章在旅程完整时结束,而不是在素材堆用空时结束。多数素材堆都会留下没有进入文章的碎片。这没关系;拥有多于实际所需的原始素材,本来就是重点。
## 写作节奏
- 每次追加一个节拍,绝不要提前写后面的内容。 - 每次写入前,都从磁盘重新读取文章文件。绝对保留用户的编辑。 - 如果用户大幅修改了之前的节拍,让这项修改改变后续走向。 - 如果用户说“重写那个节拍”或“回去为节拍 3 换一种尝试”,就照做:原地编辑该节拍,其余内容保持不动。
</supporting-info>

Entry SHA-256: a96abafa2372eede8267d770138b322d6125da8adaa7ccf0a5e08e4ee13ee71e

2. Why This Skill Is Clever

一句话核心机制

把文章写作建模为一张由“概念是否已落地”约束的可达图:每轮只展示 2–3 个当前可达节拍,用户选定后只写一个,再从磁盘重读并继续分支。

触发与边界

信息架构 / 执行顺序

  1. 接收固定的原始素材堆,并确定文章输出路径。
  2. 与用户协商受众入场时已经掌握的前置概念,建立初始 grounded 集合。
  3. 从素材中提出 2–3 个只依赖当前 grounded 集合的起始节拍,并标出各自会落地的新概念与短程解锁效果。
  4. 用户只选一个;系统只把这个节拍写入文章,然后停止。
  5. 从磁盘重读文章,把用户可能发生的编辑纳入当前事实。
  6. 基于更新后的 grounded 集合提出 2–3 个可达的下一节拍,重复选择、单步写入与重读。
  7. 当叙事旅程完整时结束;允许素材堆保留未使用碎片。

最巧妙的设计点

1. 把“读者跟得上吗”变成可执行的可达性约束

“A candidate beat is only reachable if everything it requires is already grounded”

Direct source: 每个节拍同时声明隐含的前置概念和它将引入的新概念。后续候选只有在所有前置概念都已落地时才可出现,把模糊的“循序渐进”变成状态转换规则。

2. 前置知识与文中引入形成一对可调杠杆

“what you make a prerequisite versus what you ground inside the piece”

Direct source: 把概念放进 prerequisite 能缩短铺垫,却会排除部分读者;把它放进正文能扩大可读人群,却可能让开头淹没在定义里。skill 要求一开始协商,并在遇到不可达节拍时重新决策。

3. 候选分支不仅给选项,还展示“会解锁什么”

“Preview what beats that pick unlocks”

Direct source: 用户看到的不只是 2–3 个局部句子,还能看到每个选择会让哪些概念落地、让哪些后续方向变得可达。这是有限前瞻:支持有意识的路径选择,同时避免提前写完整文章。

4. 严格的一步提交保留真正的协作反馈

“write only that beat”

Direct source: 一次只落盘一个节拍,随后立即停下。用户可以改写、回退或换掉某个节拍,后续路径必须随之改变;若批量预写,前面的微小编辑就会让大量后文变成过期推演。

5. 磁盘重读把用户文件变成权威状态

“Re-read the article file from disk”

Direct source: 系统不假定自己记忆中的文章仍然最新。每次写前重读,能吸收用户在工具外发生的编辑,并通过“绝对保留用户修改”避免覆盖协作成果。

6. 完成由旅程决定,而不是由素材消耗决定

“The article ends when the journey is complete, not when the pile is empty.”

Direct source: 素材被视为 quarry 而非 checklist。允许舍弃剩余碎片,使文章服务于论证和阅读节奏,而不是为了证明每条笔记都被使用而臃肿。

防失败机制与 trade-off

可迁移原则

  1. 把内容顺序表示为“前置状态满足后才可执行”的可达图,而不是只给静态提纲。
  2. 给用户分支选项时,说明每个选择会新增什么能力以及解锁哪些后续路径。
  3. 在高反馈任务里采用单步提交:一次只写一个最小完整动作,随后重新读取权威状态。
  4. 把输入素材当资源库而不是完成清单;以目标完整性决定结束,而不是以资源耗尽决定。
  5. 将高影响力取舍显式交给用户,例如哪些知识可假定、哪些必须在正文中建立。

今日实践题

假设你要写一篇面向非技术产品经理的“向量数据库”文章,而候选第二节拍需要读者理解 embedding。你会把 embedding 设为 prerequisite,还是先增加一个 grounding beat?请说明这项选择会排除谁、又会解锁哪个后续节拍。

Evidence note

双语原文、grounding 规则、逐节拍分支、单步写入、磁盘重读与自然结束标准均来自选中的 writing-beats/SKILL.md。skills/in-progress/README.md 只作为 Supporting context,用于确认 Beta、未随插件发布和可能变化的状态。对可达图、事务式单步提交、交互成本及 harness 可移植性的描述属于 Interpretation。

Source & provenance
Repository path
skills/in-progress/writing-beats/SKILL.md
Generated
2026-08-28 17:30 Asia/Shanghai
Upstream commit
6654f6b60cd9d5be8b54c6fafe44346dabeb3b76
Source
View on GitHub