artifact-chain-assistant 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/.kimi-plugin/plugin.json +1 -1
  4. package/CHANGELOG.md +16 -0
  5. package/INSTALL.md +10 -10
  6. package/README.md +4 -4
  7. package/README.zh-CN.md +4 -4
  8. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  9. package/adapters/claude/INSTALL.md +10 -10
  10. package/adapters/claude/agent-methods/catalog.yaml +1 -1
  11. package/adapters/claude/compatibility.json +4 -4
  12. package/adapters/claude/family-apis/catalog.json +1 -1
  13. package/adapters/claude/skills/scenario-script/SKILL.md +8 -8
  14. package/adapters/claude/skills/scenario-script/author/SKILL.md +29 -20
  15. package/adapters/claude/skills/scenario-script/author/references/compose.md +54 -9
  16. package/adapters/claude/skills/scenario-script/author/references/default-template.md +64 -0
  17. package/adapters/claude/skills/scenario-script/author/references/inspect.md +7 -3
  18. package/adapters/claude/skills/scenario-script/author/references/validate.md +23 -11
  19. package/adapters/claude/skills/scenario-script/author/references/writing-style.md +74 -0
  20. package/adapters/claude/skills/scenario-script/references/compose.md +54 -9
  21. package/adapters/claude/skills/scenario-script/references/default-template.md +64 -0
  22. package/adapters/claude/skills/scenario-script/references/inspect.md +7 -3
  23. package/adapters/claude/skills/scenario-script/references/validate.md +23 -11
  24. package/adapters/claude/skills/scenario-script/references/writing-style.md +74 -0
  25. package/adapters/claude/skills/scenario-script/repair/SKILL.md +35 -16
  26. package/adapters/claude/skills/scenario-script/repair/references/compose.md +88 -0
  27. package/adapters/claude/skills/scenario-script/repair/references/default-template.md +64 -0
  28. package/adapters/claude/skills/scenario-script/repair/references/inspect.md +109 -0
  29. package/adapters/claude/skills/scenario-script/repair/references/validate.md +84 -0
  30. package/adapters/claude/skills/scenario-script/repair/references/writing-style.md +74 -0
  31. package/adapters/claude/skills/scenario-script/review/SKILL.md +55 -23
  32. package/adapters/claude/skills/scenario-script/review/references/compose.md +54 -9
  33. package/adapters/claude/skills/scenario-script/review/references/default-template.md +64 -0
  34. package/adapters/claude/skills/scenario-script/review/references/inspect.md +7 -3
  35. package/adapters/claude/skills/scenario-script/review/references/validate.md +23 -11
  36. package/adapters/claude/skills/scenario-script/review/references/writing-style.md +74 -0
  37. package/adapters/claude/templates/core/scenario/review-checklist.md +28 -14
  38. package/adapters/claude/templates/core/scenario/starter.md +44 -27
  39. package/adapters/codex/.codex-plugin/plugin.json +1 -1
  40. package/adapters/codex/INSTALL.md +10 -10
  41. package/adapters/codex/agent-methods/catalog.yaml +1 -1
  42. package/adapters/codex/compatibility.json +4 -4
  43. package/adapters/codex/family-apis/catalog.json +1 -1
  44. package/adapters/codex/skills/scenario-script/SKILL.md +8 -8
  45. package/adapters/codex/skills/scenario-script/author/SKILL.md +29 -20
  46. package/adapters/codex/skills/scenario-script/author/references/compose.md +54 -9
  47. package/adapters/codex/skills/scenario-script/author/references/default-template.md +64 -0
  48. package/adapters/codex/skills/scenario-script/author/references/inspect.md +7 -3
  49. package/adapters/codex/skills/scenario-script/author/references/validate.md +23 -11
  50. package/adapters/codex/skills/scenario-script/author/references/writing-style.md +74 -0
  51. package/adapters/codex/skills/scenario-script/references/compose.md +54 -9
  52. package/adapters/codex/skills/scenario-script/references/default-template.md +64 -0
  53. package/adapters/codex/skills/scenario-script/references/inspect.md +7 -3
  54. package/adapters/codex/skills/scenario-script/references/validate.md +23 -11
  55. package/adapters/codex/skills/scenario-script/references/writing-style.md +74 -0
  56. package/adapters/codex/skills/scenario-script/repair/SKILL.md +35 -16
  57. package/adapters/codex/skills/scenario-script/repair/references/compose.md +88 -0
  58. package/adapters/codex/skills/scenario-script/repair/references/default-template.md +64 -0
  59. package/adapters/codex/skills/scenario-script/repair/references/inspect.md +109 -0
  60. package/adapters/codex/skills/scenario-script/repair/references/validate.md +84 -0
  61. package/adapters/codex/skills/scenario-script/repair/references/writing-style.md +74 -0
  62. package/adapters/codex/skills/scenario-script/review/SKILL.md +55 -23
  63. package/adapters/codex/skills/scenario-script/review/references/compose.md +54 -9
  64. package/adapters/codex/skills/scenario-script/review/references/default-template.md +64 -0
  65. package/adapters/codex/skills/scenario-script/review/references/inspect.md +7 -3
  66. package/adapters/codex/skills/scenario-script/review/references/validate.md +23 -11
  67. package/adapters/codex/skills/scenario-script/review/references/writing-style.md +74 -0
  68. package/adapters/codex/templates/core/scenario/review-checklist.md +28 -14
  69. package/adapters/codex/templates/core/scenario/starter.md +44 -27
  70. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  71. package/adapters/kimi/INSTALL.md +10 -10
  72. package/adapters/kimi/agent-methods/catalog.yaml +1 -1
  73. package/adapters/kimi/compatibility.json +4 -4
  74. package/adapters/kimi/family-apis/catalog.json +1 -1
  75. package/adapters/kimi/skills/scenario-script/SKILL.md +8 -8
  76. package/adapters/kimi/skills/scenario-script/author/SKILL.md +29 -20
  77. package/adapters/kimi/skills/scenario-script/author/references/compose.md +54 -9
  78. package/adapters/kimi/skills/scenario-script/author/references/default-template.md +64 -0
  79. package/adapters/kimi/skills/scenario-script/author/references/inspect.md +7 -3
  80. package/adapters/kimi/skills/scenario-script/author/references/validate.md +23 -11
  81. package/adapters/kimi/skills/scenario-script/author/references/writing-style.md +74 -0
  82. package/adapters/kimi/skills/scenario-script/references/compose.md +54 -9
  83. package/adapters/kimi/skills/scenario-script/references/default-template.md +64 -0
  84. package/adapters/kimi/skills/scenario-script/references/inspect.md +7 -3
  85. package/adapters/kimi/skills/scenario-script/references/validate.md +23 -11
  86. package/adapters/kimi/skills/scenario-script/references/writing-style.md +74 -0
  87. package/adapters/kimi/skills/scenario-script/repair/SKILL.md +35 -16
  88. package/adapters/kimi/skills/scenario-script/repair/references/compose.md +88 -0
  89. package/adapters/kimi/skills/scenario-script/repair/references/default-template.md +64 -0
  90. package/adapters/kimi/skills/scenario-script/repair/references/inspect.md +109 -0
  91. package/adapters/kimi/skills/scenario-script/repair/references/validate.md +84 -0
  92. package/adapters/kimi/skills/scenario-script/repair/references/writing-style.md +74 -0
  93. package/adapters/kimi/skills/scenario-script/review/SKILL.md +55 -23
  94. package/adapters/kimi/skills/scenario-script/review/references/compose.md +54 -9
  95. package/adapters/kimi/skills/scenario-script/review/references/default-template.md +64 -0
  96. package/adapters/kimi/skills/scenario-script/review/references/inspect.md +7 -3
  97. package/adapters/kimi/skills/scenario-script/review/references/validate.md +23 -11
  98. package/adapters/kimi/skills/scenario-script/review/references/writing-style.md +74 -0
  99. package/adapters/kimi/templates/core/scenario/review-checklist.md +28 -14
  100. package/adapters/kimi/templates/core/scenario/starter.md +44 -27
  101. package/agent-methods/catalog.yaml +1 -1
  102. package/compatibility.json +4 -4
  103. package/family-apis/catalog.json +1 -1
  104. package/package.json +2 -2
  105. package/skills/scenario-script/SKILL.md +8 -8
  106. package/skills/scenario-script/author/SKILL.md +29 -20
  107. package/skills/scenario-script/author/references/compose.md +54 -9
  108. package/skills/scenario-script/author/references/default-template.md +64 -0
  109. package/skills/scenario-script/author/references/inspect.md +7 -3
  110. package/skills/scenario-script/author/references/validate.md +23 -11
  111. package/skills/scenario-script/author/references/writing-style.md +74 -0
  112. package/skills/scenario-script/references/compose.md +54 -9
  113. package/skills/scenario-script/references/default-template.md +64 -0
  114. package/skills/scenario-script/references/inspect.md +7 -3
  115. package/skills/scenario-script/references/validate.md +23 -11
  116. package/skills/scenario-script/references/writing-style.md +74 -0
  117. package/skills/scenario-script/repair/SKILL.md +35 -16
  118. package/skills/scenario-script/repair/references/compose.md +88 -0
  119. package/skills/scenario-script/repair/references/default-template.md +64 -0
  120. package/skills/scenario-script/repair/references/inspect.md +109 -0
  121. package/skills/scenario-script/repair/references/validate.md +84 -0
  122. package/skills/scenario-script/repair/references/writing-style.md +74 -0
  123. package/skills/scenario-script/review/SKILL.md +55 -23
  124. package/skills/scenario-script/review/references/compose.md +54 -9
  125. package/skills/scenario-script/review/references/default-template.md +64 -0
  126. package/skills/scenario-script/review/references/inspect.md +7 -3
  127. package/skills/scenario-script/review/references/validate.md +23 -11
  128. package/skills/scenario-script/review/references/writing-style.md +74 -0
  129. package/skills-src/scenario-script/SKILL.md +8 -8
  130. package/skills-src/scenario-script/author/SKILL.md +29 -20
  131. package/skills-src/scenario-script/references/compose.md +54 -9
  132. package/skills-src/scenario-script/references/default-template.md +64 -0
  133. package/skills-src/scenario-script/references/inspect.md +7 -3
  134. package/skills-src/scenario-script/references/validate.md +23 -11
  135. package/skills-src/scenario-script/references/writing-style.md +74 -0
  136. package/skills-src/scenario-script/repair/SKILL.md +35 -16
  137. package/skills-src/scenario-script/review/SKILL.md +55 -23
  138. package/templates/core/scenario/review-checklist.md +28 -14
  139. package/templates/core/scenario/starter.md +44 -27
