# Writing Beats

Writing, exploit, , 把原始素材组装成一段节拍旅程，在某个 beat 依赖一个术语之前先把它 grounded。

- Repository: https://github.com/vinvcn/mattpocock-skills-zh-CN (5461 stars)
- Category: Security
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add vinvcn/mattpocock-skills-zh-CN --skill writing-beats -g -a claude-code -y`
Codex: `npx skills add vinvcn/mattpocock-skills-zh-CN --skill writing-beats -g -a codex -y`
Cursor: `npx skills add vinvcn/mattpocock-skills-zh-CN --skill writing-beats -g -a cursor -y`
Gemini CLI: `npx skills add vinvcn/mattpocock-skills-zh-CN --skill writing-beats -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add vinvcn/mattpocock-skills-zh-CN`

## Description

Writing, exploit, , 把原始素材组装成一段节拍旅程，在某个 beat 依赖一个术语之前先把它 grounded。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

<what-to-do>

用户已经传入（或将传入）一份 raw material markdown 文件。这是 **exploit**：探索已经完成，pile 已固定, , 承诺一条穿过它的路径，并挖掘 pile 来填充每个 beat。

如果用户没有说明文章保存路径，只询问一次并记住路径。

然后以自选路径（choose-your-own-adventure）风格运行 beat-by-beat journey：

1. **Establish the prerequisites.** 在任何 beat 之前，先与用户确定受众进场时已经知道什么, , 那些从一开始就已 **grounded** 的概念。其它一切都必须先被某个 beat grounded，之后的 beat 才能使用它。见 [Grounding](#grounding)。
2. 从 raw material 中写出 2-3 个候选 **starting beats**。每个都是进入文章的不同入口。每个都只能依赖已 grounded 的概念；记下每个 beat 新 grounded 了哪些概念。在写入文章文件之前先把这些 beats 展示给用户。用户选一个。预览选定这个 beat 后会解锁哪些 beats, , 就像让用户先看到路径前方一点点。
3. 用户选定 starting beat 后，只把**那个 beat**写入文章文件。一个 beat 可以是一句话，也可以是几段，按它自然需要的长度来。写完就停。
4. 从磁盘重新读取文章文件。然后提供 2-3 个候选 **next beats**, , 也就是从文章当前所在位置，journey 可以 pivot 的不同方向。每个都必须能从当前已 grounded 的集合到达；记下每个 beat grounded 了什么。
5. 循环步骤 3-5，直到文章自然结束。

</what-to-do>

<supporting-info>

## Grounding

每个 **concept** 都必须先被 **grounded**，某个 beat 才能依赖它：受众要么进场时就知道它，要么在更早的 beat 中遇到过它。一个伸手去抓未 grounded 概念的 beat 会失去读者, , 这是 journey 唯一不能做的动作。单位是 concept，而不是它的措辞：即便眼前没有任何术语，一个 beat 也可能依赖一个读者并不具备的 idea。当一个概念有名字, , 一个 **term**, , grounded 它意味着让这个 idea 和这个 term 一起落地。

一个概念通过两种方式之一被 grounded：

- **Prerequisite**, , 在第一个 beat 之前就被 grounded。受众自带它。在开头就固定下来。
- **Introduced**, , 某个 beat 建立它，从那时起它对之后每个 beat 都是 grounded 的。

所以每个 beat 都做两件事：它**需要**已经 grounded 的概念，并 **grounds** 新的概念。维护一份到目前为止已 grounded 内容的清单，并在每个 beat 落地时更新它。

这正是塑造 choose-your-own-adventure 的东西。一个候选 beat 只有在它所需要的一切都已 grounded 时才可到达；选择一个 grounded 了概念 X 的 beat，会解锁所有在等待 X 的 beats。当你提供 next beats 时，它们都必须能从当前已 grounded 的集合到达, , 并说明每个 grounded 了什么，这样用户就能看到它打开了哪些路径。

关键的杠杆在于你把什么设为 prerequisite、把什么在文章内部 grounded。开头要求太多，就会把不具备这些的读者拒之门外；内部 grounded 太多，早期的 beats 就会淹没在定义里。在你确立 prerequisites 时与用户确定这一点，并且每当某个诱人的 beat 结果需要一个尚无任何东西 grounded 过的概念时就重新审视, , 解决办法要么是在它之前放一个 grounding beat，要么是把该概念提升为 prerequisite。

## What is a beat

Beat 是 journey 中的一步。它只做一件事：设定场景、落下一个观点、提出问题、插入 aside、扭转角度。然后停下，把读者留在一个下一个 beat 可以 pivot 的位置。

Beat 的大小由它需要完成的动作决定：

The rest: https://github.com/vinvcn/mattpocock-skills-zh-CN/blob/HEAD/skills/in-progress/writing-beats/SKILL.md
