mcpField
W
writing-shape

writing-shape

github.com/utarn创意与媒体4959 次安装8 周前更新
代码仓库

关于 writing-shape

writing-shape 用于将已有的原始材料整理成文章。它与用户确定切入角度和读者前置知识,再逐块构建文章,并将成稿写入单独文档。

主要功能

  1. 01通读全部原始材料
  2. 02确定读者的前置知识
  3. 03提供多个文章开头供选择
  4. 04逐块构建文章
  5. 05将原始材料保持为只读

适用场景

  1. 01将零散片段整理成文章
  2. 02确定文章论点和开头
  3. 03撰写草稿时检查概念是否已铺垫

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/utarn/engineer-skills --skill writing-shape

安装后在 Claude Code 中输入/writing-shape确认已加载。

附带文件agents/openai.yaml

详细介绍

用户已提供(或即将提供)一份 Markdown 原始素材文件。将其视为输入素材——内容可能是整理好的片段列表、杂乱无章的大段文字,也可能是访谈记录。格式无关紧要。开始任何其他操作前,请从头到尾读完。

然后进行一轮梳理,产出一篇单独的文章文档。这是开发阶段:探索已经结束,素材已固定——确定文章结构,并从素材中提取内容来填充结构。不要编辑原始素材文件——此技能只能读取该文件。

如果用户没有说明文章的保存位置,只询问一次,并记住该路径。

工作循环

  1. 阅读素材。 完整阅读输入文件,了解其中的内容。
  2. 确定先决知识。 与用户确认读者在开始阅读前已经了解哪些概念——这些概念从一开始就已扎根。其他所有概念都必须先由某个段落扎根,后续段落才能依赖它。参见概念扎根。
  3. 起草 2–3 个候选开篇。 每个开篇都应体现不同的文章论点或切入角度。展示所有候选开篇,让用户必须选择其中一个,或组合出一个折中版本。选定的开篇将决定文章后续内容必须完成的任务。
  4. 逐段扩展。 开篇确定后,询问:“根据这个开篇,读者接下来需要听到什么?”从素材中提取内容来回答。后续段落只能依赖已经扎根的概念,并在成文时为新概念打下基础。就下一段的形式展开讨论——用段落、列表、表格、提示框、引文还是代码块。每种格式选择都应经过审慎考虑并有充分理由。
  5. 随写随追加到文章文件。 不要攒到最后再写。每当用户认可一段或一个内容块,就立即写入,让用户看到文章逐步成形。
  6. 重复第 4 步,直到文章完成。 由用户决定何时完成。

概念扎根

每个概念都必须先扎根,后续段落才能依赖它:读者要么在开始阅读前就已了解,要么在前面的段落中已经接触过。若段落涉及尚未扎根的概念,读者就会跟不上。基本单位是概念,而不是概念的名称——即使没有使用术语,段落也可能依赖读者尚不了解的思想。若概念有名称——即一个术语——那么扎根时就必须同时确立概念及其术语。

概念有两种扎根方式:

  • 先决知识——在开篇前扎根,由读者带入,文章开始后不再改变。
  • 引入——由某个段落确立,此后便在文章剩余部分中视为已扎根。

持续记录已经扎根的内容。当你询问“读者接下来需要听到什么?”时,如果下一步需要依赖尚未扎根的概念,那么扎根这个概念本身就是答案:先在当前段落或更早的段落中为它打下基础,否则就无法推进。这是从素材中提取内容中“指出缺口”在更高层次上的应用:在那里,缺的是素材;这里,缺的是文章的基础。

关键在于决定哪些概念作为先决知识,哪些概念在文章内部扎根。对读者的预备知识要求过高,会把读者拒之门外;在文章内部解释太多,又会让开篇被定义淹没。在确定先决知识时,要与用户商议。

对话方式

这是一场反向的深挖对话。在构思阶段,问题是“你实际观察到了什么?”而在这里,问题是“这篇文章究竟在论证什么?读者又需要按什么顺序听到这些内容?”要提出质疑,不要放过薄弱的过渡。如果一段话没有充分理由保留,就删掉它。

持续使用以下具体提问:

  • “这段话为读者带来了什么上一段没有提供的内容?”
  • “如果删掉这段,会有什么问题?”
  • “这该写成散文,还是应该列成清单?为什么要写成散文?”
  • “这句话承担了两项任务——把它拆开,或者只保留一项。”
  • “开篇承诺了 X,但我们已经偏向 Y。要么重新串联内容,要么修改开篇。”
## 从素材堆中提取内容

把原始素材当作采石场,而不是脚本。提取一个片段,重新加工,使其适合周围的段落,然后放进去。一个片段可以拆分到多个段落中,也可以与另一个片段合并,或改写。素材堆的作用是供人开采;文章的作用是读起来像出自同一种声音。

如果素材堆里缺少文章所需的内容,就明确指出缺口:“这里需要一个示例,但素材堆里没有——现在给我一个,或者我们删掉这一节。”

让格式论证真正发生

选择如何呈现一个区块时,要和用户当面权衡这些利弊,而不是默默决定:

  • 正文还是列表。 正文承载论证;列表承载并列项。如果各项并非真正并列,正文更合适;如果是并列项,列表更便于快速浏览。
  • 行内还是提示框。 提示、警告和补充说明应放入提示框(> [!TIP]、> [!NOTE])——但仅当它们放在正文中确实会打断主要论述时。否则就留在正文中。
  • 表格还是重复结构。 如果同样的结构以相同字段重复出现 3 次或更多次,就用表格;否则使用带粗体引导语的正文。
  • 引用还是改述。 原文措辞本身是重点时就引用;只需要表达观点时就改述。
  • 代码块还是行内代码。 多行、可运行或用于说明的内容 → 代码块。单个词项或标识符 → 行内代码。

写作节奏

每确认一个区块,就将它追加到文章文件中。每次写入前都要从磁盘重新读取文件——用户可能在两轮对话之间编辑过。不要盲目覆盖。如果用户要重写某个段落,就在原处编辑该段落;其余部分保持不变。

不在范围内

  • 从素材堆中挖掘其中没有的新片段(遇到缺口时按“从素材堆中提取内容”中的方式处理)。
  • 编辑原始素材文件。
  • 发布、针对特定平台进行格式调整,或添加用户未要求的 frontmatter。

评论

支持 Markdown