@@ -0,0 +1,74 @@
1
+ # 场景剧本行文规则(去 AI 味)
2
+
3
+ 内部参考,不作为 catalog 入口。编写、审阅、修复场景剧本正文时以本文件为统一的行文约束。
4
+
5
+ ## 密度原则
6
+
7
+ 单独出现不算问题,短段落内反复堆叠、脱离具体内容、空转才是问题。按出现次数机械
8
+ 替换会把正常表达误改成翻译腔。风格类发现必须附密度判断。
9
+
10
+ ## 规则
11
+
12
+ - 删空洞词:显著、有效、充分、极大、赋能、抓手、全方位、无缝、落地(滥用时)。
13
+ - 不用"首先/其次/再次/最后"排队;不用"不仅…而且…"凑对仗;禁三连排比和四字短语堆砌。
14
+ - 句子长短交错、多用短句;具体名词+具体动词;数字只在真实时写。
15
+ - 禁"总而言之/综上所述/值得注意的是/换句话说";破折号不当万能连接词;不喊口号、
16
+ 不拟人煽情。
17
+
18
+ ## 词汇可懂性纪律
19
+
20
+ 根因说明:术语表中文名 ≠ 用户语言。项目术语表服务的是"机器标识 ↔ 中文名"的对齐
21
+ 一致性,其中的中文名(以及设计文档、ADR 里的工程师词汇)不得未经翻译直接进入
22
+ 场景正文。
23
+
24
+ - 用户视角测试:场景正文每句话必须能回答"用户看到什么、做到什么"。系统内部动作
25
+ 动词(物化、收束、密封、栅栏、编排、物化最终裁决这类)不得直接用于用户视角叙述;
26
+ 要么改写成可观察事实("系统给出最终结论""任务如实停住"),要么首次出现时跟一句
27
+ 大白话解释。
28
+ - 术语双轨制:项目术语表是"机器标识 ↔ 中文名"的对照表,服务文档一致性,不是用户
29
+ 语言的免解释通行证。业务/机器术语在场景中首次出现,用一句独立的话给出大白话定义
30
+ (示例:"项目委托包是把口头要求写成的正式委托单,后续验收以它为准"),不用
31
+ "概念(大白话解释)"式括注;读者已懂的词连定义都不用写;之后可沿用中文名,机器
32
+ 标识放反引号。
33
+ - slug 最小露面:技能名、命令这类 slug 只在字段块(入口编号)出现,正文用"入口技能"
34
+ "该命令"指代。
35
+ - 评审检查法:评审者对每个生造词/内部黑话做"外行三问"——是什么、谁在做、我看到
36
+ 什么;答不上来的词判发现。
37
+
38
+ ## 写作惯性约束(BDD 正文)
39
+
40
+ 以下八条针对 Given/When/Then 正文的写作惯性,与"规则"节同级执行;违反即判发现
41
+ (`SS-F-017`),finding 的 `message` 须含问题句字面引用。
42
+
43
+ - 视角锁定:全篇单一称呼,不在"用户/你"之间切换。
44
+ - 语体一致:既然用了 Given/When/Then 框架,全篇保持书面简洁体,不插口语;判断
45
+ 标准——一句话放进微信聊天不违和,就不该出现在 BDD 用例里。
46
+ - 不做括号翻译:禁止"术语A(术语A的大白话解释)"写法;概念首次出现时用一句独立的
47
+ 话定义,读者已懂的词连定义都不用写。机器标识、枚举值首次出现给中文名的写法保留,
48
+ 例如"无变更接受(`NOOP_ACCEPTED`)"——这是术语表纪律,不算括号翻译。
49
+ - 一句一事:不在一句内用顿号、逗号并列三个及以上同级概念,改用列表。
50
+ - 信任读者推理:不写正反各说一遍的双保险,不写"这属于XX阶段"式的元分类。
51
+ - Then 写正向状态:最多用一条否定句划边界,禁止连续两条"没有发生XX"。
52
+ - 不提前道歉、不预防性解释:禁用"需要注意的是""值得一提"这类插入语("规则"节已禁
53
+ "值得注意的是""换句话说",本节把预防性解释整体列入)。
54
+ - 完稿自检:检查语体、人称各只剩一个值。
55
+
56
+ ## 结构化场景约束
57
+
58
+ - Given 写可构造的状态:路径、记录、配置、环境条件,不写"系统运行正常"这类空话。
59
+ - When 写具体动作:命令、点击、输入,步骤编号,每步一个动作。
60
+ - Then 写可观察的事实:输出文本、退出码、状态、记录。每条都能被检查真伪,
61
+ 不写口号,不写"用户体验良好""流程顺畅"这类不可验证表述。
62
+ - 不写设计理由、不写宣传、不写观点。
63
+ - 不写本机绝对路径:路径用项目相对形式或占位符(如 `<project-root>`),
64
+ 不出现 `<用户主目录>/xxx`、`~/xxx` 这类机器私有路径。
65
+ - 机标识(文件名、命令、枚举值)保持英文原样并放反引号;术语表之外的概念用日常
66
+ 说法,不生造术语。
67
+
68
+ ## 交付前快速检查
69
+
70
+ - 有没有空洞词或口号?删。
71
+ - 有没有排队连接词或对仗凑句?改成正常叙述。
72
+ - 每句的名词和动词是否具体?数字是否真实?
73
+ - Then 的每条结果是否能被检查真伪?不能就改写成可观察事实。
74
+ - 语体、人称是否各只剩一个值?Then 是否写正向状态(否定句至多一条划边界)?
@@ -20,15 +20,60 @@
20
20
 
