关于 writing-shape
writing-shape 是一个写作类 Agent 技能,用于把用户提供的 Markdown 原始素材通过结构化的shaping会话整理成文章。适合希望将已有素材逐段组织为连贯文章的作者。
主要功能
- 01通读原始素材后确定文章结构
- 02提供 2–3 个候选开头供选择
- 03按段落逐步追加文章内容
- 04检查概念是否已在前文建立
适用场景
- 01把散乱的笔记整理成一篇文章
- 02从会议记录或访谈转写中提炼论点
- 03逐段确定文章的段落形式与顺序
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mattpocock/ skills --skill writing-shape安装后在 Claude Code 中输入/writing-shape确认已加载。
附带文件agents/openai.yaml
详细介绍
用户已经传入(或即将传入)一个包含原始素材的 Markdown 文件。将其视为输入素材堆:无论是整理好的片段列表、一大段未结构化的文字,还是转录稿,格式都不重要。在做任何事情之前,先通读全文。
随后进行一次塑形会话,产出一份独立的文章文档。这里采用的是**利用(exploit)**模式:探索已经结束,素材堆已经固定。此时要确定结构,并从素材堆中挖掘内容来填充它。不要编辑原始素材文件:对本技能而言它是只读的。
如果用户未说明文章的保存位置,请询问一次并记住该路径。
循环流程
- 阅读素材堆。 完整阅读输入文件,形成对其内容的整体印象。
- 确立前置条件。 与用户确定读者一开始就已具备的知识:从一开始就已奠基的概念。其他所有概念都必须先由某个段落奠基,后续段落才能依赖它们。参见奠基。
- 起草 2–3 个候选开头。 每个开头都应暗示文章不同的论点或切入角度。全部展示出来,迫使用户选择或组合出一个混合版本。所选开头决定了文章其余部分必须完成的任务。
- 逐段生长。 开头确定后,追问:"基于这个开头,读者接下来需要听到什么?"从素材堆中提取内容来回答。下一段只能依赖已奠基的概念,并在落笔时为新概念奠基。讨论下一段采用何种形式:段落、列表、表格、提示框、引文或代码块。每一种形式的选择都应是有意为之且站得住脚的。
- 边写边追加到文章文件。 不要批量写入。每个达成一致的段落或块都立即写入,让用户能看到文章逐步成形。
- 重复第 4 步,直到文章完成。 由用户决定何时完成。
奠基
在某个段落可以依赖某个概念之前,该概念必须已经奠基:读者要么在进入时就已了解,要么在更早的段落中接触过它。若某段落依赖一个尚未奠基的概念,就会让读者跟丢。单位是概念,而不是表达它的词语:即使全文没有任何术语,段落也可能依赖读者尚不具备的某个观念。若某个概念有名称(即术语),那么奠基意味着同时讲清观念与术语。
概念的奠基有两种方式:
- 前置知识:在开头之前即已奠基。读者自带此知识,并在一开始就确定。
- 引入:某个段落确立该概念,此后它在文章其余部分中即已奠基。
维护一份已奠基概念的运行清单。当你追问"读者接下来需要听到什么?"时,如果下一步所需的某个概念尚未奠基,那它本身就是答案:必须先奠基它(在此处或更早的段落中),否则无法完成这一步。这与从素材堆中提取内容中的"缺口识别"处于同一思路,只是更高一层:那里缺的是素材,这里缺的是文章的根基。
调节杆在于:你把什么设为前置知识,以及在文章内部为什么奠基。前置要求过高会把读者拒之门外;在内部奠基过多,则开头会被定义淹没。应在确立前置条件时与用户商定。
对话风格
这是一场颠倒过来的"拷问式"会话。在构思阶段,问题是"你究竟注意到了什么?"在这里则是"这篇文章究竟在论证什么?读者需要以怎样的顺序听到它?"要追问,不要放过薄弱的过渡。若某段落无法证明其存在的价值,就删掉。
请持续使用以下具体问法:
- "这个段落对读者的作用,是前一段没有做到的什么?"
- "如果删掉它,会有什么断掉?"
- "这是散文,还是应该做成列表?为什么用散文?"
- "这句话承担了两项任务:拆开,或只保留一项。"
- "开头承诺的是 X,我们却滑向了 Y。要么把线索重新接上,要么改掉开头。"
把原始素材当作采石场,而不是剧本。取出一个片段,将其改写到与周围段落契合,再放入文中。一个片段可以拆分到多个段落中,也可以与另一个片段合并,或改写成释义。素材堆的作用是被开采,文章的作用是读起来像出自同一个声音。
如果素材堆缺少文章所需的内容,要明确指出这一缺口:"这里需要一个示例,但素材堆里没有。现在就给我一个,否则我们就删掉这一节。"
确实需要权衡的格式取舍
在选择如何呈现某个区块时,要与用户明确权衡这些取舍,而不是暗中决定:
- 段落 vs. 列表。 段落承载论证,列表承载并列条目。如果条目并非真正并列,段落更好;如果确实并列,列表更便于快速浏览。
- 行内 vs. 提示框。 提示、警告和旁注应放入提示框(
> [!TIP]、> [!NOTE]),但仅当它们会在行内真正打断主论证时才这样做。否则保留在行内。 - 表格 vs. 重复结构。 如果同一结构以相同字段重复出现 3 次及以上,使用表格;否则使用带粗体引导词的段落。
- 引用 vs. 释义。 当原文措辞本身就是重点时引用;只关心观点时则释义。
- 代码块 vs. 行内代码。 多行、可运行或用于演示的内容用代码块;单个符号或标识符用行内代码。
写作节奏
每个区块确定后,就追加到文章文件中。每次写入前都从磁盘重新读取文件,因为用户可能在两轮对话之间做过编辑。切勿盲目覆盖。若用户要求重写某一段,只就地修改该段,其余部分保持不变。
不在范围内
- 挖掘素材堆之外的新片段(缺口按"从素材堆中取材"一节中的方式处理)。
- 编辑原始素材文件。
- 发布、针对特定平台的格式化,或添加用户未要求的 frontmatter。