用途
该技能用于撰写或修改文档正文,让新内容读起来与站点其余部分一致,体现文档团队共用的写作风格。它针对 linter 检查不到的部分:句子节奏、链接密度,以及承载信息的句子结构。
分工:linter 与技能
仓库的 AGENTS.md 保存可由 linter 检查的规则,包括不用缩写、不用第一人称、不用将来时、标题使用句首大写、使用牛津逗号、破折号周围留空格。Vale 执行其中大部分规则,make lint_prose 是检查关卡。但 Vale 不扫描 JSX 组件内部,例如 <Note> 和 <Tip>,因此这些位置通过检查并不能说明问题。
主要目标
以下目标来自该仓库自身页面的统计,并非凭推测设定。
保持句子简短
站点句子长度中位数为13至15词。约每12句有1句超过25词,约每40句有1句超过30词。25词是开始寻找拆分点的位置,35词视为缺陷。一句只表达一个意思;如果一句承载两个意思,就拆开,让第二个意思独立成句。示例对比:
- 单句:The agent definition selects the model and core capabilities of a managed deep agent.
- 拆分:Set the compression field to control how exported Parquet files are compressed. When omitted, LangSmith uses zstandard.
第二个例子里,如果写成一个长句,默认值就会被藏在从句里。目标是下限也是上限:即使条件、行为主体和确切值让句子变长,也要保留它们,通过拆分解决,而不能为了压到15词以下丢掉其中一项。
约一半句子带链接
站点近一半正文句子带有链接。交叉链接不是装饰,而是读者离开一个无法回答其问题的页面的途径。术语只在首次提及时加链接;在章节末尾做前向指引是常见做法,两种指向形式都已存在:
- Refer to Spend policies.
- For the full project layout, see Project structure.
两者都不算标准写法,不同作者偏好不同,应匹配页面已有形式,不要批量把一种改成另一种。
默认值和条件按事实陈述
先写触发条件,再写行为,不要含糊其辞,也不要写“请注意”。例如:
- When omitted, LangSmith uses zstandard.
- Defaults to the last 7 days, newest first.
- Task planning is opt-in.
- Non-zero exits and timeouts from --startup-cmd warn but do not abort the session.
约束也按同样方式写成事实陈述,而不是关于约束的警告。
写出确切标识符
每个字段、参数、值、环境变量和状态都用反引号标出。站点约四分之一到一半的正文句子包含一个这样的标识符。要写出实际值,而不是含糊指代:写 zstandard,而不是“适当的压缩”;写 CREATED、RUNNING、COMPLETED,而不是“各种状态”。例如:If your API key is linked to multiple workspaces, specify the workspace in the header with "x-tenant-id".
尽早给出具体示例
“For example”大约每30句出现一次,后面几乎总是真实值,而不是一个空壳。例如:For example, in SCIM, the resolved sub claim and SCIM externalId must match in order for login to succeed. 如果无法提供真实示例,宁可少写,也不要编造。绝不要为了填空而虚构字段名、响应体或策略细节。
面向读者,优先使用主动语态
第二人称覆盖约四分之一到一半的句子,在操作步骤和 UI 说明中最密集。被动语态只出现在约八分之一的句子中,通常是在行为主体确实不重要的地方。当读者不是行为主体时,用产品名作主语,例如写“LangSmith uses zstandard”,而不是“we use zstandard”。
修改检查清单
通读草稿,只看以下几项:
- 超过25词的句子:拆分或删去一个从句。
- 含糊词和填充词:“simply”“just”“very”“basically”“note that”“be sure to”“in order to”“has the ability to”。这些在站点正文中几乎不出现,不到句子的百分之一,应删除或替换。
- 带空格的破折号:word — word 会触发 LangChain.DashesSpaces 并阻断 CI。优先使用逗号、冒号或拆成两句,只有在其他写法都不通顺时才用 word—word。段落开头的粗体标签后用冒号,例如 Tier assignment:,该写法在 src/ 中统计为177次,而破折号仅1次。
- 该写确切标识符处写了模糊表述。
- 删减时连带删掉的事实:一句收紧后若丢掉了条件、行为主体或确切值,读起来干净却表达了别的意思。应恢复事实并拆分句子。
- 首次提及没有链接,以及重复提及被再次加链接。
- 未经核实的说法:用 verify-against-source 技能对照产品源核实,或删去。另一个文档页面不算来源。在 PR 描述中列出所有无法确认的说法。
- 与相关页面矛盾的事实:在 src/ 中搜索该功能,阅读从其他角度介绍它的页面,例如 CLI 参考或权限表。docs-edit 技能说明了需要留意的内容。
- 添加的“key features”列表,或用于分隔章节的水平线:两者都不属于此处风格。
检查关卡
完成上述检查后运行:
make lint_prose FILES="<changed files>"
如需对照风格指南做完整审查,并标出每条发现所违反的规则,可使用 docs-review 技能。
适用场景与限制
该技能面向本仓库文档的正文写作与修订,依赖仓库内的 AGENTS.md、Vale、make lint_prose 以及 verify-against-source、docs-edit、docs-review 等相关技能。资料未提供具体安装命令、版本要求或对其他平台的支持情况,暂未提供。