21
21
  ### 3. 编写正文结构
22
22
 
23
- 正文应覆盖角色与目标、前置条件、主路径、异常路径、可观察结果和必要追溯等通用质量维度;具体章节名和布局从项目模板与已有制品派生。
24
-
25
- ### 4. 场景步骤编写规则
26
-
27
- 每个主路径和异常路径步骤必须:
28
- - 使用编号列表
29
- - 以动词开头
30
- - 包含可验证的条件(不使用"足够""合理""尽快"等模糊词)
31
- - 每个异常路径描述触发条件和预期处理方式
23
+ 项目有模板时服从项目模板;项目无模板时使用 `references/default-template.md` 的默认骨架。
24
+ 默认骨架的要点:
25
+
26
+ - 场景节点标题:主场景 `## S-NN:<名>`(H2),变体 `### S-NNa:<名>`(H3,字母后缀)。
27
+ 编号匹配 `^S-\d+[a-z]?$`,允许前导零;冒号半/全角由项目模板统一。标题层级、编号
28
+ 形式、冒号形式以项目配置与既有制品为准——节点标题是制品图的解析锚点(CLI 按
29
+ `^#{2,3}\s+(S-\d+[a-z]?)\s*[::]` 识别),不得随意变更形式。一个文件可含多个节点。
30
+ - 字段块:节点标题下逐行写加粗字段——`**场景代码**: <稳定 slug>`(推荐)、
31
+ `**关联决策**: <ID 列表>`、`**关联功能**: <ID 列表>`。`关联决策`/`关联功能` 是机器
32
+ 锚点、必需:CLI 从含"关联功能/关联决策"字样的行内提取 ID 成边,只引用制品图中
33
+ 已存在的 ID。字段集允许项目模板扩展(如 `**入口编号**`),技能族只强制上述三项。
34
+ 标签后只写制品 ID,标签名以项目 `relationFields` 配置为准。
35
+ - 场景先于功能制品时(发现级场景):`**关联功能**` 行按项目模板约定处理——省略该行,
36
+ 或按项目模板标注"尚无功能制品";如实写明现状,不编造功能 ID 顶替。此时 CLI 报的
37
+ `ORPHAN_SCENARIO` warning(不阻断、exit 0)属预期,不强制消灭。功能制品后续建立后,
38
+ 再补挂接并在功能制品 frontmatter `scenarios` 中回列本场景。
39
+ - `### Given`:前置条件,可构造的具体状态(文件存在与否、数据记录、环境条件),
40
+ 逐条列出;不写泛泛背景。
41
+ - `### When`:用户或外部动作,编号步骤;每步一个具体动作。
42
+ - `### Then`:可观察、可验证的结果:输出文本、退出码、状态、记录。逐条列出,
43
+ 每条都能被检查真伪;不写口号、不写"用户体验良好"之类不可验证表述。
44
+ - 小节标题形式(Given/When/Then 的具体写法)从项目模板派生。
45
+ - 变体场景:分支、边界、异常写成紧随主场景的变体 `### S-NNa:<名>`,复用主场景
46
+ 语境,只写与主场景不同的 Given/When/Then。每个变体同样声明字段块。
47
+
48
+ ### 4. 语言风格(结构化验收场景语体)
49
+
50
+ 场景剧本的语体是结构化验收场景:写可构造的状态、具体的动作、可观察的事实。
51
+ 不写宣传,不写设计理由,不写口号。
52
+
53
+ 去 AI 味行文规则(空洞词、排队连接词、排比堆砌等)统一维护在
54
+ `references/writing-style.md`,编写与审阅都以该文件为准。场景层面的约束:
55
+
56
+ - Given 写可构造的状态:路径、记录、配置,不写"系统运行正常"这类空话。
57
+ - When 写具体动作:命令、点击、输入,步骤编号。
58
+ - Then 写可观察事实:输出、退出码、状态、记录;数字只在真实时写。
59
+ - 不写设计理由、不写宣传、不写观点。
60
+ - 写作惯性约束(视角锁定、语体一致、一句一事、Then 写正向状态等八条)统一维护在
61
+ `references/writing-style.md` 的"写作惯性约束"节,与去 AI 味行文规则同级执行。
62
+ - 禁本机绝对路径:正文中的路径一律用项目相对路径(如 `artifacts/scenarios/...`)或
63
+ 占位符(如 `<project-root>`),不得出现 `<用户主目录>/xxx`、`~/xxx` 这类机器私有路径。
64
+
65
+ **交付前快速检查**:
66
+
67
+ - 有没有空洞词、排队连接词或排比堆砌?删(清单见 `references/writing-style.md`)。
68
+ - 词汇可懂性:正文能否通过"外行三问"、内部动词有无裸用、术语首现有无解释、slug 是否
69
+ 只在字段块(检查法见 `references/writing-style.md` 的"词汇可懂性纪律"节)?
70
+ - Then 里有没有不可验证的表述?换成可观察事实。
71
+ - 正文有没有本机绝对路径?换成项目相对路径或占位符。
72
+ - `关联功能`/`关联决策` 是否只引用图中已存在的 ID?有没有编造关联?
73
+ - 关联功能存在时,功能制品 frontmatter 的 `scenarios` 是否回列了本场景(双向一致)?
74
+ 尚未挂接功能时,`关联功能` 行是否按项目模板约定省略或标注,且如实报告?
75
+ - 每个节点的字段块是否齐全(场景代码/关联决策/关联功能;发现级场景下关联功能行可
76
+ 按约定省略)?
32
77
 
