mcpField
T
technical-writing

technical-writing

github.com/backnotprop开发3.1k6.1k 次安装今天更新
代码仓库

关于 technical-writing

technical-writing 是一项面向技术文档的写作技能,帮助开发者写出清晰、易读的说明。它结合 Diátaxis 文档模式、Google 开发者风格和 STE 规则,并强调以代码库中的真实名称为准。

主要功能

  1. 01按 Diátaxis 选择文档模式
  2. 02应用 Google 开发者写作风格
  3. 03按 STE 规则拆解句子
  4. 04使用代码库中的真实名称
  5. 05涵盖教程、操作指南、参考与解释

适用场景

  1. 01撰写技术教程与操作指南
  2. 02编写 API 或代码参考文档
  3. 03解释系统设计与实现
  4. 04修改 PR 描述和提交消息

安装

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

$npx skills add https://github.com/backnotprop/pstack --skill technical-writing

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

详细介绍

技术写作

写作要让疲惫的工程师读一遍就懂。应用这四个层次。

有三条规则高于这四个层次:

  • 删掉每个不发挥作用的词。 如果删掉一个词,句子仍然成立,那就删掉它。“In order to”可以改成“to”。“It is important to note that”什么也没表达。
  • 用简短、日常的词。 用“Use”,别用“utilize”。用“Help”,别用“facilitate”。用“Do”,别用“perform”。长词必须用精准表达来证明自己值得占用更多篇幅。
  • 如果一条规则让句子变得更糟,就换个方法修改句子,或者保持原样。 句子遵守了所有规则,读起来却像机器写的,那它就是失败的。

代码库就是词表。写出真实的符号、文件、标志或命令名称,不要用同义词或描述代替。

不要生造术语。用开发者会说出口的词:“move”“delete”“只会减少的预算”,不要用“evacuate”“ratchet”或“endgame”。如果文档首次解释了某个命名模式的含义,就可以使用它。请在回复中提出一个新的禁用词及其替代词,作为对 unslop 抽象隐喻规则的补充,并附上差异内容。不要编辑该技能。

变化节奏

文档即使遵守了所有层次,读起来仍可能像机器写的:句句短促,没有观点,也没有具体内容。

  • 有意混合句子长度。短句能突出重点;长句可以连同条件或后果一起说明事实。
  • 每句一个想法,不等于每句长度都一样。把承载两个想法的句子拆开。保留只表达一个想法的长句。
  • 在文体允许时表明观点。说明文要权衡取舍,所以要说出你的判断,而不只是罗列利弊。参考文档保持客观。
  • 具体胜过刻板。不要写“架构变更可能导致问题”,而要写“重命名列会导致构建失败”。

先选文体(Diátaxis)

一篇文档只用一种文体。回答两个问题即可确定:内容是指导行动(实践)还是帮助理解(思考),以及它服务于学习还是工作。

  • 实践 + 学习:教程。
  • 实践 + 工作:操作指南。
  • 理解 + 工作:参考文档。
  • 理解 + 学习:说明文。

可以用这个指南判断整篇文档,也可以判断某个句子。

教程:边做边学。 学习者能否成功是你的责任,不是他们的。开篇说明学习者将构建什么,而不是他们将“学到”什么。每一步都要尽早、频繁地产生可见结果。告诉他们应该看到什么:预期输出、提示词的变化、日志行。解释尽量精简为一个分句,并附上链接。保持具体。用“我们”来写,并采用命令式表达:“首先,执行 x。现在,执行 y。”

操作指南:完成目标的步骤。 解决人的问题,而不是机器能执行的操作。假设读者具备相应能力,跳过教学。只写操作:不要离题,不要介绍背景,也不要为了面面俱到而补充内容。需要时提供链接。允许读者选择并自行判断:“如果你想要 x,就执行 y。”按任务命名指南:“如何校准雷达阵列”,而不是“雷达阵列校准”。

参考文档:供查阅的事实。 只作描述。不要给出指令、劝说或意见。保持客观、完整、明确。直接陈述事实、选项、限制和错误,不要含糊其辞。按照所描述对象的结构组织内容,让代码和文档能彼此对应、方便查找。把内容放在读者预期的位置。尽可能从代码生成。

说明文:理解内容及其原因。 聚焦一个范围明确的主题,即使脱离产品也能读懂。每个标题前都可以自然地加上“关于……”。围绕一个具体的“为什么”问题展开。提供背景信息,包括设计决策、历史、限制和替代方案。只有说明文可以表达观点。

不要混用文体:教程中不要加入参考表格,参考文档中不要手把手教学,操作指南中不要争辩。拆分文档,并在各部分之间添加链接。

