关于 technical-writing
面向工程师的技术写作规范,按文档目的选择写作模式,并通过清晰、准确的措辞与句式规则提升可读性。它分别说明教程、操作指南、参考文档和解释文档的写法。
主要功能
- 01按目的选择文档模式
- 02简洁具体的措辞
- 03句子清晰度规则
- 04技术操作说明指引
- 05代码库写作规范
适用场景
- 01撰写工程操作指南
- 02编辑 API 参考文档
- 03改进教程的步骤安排
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ q-qp-p/ 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。