33
78
  ### 5. 文件放置
34
79
 
@@ -0,0 +1,64 @@
1
+ ---
2
+ id: S-<nn>
3
+ title: <场景文件标题>
4
+ status: <项目状态枚举>
5
+ ---
6
+
7
+ ## S-<nn>:<场景名>
8
+
9
+ **场景代码**: <稳定交叉引用 slug,kebab-case>
10
+ **关联决策**: <决策 ID 列表>
11
+ **关联功能**: <功能 ID 列表;尚无功能制品时省略本行,或按项目模板标注"尚无功能制品">
12
+
13
+ ### Given
14
+
15
+ - <可构造的具体前置状态:文件、记录、配置、环境条件>
16
+
17
+ ### When
18
+
19
+ 1. <用户或外部动作,编号步骤>
20
+
21
+ ### Then
22
+
23
+ - <可观察、可验证的结果:输出文本、退出码、状态、记录>
24
+
25
+ ---
26
+
27
+ ### S-<nna>:<变体名>
28
+
29
+ **场景代码**: <变体稳定 slug>
30
+ **关联决策**: <决策 ID 列表>
31
+ **关联功能**: <功能 ID 列表>
32
+
33
+ ### Given
34
+
35
+ - <与主场景不同的前置状态>
36
+
37
+ ### When
38
+
39
+ 1. <与主场景不同的动作步骤>
40
+
41
+ ### Then
42
+
43
+ - <该分支下可观察、可验证的结果>
44
+
45
+ ## 使用说明(放入项目前删除本节)
46
+
47
+ - 节点标题是制品图的解析锚点:主场景 H2、变体 H3,编号匹配 `^S-\d+[a-z]?$`(允许
48
+ 前导零),冒号半/全角以项目 `artifact-graph.config.yaml` 与既有制品为准(CLI 按
49
+ `^#{2,3}\s+(S-\d+[a-z]?)\s*[::]` 识别节点)。
50
+ - 字段块中 `关联功能`/`关联决策` 是机器锚点、必需:CLI 从含"关联功能/关联决策"字样
51
+ 的行内提取 ID 成边,只引用制品图中已存在的 ID。`场景代码` 是稳定交叉引用 slug、
52
+ 推荐。字段集允许项目模板扩展(如 `**入口编号**`)。
53
+ - 场景先于功能制品时(发现级场景):`关联功能` 行按项目模板约定省略,或标注
54
+ "尚无功能制品";如实写明,不编造功能 ID。此时 CLI 的 `ORPHAN_SCENARIO` warning
55
+ (不阻断、exit 0)属预期,不强制消灭;功能制品建立后再补挂接与回列。
56
+ - 追溯一致:关联功能存在时,功能制品 frontmatter 的 `scenarios` 字段必须回列本场景
57
+ (双向一致,CLI 校验强制);暂缺不判 fail。
58
+ - 场景→决策边只对 `D-XXX-数字` 形式的决策 ID 成边(CLI 硬编码);`ADR-\d{4}` 类
59
+ 编号只做文档级追溯,不产生图边。
60
+ - 关键分支、边界、异常写成变体节点(H3、字母后缀),复用主场景语境、只写差异。
61
+ - 正文不得出现本机绝对路径(如 `<用户主目录>/xxx`、`~/xxx`):路径用项目相对形式或占位符
62
+ (如 `<project-root>`)。
63
+ - 语言风格规则见 `compose.md` 第 4 节与 `writing-style.md`(结构化验收场景语体、
64
+ 去 AI 味行文规则、密度原则)。
@@ -52,15 +52,19 @@ artifact-graph query --from <ID>
52
52
  - 已有制品 status 分布
53
53
  - 制品文件命名模式
54
54
 