面向读者写句子(Google 开发者风格)

  • 用“你”与读者交流,并使用现在时。只有确实会在之后发生的事才用“将”。
  • 明确说明谁做什么:“编译器会检查”,而不是“会被检查”。只有在执行者未知或无关紧要时,才可以使用被动语态。
  • 将说明写成命令:“点击 Submit。”直接陈述事实。绝不要说“应该完成”。
  • 将条件放在指令前面:“要删除文档,请点击 Delete。”
  • 先说常见情况,再说例外。
  • 像一位懂行的朋友那样表达。不要用行话、比喻,也不要在指令中使用“请”。在操作步骤中,绝不要用“只需”“简单”或“快速”。如果事情很简单,读者就不会来这里。
  • 不要预告未来(“我们很快会支持……”),也不要让连续的句子以相同的短语开头。
  • 使用能说明链接去向的文字来创建链接:页面标题或简短描述。绝不要用“点击这里”。与其链接到其他页面,不如优先在当前页面提供背景说明。
  • 标题要表达重点,而不只是主题(“先选择模式”,而不是“模式”)。使用句首字母大写格式。任务标题使用不带主语的动词短语(“创建实例”)。概念标题使用名词短语。每页只能有一个 h1,不要跳过标题级别。
  • 有顺序的步骤使用编号列表,其他内容使用项目符号列表。用一个完整的句子引出列表。保持各项结构平行。
  • 代码使用代码字体。UI 元素使用粗体。使用序列逗号。不要写“等等”,要事先说明列表并不完整。

让陈述一次只表达一个意思(STE 规则)

  • 每个句子只写一条指令。其他所有句子也都只表达一个想法。
  • 将超过约 20 个单词的指令和超过约 25 个单词的其他句子拆开。
  • 将警告或条件放在其约束的步骤之前:“如果热油碰到皮肤,可能会造成伤害。”
  • 保留“the”和“a”:“Remove backup file”有两种解读。“Remove the backup file”只有一种解读。
  • 每个词只表达一种意思、承担一种作用,并始终保持一致。如果“check”表示检查,就不要再用它表示限制。
  • 每种动作只选用一个词,并始终保持一致:“start”,不要在这里用“start”,在那里用“initiate”。
  • 操作步骤使用直接命令,不要写成叙述,也不要使用被动语态:“Install the component”,而不是“the component must be installed”。
  • 尽量避免使用“-ing”形式的词。

不留有歧义的句子(全球英语)

  • 将“only”和“not”等词放在它们修饰的词旁边:“only fails on growth”和“fails only on growth”的意思不同。
  • 拆开过长的名词串:“the proto import budget check script”改为“the script that checks the proto-import budget”。
  • 确保每个“it”“they”和“this”都明确指向一个对象。有疑问时就重复名词。绝不要用“this”或“which”指代整个分句。
  • 不要省略动词:“Phase 1 moves the converters and Phase 2 the runtime”让 Phase 2 缺少动词。为它补上动词。
  • 保留表示结构关系的虚词,例如“Ensure that the switch is off”中的“that”。不要为了缩短文字牺牲清晰度。
  • 如果重复冠词可以避免误读,就在并列项中重复冠词:“the client and the host”,而不是在指两个对象时写“the client and host”。
  • 如果句子中的“and”或“or”可能有两种组合方式,就明确说明它们连接的部分。“Both...and”“either...or”和“if...then”都能消除歧义。
  • 使用句号,不要用分号。将破折号替换为新句子。
  • 括号中的文字要构成完整的语法成分,或者单独成句。绝不要用“(s)”表示复数。
  • 不要使用斜杠:写“a、b 或两者”,不要写“a/b”或“and/or”。
  • 对同一事物始终使用同一个名称。文档对同一事物使用“the gate”“the ratchet”和“the budget check”三个名称,就会让人以为它们是三个不同的东西。不要改动没有变化的内容。
  • 避免使用习语、口语、拉丁文缩写和比喻。

语气与仓库细节

  • 对本技能涉及的每篇文档应用 unslop 技能。该技能负责维护冗余表达模式目录:AI 词汇、填充语、模糊措辞和格式痕迹。
  • PR 描述和提交消息也属于写作内容。除 Diátaxis 外,所有规则都适用于它们。PR 正文应是一份审阅者能在不到一分钟内读完的简报。不要粘贴 swarm 日志、SHA 列表或指标表格;请提供链接。
  • 产品 UI 字符串不属于文档。请遵循产品的文案指南。
  • 代码片段使用制表符缩进。写出真实路径。确保每项计数或目录树描述在提交合并时准确无误,并注明用于重新生成的命令。

示例

之前:

proto 导入限额脚本参数的配置通过 budget.json 完成。请注意,务必记住,运行时使用 --write 会更新已提交的限额,使其反映当前计数,因此只有在调低限额时才应这样做。如果超出限额,CI 将失败。

之后:

budget.mjs 从已提交的 budget.json 中读取限额,并统计导入 proto 的文件数。如果计数超过限额,CI 将失败。只有在调低限额时才运行 budget.mjs --write。

评论

支持 Markdown