Skip to content

文档规范(写之前先看这一页) ​

定位:回答「写文档时该放哪、该长什么样、什么时候该删」。 读者:要给本仓添文档的人与 agent。 权威边界:本页只做导航与判据 —— 每条规则的正文只有一处,本页只指路,不复述。 那样做是刻意的:同一条规定写两遍,两遍迟早不一致(见下方「一条规则只写一次」)。


一、该放哪:按生命周期分层,不按主题 ​

本仓文档站的分层判据是这篇东西的生命周期,不是它讲什么:

层放什么生命周期在哪
Agent 指引每次会话都要进上下文的规则常驻,有字数预算根 AGENTS.md 与各 app 的 AGENTS.md
决策记录为什么这么定、当时否掉了什么活:决策改了要改它或标记被取代content/adr/
现状文档现在是什么样、怎么用活:随代码改,改代码就该改它content/monorepo/ · backend/ · frontend/ · shared/
调研外部世界的 as-of 快照冻结:不随代码维护,冲突以代码为准content/industry-research/
归档带日期的过程文档(设计 / 计划 / 评审)冻结,但索引里有「归宿」列content/archive/

判断口诀:「它会不会随代码变?」 会 → 现状文档;不会、且讲的是当时的判断 → 归档; 不会、且讲的是外部世界 → 调研;一句话就得记住 → agent 指引。

二、什么时候该删 ​

  • ⚠️ 未闭环事项禁止只靠归档了事:一篇里还有开着的待办时,必须先把它们抽到 架构待办事项 或对应的现行文档,才能归档。 归档区的读者不会去追一个还开着的事项 —— 那条待办就等于消失了。
  • 归档区索引必须写「归宿」(哪条结论已被取代、当前该看哪篇)。判据是很直接的: 没有归宿列时,「未执行」与「已执行完毕」在表里长得一模一样。
  • 具体条目见 archive/index.md 的「归档约定」一节(那里是唯一真源)。

三、一条规则只写一次 ​

同一个规定只允许有一个家,其他地方一律写成指针。理由是行为性的,不是洁癖: 写两遍就会有两次机会漂移,而漂移不会被任何门禁拦住(没有工具知道你想说的是哪条规定)。

已定的几个「家」:

规定唯一真源
写 md 时别写原始 $、围栏语言要标对、新增页面要登记 sidebarapps/docs/AGENTS.md 的重要约定
ADR 的形态(编号 / Status 枚举 / 必需小节 / index 双向对齐)adr/index.md,由 pnpm lint:adr 机械校验
归档的收录判据与「归宿」列archive/index.md
门禁有几段、各段凭什么packages/tooling/scripts/src/ci/prepush.ts 的表(正文里只许写判据)
文档引用的包名 / 仓库路径要真实存在pnpm lint:docs-refs 的实现注释
别写会腐烂的计数apps/docs/AGENTS.md 重要约定 8(根 AGENTS.md 只做指路)

四、两条书写约定(本仓此前没有明文,借自外部实践) ​

4.1 长文档开头写三行「定位 / 读者 / 权威边界」 ​

读者最需要的不是「这篇讲什么」,而是「我该花时间读它吗、它算不算数」。所以:

md
> **定位**:这篇解决什么问题。
> **读者**:谁需要读它。
> **权威边界**:它与哪些文档冲突时以谁为准。

本页与 Turbo 缓存边界 的开头就是范例。它尤其适合 「调研 / 评审 / 一次性分析」这类结论未必长期成立的文档。

4.2 结论不牢的地方,末尾专设「未核实 / 存疑」节 ​

把「我没验过的」「我推测的」「依赖外部条件的」集中列出来,而不是让它们散在正文里 冒充确定结论。判据:如果一条结论被人当事实引用会造成损失,它就该出现在这一节或带明确限定词。

配套一条更硬的纪律(来自一次真实的评审教训):「找不到背书」不等于「这是最佳实践」, 也不等于「这是反模式」 —— 前者是 absence of evidence,只能如实写成「未找到公开依据」。 这与本仓门禁的「宁可漏报不可误报」是同一条口径。

五、写完必须过的门禁 ​

门禁管什么
pnpm build:docs死链就是构建失败;新增页面没登记 sidebar 也会在评审里被指出来
pnpm lint:docs-refs正文反引号里引用的包名 / 仓库路径必须真实存在
pnpm lint:doc-ts标成 ts 的围栏块必须能按 TypeScript 解析
pnpm lint:adrADR 的形态
pnpm lint:doc-budget常驻上下文文件不许膨胀(用不到一半也算失败)
pnpm lint:turbo-cache文档改动有没有进 docs 构建的缓存键(改文档不重建 = 死链校验被跳过)

加一条门禁要接进哪几处,见 架构地图 的「新增一条门禁的五步接线清单」。

相关文档 ​

基于 MIT 许可发布