55
- ### 4. 关联制品可达性
55
+ ### 4. 关联制品盘点
56
56
 
57
- 对目标制品的关联制品 ID:
57
+ 场景剧本是结构化的发现级场景:时序上先于/驱动 PRD 与功能特性,允许先于功能制品
58
+ 存在。本步骤盘点图中已有功能特性/决策制品,确定可挂接的关联对象:
58
59
 
59
60
  ```bash
60
61
  artifact-graph query --from <RELATED_ID>
61
62
  ```
62
63
 
63
- 记录每个关联 ID 的存在状态;状态取值沿用目标项目的表达。
64
+ 记录每个候选关联 ID 的存在状态;状态取值沿用目标项目的表达。待关联制品暂缺时
65
+ 不阻塞:如实记录盘点结果(哪些可挂接、哪些暂缺),供 compose 按项目模板约定省略
66
+ 或标注 `关联功能` 行;不编造 ID。同时记录候选功能制品 frontmatter 的 `scenarios`
67
+ 字段现状,供 compose 在关联功能存在时建立双向回列。
64
68
 
65
69
  ### 5. 实现状态检查
66
70
 
@@ -15,8 +15,9 @@ artifact-graph validate --root . --warning-only
15
15
  ```
16
16
 
17
17
  检查:
18
- - 无新增孤立制品警告
19
- - 无新增关联引用警告
18
+ - 无新增孤立制品错误;`ORPHAN_SCENARIO`(场景无功能关联)是 warning、不阻断
19
+ (exit 0),发现级场景尚未挂接功能时该警告属预期,如实记录即可,不强制消灭
20
+ - 无新增关联引用警告(引用了图中不存在的 ID 必须处理)
20
21
  - 新制品已正确参与图遍历
21
22
 
22
23
  ### 2. 项目规范完整性
@@ -39,9 +40,20 @@ artifact-graph query --from <ID>
39
40
 
40
41
  ### 5. 场景质量基本检查
41
42
 
42
- - 能定位角色与目标、前置条件、主路径和可观察结果(章节名服从项目模板)
43
- - 关键异常路径得到覆盖
44
- - 步骤与结果可验证,不依赖模糊表述
43
+ - 每个节点字段块齐全:`关联功能`/`关联决策`(机器锚点、必需)、`场景代码`(推荐);
44
+ 项目扩展字段符合项目模板
45
+ - 能定位 Given/When/Then(小节标题形式服从项目模板)
46
+ - Given 是可构造的具体前置状态;When 是编号步骤的具体动作
47
+ - Then 是可观察、可验证的结果(输出、退出码、状态、记录),无口号、无模糊词
48
+ - 关键分支、边界、异常有变体节点覆盖,变体同样声明字段块
49
+ - 语体为结构化验收场景:无宣传收束、无空洞词;按密度原则判断,不误伤正常表达
50
+ (行文规则见 `writing-style.md`)
51
+ - 词汇可懂性:正文通过"外行三问",内部动词未裸用,术语首现有解释,slug 只在字段块
52
+ (检查法见 `writing-style.md` 的"词汇可懂性纪律"节)
53
+ - 正文无本机绝对路径(如 `<用户主目录>/xxx`、`~/xxx`):路径用项目相对形式或占位符
54
+ - 追溯一致:`关联功能` 只引用图中已存在的 ID,无编造关联;关联功能存在时,功能制品
55
+ frontmatter 的 `scenarios` 回列本场景;功能制品暂缺时 `关联功能` 行按项目模板约定
56
+ 省略或标注,属可接受的发现级暂态,不判 fail
45
57
 
46
58
  ## 输出
47
59
 
@@ -63,10 +75,10 @@ validation:
63
75
  - id: <关联 ID>
64
76
  exists: true | false
65
77
  quality_dimensions:
66
- role_and_goals: present | missing
67
- preconditions: present | missing
68
- main_path: present | missing
69
- exception_paths: present | missing
70
- observable_results: present | missing
71
- traceability: present | missing
78
+ field_block: present | missing
79
+ given_when_then: present | missing
80
+ variant_coverage: present | missing
81
+ # 关联功能暂缺(发现级暂态)记 pending 而非 inconsistent
82
+ traceability: consistent | inconsistent | pending
83
+ style: present | missing
72
84
  ```
@@ -0,0 +1,74 @@
1
+ # 场景剧本行文规则(去 AI 味)
2
+
3
+ 内部参考,不作为 catalog 入口。编写、审阅、修复场景剧本正文时以本文件为统一的行文约束。
4
+
5
+ ## 密度原则
6
+
7
+ 单独出现不算问题,短段落内反复堆叠、脱离具体内容、空转才是问题。按出现次数机械
8
+ 替换会把正常表达误改成翻译腔。风格类发现必须附密度判断。
9
+
10
+ ## 规则
11
+
12
+ - 删空洞词:显著、有效、充分、极大、赋能、抓手、全方位、无缝、落地(滥用时)。
13
+ - 不用"首先/其次/再次/最后"排队;不用"不仅…而且…"凑对仗;禁三连排比和四字短语堆砌。
14
+ - 句子长短交错、多用短句;具体名词+具体动词;数字只在真实时写。
15
+ - 禁"总而言之/综上所述/值得注意的是/换句话说";破折号不当万能连接词;不喊口号、
16
+ 不拟人煽情。
17
+
18
+ ## 词汇可懂性纪律
19
+
20
+ 根因说明:术语表中文名 ≠ 用户语言。项目术语表服务的是"机器标识 ↔ 中文名"的对齐
21
+ 一致性,其中的中文名(以及设计文档、ADR 里的工程师词汇)不得未经翻译直接进入
22
+ 场景正文。
23
+
24
+ - 用户视角测试:场景正文每句话必须能回答"用户看到什么、做到什么"。系统内部动作
25
+ 动词(物化、收束、密封、栅栏、编排、物化最终裁决这类)不得直接用于用户视角叙述;
26
+ 要么改写成可观察事实("系统给出最终结论""任务如实停住"),要么首次出现时跟一句
27
+ 大白话解释。
28
+ - 术语双轨制:项目术语表是"机器标识 ↔ 中文名"的对照表,服务文档一致性,不是用户
29
+ 语言的免解释通行证。业务/机器术语在场景中首次出现,用一句独立的话给出大白话定义
30
+ (示例:"项目委托包是把口头要求写成的正式委托单,后续验收以它为准"),不用
31
+ "概念(大白话解释)"式括注;读者已懂的词连定义都不用写;之后可沿用中文名,机器
32
+ 标识放反引号。
33
+ - slug 最小露面:技能名、命令这类 slug 只在字段块(入口编号)出现,正文用"入口技能"
34
+ "该命令"指代。
35
+ - 评审检查法:评审者对每个生造词/内部黑话做"外行三问"——是什么、谁在做、我看到
36
+ 什么;答不上来的词判发现。
37
+
38
+ ## 写作惯性约束(BDD 正文)
39
+
40
+ 以下八条针对 Given/When/Then 正文的写作惯性,与"规则"节同级执行;违反即判发现
41
+ (`SS-F-017`),finding 的 `message` 须含问题句字面引用。
42
+
43
+ - 视角锁定:全篇单一称呼,不在"用户/你"之间切换。
44
+ - 语体一致:既然用了 Given/When/Then 框架,全篇保持书面简洁体,不插口语;判断
45
+ 标准——一句话放进微信聊天不违和,就不该出现在 BDD 用例里。
46
+ - 不做括号翻译:禁止"术语A(术语A的大白话解释)"写法;概念首次出现时用一句独立的
47
+ 话定义,读者已懂的词连定义都不用写。机器标识、枚举值首次出现给中文名的写法保留,
48
+ 例如"无变更接受(`NOOP_ACCEPTED`)"——这是术语表纪律,不算括号翻译。
49
+ - 一句一事:不在一句内用顿号、逗号并列三个及以上同级概念,改用列表。
50
+ - 信任读者推理:不写正反各说一遍的双保险,不写"这属于XX阶段"式的元分类。
51
+ - Then 写正向状态:最多用一条否定句划边界,禁止连续两条"没有发生XX"。
52
+ - 不提前道歉、不预防性解释:禁用"需要注意的是""值得一提"这类插入语("规则"节已禁
53
+ "值得注意的是""换句话说",本节把预防性解释整体列入)。
54
+ - 完稿自检:检查语体、人称各只剩一个值。
55
+
56
+ ## 结构化场景约束
57
+
58
+ - Given 写可构造的状态:路径、记录、配置、环境条件,不写"系统运行正常"这类空话。
59
+ - When 写具体动作:命令、点击、输入,步骤编号,每步一个动作。
60
+ - Then 写可观察的事实:输出文本、退出码、状态、记录。每条都能被检查真伪,
61
+ 不写口号,不写"用户体验良好""流程顺畅"这类不可验证表述。
62
+ - 不写设计理由、不写宣传、不写观点。
63
+ - 不写本机绝对路径:路径用项目相对形式或占位符(如 `<project-root>`),
64
+ 不出现 `<用户主目录>/xxx`、`~/xxx` 这类机器私有路径。
65
+ - 机标识(文件名、命令、枚举值)保持英文原样并放反引号;术语表之外的概念用日常
66
+ 说法,不生造术语。
67
+
68
+ ## 交付前快速检查
69
+
70
+ - 有没有空洞词或口号?删。
71
+ - 有没有排队连接词或对仗凑句?改成正常叙述。
72
+ - 每句的名词和动词是否具体?数字是否真实?
73
+ - Then 的每条结果是否能被检查真伪?不能就改写成可观察事实。
74
+ - 语体、人称是否各只剩一个值?Then 是否写正向状态(否定句至多一条划边界)?
@@ -35,22 +35,41 @@ node <plugin-root>/scripts/check-workflow-profile.mjs \
35
35
 
36
36
  #### 结构修复(SS-F-001 至 SS-F-003)
37
37
  - 按项目配置、模板和同类制品补充或修正结构
38
- - 修正 ID 使其匹配项目 idPatterns 中的对应 pattern
38
+ - 修正 ID 与节点编号使其匹配项目 idPatterns 中的对应 pattern(主场景 H2、变体 H3,`^S-\d+[a-z]?$`)
39
39
  - 修正 status 为项目定义的合法枚举值
40
40
 
41
- #### 场景质量修复(SS-F-004 至 SS-F-008)
42
- - 补充缺失的角色与目标描述
43
- - 补充前置条件
44
- - 为无编号的主路径步骤添加编号,替换模糊词为可测试描述
45
- - 补充异常路径覆盖
46
- - 替换可观察结果中的模糊词为可验证条件
47
-
48
- #### 制品链修复(SS-F-009 至 SS-F-010)
49
- - 移除不可达的关联制品引用,或创建缺失的制品
50
- - 修复 validate 报告的具体警告
51
-
52
- #### 追溯修复(SS-F-011)
53
- - 建立或修复与需求/功能特性制品的追溯关联
41
+ #### 字段块与追溯修复(SS-F-004、SS-F-009 至 SS-F-011、SS-F-015)
42
+ - 补齐缺失的 `关联功能`/`关联决策` 机器锚点;`场景代码` 缺失时补稳定 slug
43
+ - 移除不可达的关联制品引用(引用了图中不存在的 ID 属错误,必删或更正),或在 `suggested_fix` 中提请人工创建缺失制品
44
+ - 修复 validate 报告的具体警告;`ORPHAN_SCENARIO` 在发现级场景下属预期 warning,不强制消灭
45
+ - 双向一致:关联功能存在时,在功能制品 frontmatter `scenarios` 中回列本场景;删除编造的关联 ID
46
+ - 功能制品暂缺、场景尚未挂接是发现级暂态:不自动创建功能制品、不编造 ID 顶替;按项目模板约定保留省略或标注写法,并在 evidence 中如实说明;是否补齐挂接属人工决策
47
+ - 正文出现本机绝对路径(SS-F-015)时改为项目相对路径或占位符
48
+ - 决策 ID 形式注意:只有 `D-XXX-数字` 形式能成边;`ADR-\d{4}` 类编号保留为文档级追溯,不得当作图边修复目标
49
+
50
+ #### Given/When/Then 修复(SS-F-005 至 SS-F-007)
51
+ - 把 Given 改写成可构造的具体前置状态
52
+ - 把 When 改写成编号步骤的具体动作
53
+ - 把 Then 中的口号和模糊词换成可观察、可验证的事实(输出、退出码、状态、记录)
54
+
55
+ #### 变体修复(SS-F-008)
56
+ - 为缺失的关键分支、边界、异常补变体节点,只写与主场景的差异,并同样声明字段块
57
+
58
+ #### 风格修复(SS-F-012 至 SS-F-014、SS-F-016 至 SS-F-017)
59
+ - 按密度原则处理风格发现:单发命中不修,短段落内反复堆叠或脱离具体内容才修
60
+ - 风格修复只改表述,不改变场景的事实内容(前置状态、动作、预期结果保持原样);
61
+ 语体保持结构化验收场景,行文规则见 `../references/writing-style.md`
62
+ - 词汇可懂性修复(SS-F-016,细则见 `../references/writing-style.md` 的"词汇可懂性纪律"节):
63
+ 把内部动词和生造词改写成可观察事实,或为首次出现的业务/机器术语用独立句补大白话
64
+ 定义(不用"概念(解释)"式括注);混入正文的技能 slug 移回字段块(入口编号),
65
+ 正文改用"入口技能""该命令"指代
66
+ - 写作惯性修复(SS-F-017,细则见 `../references/writing-style.md` 的"写作惯性约束"节):
67
+ 只改表达——统一称呼、去口语、拆并列、删插入语、把连续否定改成正向状态划边界——
68
+ 不改变任何行为断言的事实内容
69
+ - 无据断言(SS-F-013)不得靠"写得模糊"蒙混:使 Given/Then 与关联功能/决策制品对齐,
70
+ 或在 `suggested_fix` 中提请人工裁决差异
71
+ - 可读性修复(SS-F-014)优先改写节点标题与场景代码,不新增章节
72
+ - 修复后重查:`关联功能` 仍只引用图中已存在的 ID;关联功能存在时双向回列仍一致;暂缺挂接未被误修成编造引用
54
73
 
55
74
  ### 3. 修复后验证
56
75
 
@@ -91,7 +110,7 @@ node <plugin-root>/scripts/check-workflow-profile.mjs \
91
110
  ## 修复边界
92
111
 
93
112
  - **可自动修复**:项目规则明确且不改变业务语义的结构、格式和表述问题
94
- - **需人工决策**:场景质量内容补充(角色目标、异常路径覆盖)、关联制品是否应创建、status 变更
113
+ - **需人工决策**:验收口径内容补充(Given 前置状态、Then 预期结果、变体覆盖范围)、关联制品是否应创建(含发现级暂态下是否补齐功能挂接)、status 变更
95
114
  - **不自动修改**:代码文件、需求制品、设计文档
96
115
 
97
116
  ## 质量要求
@@ -99,7 +118,7 @@ node <plugin-root>/scripts/check-workflow-profile.mjs \
99
118
  - 每个修复动作映射到协议字段:已处理 finding 写入 `repair.findings_addressed`,实际改动文件写入 `repair.files_modified`,跳过原因与命令结果写入 `evidence`
100
119
  - 修复不得改变场景的业务语义,只修正结构和格式问题
101
120
  - re-review 必须运行实际的 validate 命令,不靠叙述确认
102
- - 不得泄漏项目私有实现细节和绝对路径
121
+ - 不得泄漏项目私有实现细节;修复后正文仍不得含本机绝对路径
103
122
 
104
123
  ## Profile 与 Worker Contract
105
124
 
@@ -0,0 +1,88 @@
1
+ # scenario-script compose
2
+
3
+ 内部工序,不作为 catalog 入口。
4
+
5
+ ## 目的
6
+
7
+ 基于 inspect 结果编写场景剧本制品的 frontmatter 和正文。
8
+
9
+ ## 步骤
10
+
11
+ ### 1. 确定制品 ID
12
+
13
+ - 从项目 `idPatterns` 中场景类型对应的 pattern 派生合法 ID
14
+ - 检查与已有制品 ID 不冲突
15
+ - ID 应简短且具有业务语义
16
+
17
+ ### 2. 编写 frontmatter
18
+
19
+ 从 inspect 输出的项目模板、配置和同类制品派生 frontmatter。不得自行增加项目未采用的字段或状态。
20
+
21
+ ### 3. 编写正文结构
22
+
23
+ 项目有模板时服从项目模板;项目无模板时使用 `references/default-template.md` 的默认骨架。
24
+ 默认骨架的要点:
25
+
26
+ - 场景节点标题:主场景 `## S-NN:<名>`(H2),变体 `### S-NNa:<名>`(H3,字母后缀)。
27
+ 编号匹配 `^S-\d+[a-z]?$`,允许前导零;冒号半/全角由项目模板统一。标题层级、编号
28
+ 形式、冒号形式以项目配置与既有制品为准——节点标题是制品图的解析锚点(CLI 按
29
+ `^#{2,3}\s+(S-\d+[a-z]?)\s*[::]` 识别),不得随意变更形式。一个文件可含多个节点。
30
+ - 字段块:节点标题下逐行写加粗字段——`**场景代码**: <稳定 slug>`(推荐)、
31
+ `**关联决策**: <ID 列表>`、`**关联功能**: <ID 列表>`。`关联决策`/`关联功能` 是机器
32
+ 锚点、必需:CLI 从含"关联功能/关联决策"字样的行内提取 ID 成边,只引用制品图中
33
+ 已存在的 ID。字段集允许项目模板扩展(如 `**入口编号**`),技能族只强制上述三项。
34
+ 标签后只写制品 ID,标签名以项目 `relationFields` 配置为准。
35
+ - 场景先于功能制品时(发现级场景):`**关联功能**` 行按项目模板约定处理——省略该行,
36
+ 或按项目模板标注"尚无功能制品";如实写明现状,不编造功能 ID 顶替。此时 CLI 报的
37
+ `ORPHAN_SCENARIO` warning(不阻断、exit 0)属预期,不强制消灭。功能制品后续建立后,
38
+ 再补挂接并在功能制品 frontmatter `scenarios` 中回列本场景。
39
+ - `### Given`:前置条件,可构造的具体状态(文件存在与否、数据记录、环境条件),
40
+ 逐条列出;不写泛泛背景。
41
+ - `### When`:用户或外部动作,编号步骤;每步一个具体动作。
42
+ - `### Then`:可观察、可验证的结果:输出文本、退出码、状态、记录。逐条列出,
43
+ 每条都能被检查真伪;不写口号、不写"用户体验良好"之类不可验证表述。
44
+ - 小节标题形式(Given/When/Then 的具体写法)从项目模板派生。
45
+ - 变体场景:分支、边界、异常写成紧随主场景的变体 `### S-NNa:<名>`,复用主场景
46
+ 语境,只写与主场景不同的 Given/When/Then。每个变体同样声明字段块。
47
+
48
+ ### 4. 语言风格(结构化验收场景语体)
49
+
50
+ 场景剧本的语体是结构化验收场景:写可构造的状态、具体的动作、可观察的事实。
51
+ 不写宣传,不写设计理由,不写口号。
52
+
53
+ 去 AI 味行文规则(空洞词、排队连接词、排比堆砌等)统一维护在
54
+ `references/writing-style.md`,编写与审阅都以该文件为准。场景层面的约束:
55
+
56
+ - Given 写可构造的状态:路径、记录、配置,不写"系统运行正常"这类空话。
57
+ - When 写具体动作:命令、点击、输入,步骤编号。
58
+ - Then 写可观察事实:输出、退出码、状态、记录;数字只在真实时写。
59
+ - 不写设计理由、不写宣传、不写观点。
60
+ - 写作惯性约束(视角锁定、语体一致、一句一事、Then 写正向状态等八条)统一维护在
61
+ `references/writing-style.md` 的"写作惯性约束"节,与去 AI 味行文规则同级执行。
62
+ - 禁本机绝对路径:正文中的路径一律用项目相对路径(如 `artifacts/scenarios/...`)或
63
+ 占位符(如 `<project-root>`),不得出现 `<用户主目录>/xxx`、`~/xxx` 这类机器私有路径。
64
+
65
+ **交付前快速检查**:
66
+
67
+ - 有没有空洞词、排队连接词或排比堆砌?删(清单见 `references/writing-style.md`)。
68
+ - 词汇可懂性:正文能否通过"外行三问"、内部动词有无裸用、术语首现有无解释、slug 是否
69
+ 只在字段块(检查法见 `references/writing-style.md` 的"词汇可懂性纪律"节)?
70
+ - Then 里有没有不可验证的表述?换成可观察事实。
71
+ - 正文有没有本机绝对路径?换成项目相对路径或占位符。
72
+ - `关联功能`/`关联决策` 是否只引用图中已存在的 ID?有没有编造关联?
73
+ - 关联功能存在时,功能制品 frontmatter 的 `scenarios` 是否回列了本场景(双向一致)?
74
+ 尚未挂接功能时,`关联功能` 行是否按项目模板约定省略或标注,且如实报告?
75
+ - 每个节点的字段块是否齐全(场景代码/关联决策/关联功能;发现级场景下关联功能行可
76
+ 按约定省略)?
77
+
78
+ ### 5. 文件放置
79
+
80
+ - 文件名按项目制品命名模式(从已有制品扫描结果派生)
81
+ - 路径按项目中场景剧本注册类型的 paths 配置
82
+ - 文件名与 ID 保持可追溯对应
83
+
84
+ ## 输出
85
+
86
+ compose 输出供 validate 和 review 消费:
87
+ - 完整的制品文件内容
88
+ - 制品 ID 和路径
@@ -0,0 +1,64 @@
1
+ ---
2
+ id: S-<nn>
3
+ title: <场景文件标题>
4
+ status: <项目状态枚举>
5
+ ---
6
+
7
+ ## S-<nn>:<场景名>
8
+
9
+ **场景代码**: <稳定交叉引用 slug,kebab-case>
10
+ **关联决策**: <决策 ID 列表>
11
+ **关联功能**: <功能 ID 列表;尚无功能制品时省略本行,或按项目模板标注"尚无功能制品">
12
+
13
+ ### Given
14
+
15
+ - <可构造的具体前置状态:文件、记录、配置、环境条件>
16
+
17
+ ### When
18
+
19
+ 1. <用户或外部动作,编号步骤>
20
+
21
+ ### Then
22
+
23
+ - <可观察、可验证的结果:输出文本、退出码、状态、记录>
24
+
25
+ ---
26
+
27
+ ### S-<nna>:<变体名>
28
+
29
+ **场景代码**: <变体稳定 slug>
30
+ **关联决策**: <决策 ID 列表>
31
+ **关联功能**: <功能 ID 列表>
32
+
33
+ ### Given
34
+
35
+ - <与主场景不同的前置状态>
36
+
37
+ ### When
38
+
39
+ 1. <与主场景不同的动作步骤>
40
+
41
+ ### Then
42
+
43
+ - <该分支下可观察、可验证的结果>
44
+
45
+ ## 使用说明(放入项目前删除本节)
46
+
47
+ - 节点标题是制品图的解析锚点:主场景 H2、变体 H3,编号匹配 `^S-\d+[a-z]?$`(允许
48
+ 前导零),冒号半/全角以项目 `artifact-graph.config.yaml` 与既有制品为准(CLI 按
49
+ `^#{2,3}\s+(S-\d+[a-z]?)\s*[::]` 识别节点)。
50
+ - 字段块中 `关联功能`/`关联决策` 是机器锚点、必需:CLI 从含"关联功能/关联决策"字样
51
+ 的行内提取 ID 成边,只引用制品图中已存在的 ID。`场景代码` 是稳定交叉引用 slug、
52
+ 推荐。字段集允许项目模板扩展(如 `**入口编号**`)。
53
+ - 场景先于功能制品时(发现级场景):`关联功能` 行按项目模板约定省略,或标注
54
+ "尚无功能制品";如实写明,不编造功能 ID。此时 CLI 的 `ORPHAN_SCENARIO` warning
55
+ (不阻断、exit 0)属预期,不强制消灭;功能制品建立后再补挂接与回列。
56
+ - 追溯一致:关联功能存在时,功能制品 frontmatter 的 `scenarios` 字段必须回列本场景
57
+ (双向一致,CLI 校验强制);暂缺不判 fail。
58
+ - 场景→决策边只对 `D-XXX-数字` 形式的决策 ID 成边(CLI 硬编码);`ADR-\d{4}` 类
59
+ 编号只做文档级追溯,不产生图边。
60
+ - 关键分支、边界、异常写成变体节点(H3、字母后缀),复用主场景语境、只写差异。
61
+ - 正文不得出现本机绝对路径(如 `<用户主目录>/xxx`、`~/xxx`):路径用项目相对形式或占位符
62
+ (如 `<project-root>`)。
63
+ - 语言风格规则见 `compose.md` 第 4 节与 `writing-style.md`(结构化验收场景语体、
64
+ 去 AI 味行文规则、密度原则)。