create-yss-spec 2.2.7 → 2.2.9

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 (191) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/maintaining-skills/SKILL.md +1 -1
  4. package/template/.agents/skills/yss-antd-design/references/evidence.md +4 -0
  5. package/template/.agents/skills/yss-design-system/SKILL.md +3 -1
  6. package/template/.agents/skills/yss-page-module-development/SKILL.md +1 -1
  7. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +3 -1
  8. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  9. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  10. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  11. package/template/.agents/skills/yss-prototype-stage/SKILL.md +11 -6
  12. package/template/.agents/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  13. package/template/.agents/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  14. package/template/.agents/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  15. package/template/.agents/skills/yss-router/references/boundaries.md +1 -1
  16. package/template/.agents/skills/yss-router/references/router-contract.yaml +30 -3
  17. package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +14 -0
  18. package/template/.agents/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  19. package/template/.agents/skills/yss-ui/references/antdv-compatibility.md +1 -1
  20. package/template/.claude/skills/maintaining-skills/SKILL.md +1 -1
  21. package/template/.claude/skills/yss-antd-design/references/evidence.md +4 -0
  22. package/template/.claude/skills/yss-design-system/SKILL.md +3 -1
  23. package/template/.claude/skills/yss-page-module-development/SKILL.md +1 -1
  24. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +3 -1
  25. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  26. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  27. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  28. package/template/.claude/skills/yss-prototype-stage/SKILL.md +11 -6
  29. package/template/.claude/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  30. package/template/.claude/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  31. package/template/.claude/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  32. package/template/.claude/skills/yss-router/references/boundaries.md +1 -1
  33. package/template/.claude/skills/yss-router/references/router-contract.yaml +30 -3
  34. package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +14 -0
  35. package/template/.claude/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  36. package/template/.claude/skills/yss-ui/references/antdv-compatibility.md +1 -1
  37. package/template/.codex/skills/maintaining-skills/SKILL.md +1 -1
  38. package/template/.codex/skills/yss-antd-design/references/evidence.md +4 -0
  39. package/template/.codex/skills/yss-design-system/SKILL.md +3 -1
  40. package/template/.codex/skills/yss-page-module-development/SKILL.md +1 -1
  41. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +3 -1
  42. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  43. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  44. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  45. package/template/.codex/skills/yss-prototype-stage/SKILL.md +11 -6
  46. package/template/.codex/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  47. package/template/.codex/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  48. package/template/.codex/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  49. package/template/.codex/skills/yss-router/references/boundaries.md +1 -1
  50. package/template/.codex/skills/yss-router/references/router-contract.yaml +30 -3
  51. package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +14 -0
  52. package/template/.codex/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  53. package/template/.codex/skills/yss-ui/references/antdv-compatibility.md +1 -1
  54. package/template/.cursor/skills/maintaining-skills/SKILL.md +1 -1
  55. package/template/.cursor/skills/yss-antd-design/references/evidence.md +4 -0
  56. package/template/.cursor/skills/yss-design-system/SKILL.md +3 -1
  57. package/template/.cursor/skills/yss-page-module-development/SKILL.md +1 -1
  58. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +3 -1
  59. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  60. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  61. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  62. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +11 -6
  63. package/template/.cursor/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  64. package/template/.cursor/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  65. package/template/.cursor/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  66. package/template/.cursor/skills/yss-router/references/boundaries.md +1 -1
  67. package/template/.cursor/skills/yss-router/references/router-contract.yaml +30 -3
  68. package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +14 -0
  69. package/template/.cursor/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  70. package/template/.cursor/skills/yss-ui/references/antdv-compatibility.md +1 -1
  71. package/template/.hermes/skills/maintaining-skills/SKILL.md +1 -1
  72. package/template/.hermes/skills/yss-antd-design/references/evidence.md +4 -0
  73. package/template/.hermes/skills/yss-design-system/SKILL.md +3 -1
  74. package/template/.hermes/skills/yss-page-module-development/SKILL.md +1 -1
  75. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +3 -1
  76. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  77. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  78. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  79. package/template/.hermes/skills/yss-prototype-stage/SKILL.md +11 -6
  80. package/template/.hermes/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  81. package/template/.hermes/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  82. package/template/.hermes/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  83. package/template/.hermes/skills/yss-router/references/boundaries.md +1 -1
  84. package/template/.hermes/skills/yss-router/references/router-contract.yaml +30 -3
  85. package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +14 -0
  86. package/template/.hermes/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  87. package/template/.hermes/skills/yss-ui/references/antdv-compatibility.md +1 -1
  88. package/template/.pi/skills/maintaining-skills/SKILL.md +1 -1
  89. package/template/.pi/skills/yss-antd-design/references/evidence.md +4 -0
  90. package/template/.pi/skills/yss-design-system/SKILL.md +3 -1
  91. package/template/.pi/skills/yss-page-module-development/SKILL.md +1 -1
  92. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +3 -1
  93. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  94. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  95. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  96. package/template/.pi/skills/yss-prototype-stage/SKILL.md +11 -6
  97. package/template/.pi/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  98. package/template/.pi/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  99. package/template/.pi/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  100. package/template/.pi/skills/yss-router/references/boundaries.md +1 -1
  101. package/template/.pi/skills/yss-router/references/router-contract.yaml +30 -3
  102. package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +14 -0
  103. package/template/.pi/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  104. package/template/.pi/skills/yss-ui/references/antdv-compatibility.md +1 -1
  105. package/template/.qoder/skills/maintaining-skills/SKILL.md +1 -1
  106. package/template/.qoder/skills/yss-antd-design/references/evidence.md +4 -0
  107. package/template/.qoder/skills/yss-design-system/SKILL.md +3 -1
  108. package/template/.qoder/skills/yss-page-module-development/SKILL.md +1 -1
  109. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +3 -1
  110. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  111. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  112. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  113. package/template/.qoder/skills/yss-prototype-stage/SKILL.md +11 -6
  114. package/template/.qoder/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  115. package/template/.qoder/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  116. package/template/.qoder/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  117. package/template/.qoder/skills/yss-router/references/boundaries.md +1 -1
  118. package/template/.qoder/skills/yss-router/references/router-contract.yaml +30 -3
  119. package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +14 -0
  120. package/template/.qoder/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  121. package/template/.qoder/skills/yss-ui/references/antdv-compatibility.md +1 -1
  122. package/template/.trae/skills/maintaining-skills/SKILL.md +1 -1
  123. package/template/.trae/skills/yss-antd-design/references/evidence.md +4 -0
  124. package/template/.trae/skills/yss-design-system/SKILL.md +3 -1
  125. package/template/.trae/skills/yss-page-module-development/SKILL.md +1 -1
  126. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +3 -1
  127. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  128. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +46 -1
  129. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  130. package/template/.trae/skills/yss-prototype-stage/SKILL.md +11 -6
  131. package/template/.trae/skills/yss-prototype-stage/references/product-design-adapter.md +54 -0
  132. package/template/.trae/skills/yss-prototype-stage/scripts/prototype-contract.mjs +207 -0
  133. package/template/.trae/skills/yss-prototype-stage/tests/run-scenarios.mjs +154 -0
  134. package/template/.trae/skills/yss-router/references/boundaries.md +1 -1
  135. package/template/.trae/skills/yss-router/references/router-contract.yaml +30 -3
  136. package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +14 -0
  137. package/template/.trae/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  138. package/template/.trae/skills/yss-ui/references/antdv-compatibility.md +1 -1
  139. package/template/AGENTS.md +5 -4
  140. package/template/CONTEXT.md +2 -2
  141. package/template/DESIGN.md +203 -0
  142. package/template/README.md +10 -11
  143. package/template/__yss_dotfile__.gitignore +1 -0
  144. package/template/docs/agents/digital-human-roles.md +1 -1
  145. package/template/docs/agents/digital-human-roles.yaml +17 -21
  146. package/template/docs/agents/skills-maintenance.md +2 -2
  147. package/template/docs/agents/yss-plugin-dependency-contract.md +45 -0
  148. package/template/docs/agents/yss-skill-registry.yaml +30 -1
  149. package/template/docs/api/templates/openapi-draft-review-checklist.md +2 -2
  150. package/template/docs/architecture/templates/engineering-baseline-review-template.md +19 -0
  151. package/template/docs/design/README.md +14 -3
  152. package/template/docs/design/design-system-sync.yaml +12 -0
  153. package/template/docs/design/design.md +69 -10
  154. package/template/docs/design/preview-dark.html +15 -0
  155. package/template/docs/design/preview.html +20 -0
  156. package/template/docs/design/templates/interaction-spec-template.md +2 -2
  157. package/template/docs/design/templates/prototype-confirmation-template.md +1 -1
  158. package/template/docs/design/templates/prototype-evidence-template.yaml +52 -10
  159. package/template/docs/design/tokens/.design-md-projection.json +13 -0
  160. package/template/docs/discovery/reports/agent-governance-options.md +71 -0
  161. package/template/docs/process/harness-process-tailoring.md +12 -5
  162. package/template/docs/process/lifecycle-registry-baseline.json +1 -1
  163. package/template/docs/process/lifecycle-registry.yaml +1 -1
  164. package/template/docs/process/template-engineering-overview.md +2 -2
  165. package/template/docs/process/template-verification-profiles.yaml +15 -1
  166. package/template/docs/process/templates/maintenance-checkpoint-template.yaml +3 -12
  167. package/template/docs/templates/build-architecture-checklist-template.md +2 -0
  168. package/template/docs/templates/implementation-routing-template.md +23 -0
  169. package/template/docs/templates/requirement-freeze-template.md +1 -1
  170. package/template/docs/user-guide//346/210/230/346/234/257/350/256/276/350/256/241/345/255/220/351/241/271/347/233/256/347/224/250/346/210/267/346/211/213/345/206/214.md +218 -0
  171. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +1014 -0
  172. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214/347/264/242/345/274/225.md +15 -25
  173. package/template/scripts/lib/digital-human-roles.mjs +0 -1
  174. package/template/scripts/lib/maintenance-intensity.mjs +24 -10
  175. package/template/scripts/lib/skill-governance.mjs +19 -0
  176. package/template/scripts/lib/skill-registry.mjs +70 -0
  177. package/template/scripts/node-verify-lifecycle-registry.mjs +1 -1
  178. package/template/scripts/verify-digital-human-roles-scenarios +1 -1
  179. package/template/scripts/verify-template-verification-scenarios +5 -0
  180. package/template/scripts/verify-yss-prototype-contract-scenarios +2 -0
  181. package/template/skills-lock.json +8 -8
  182. package/template.manifest.json +1 -0
  183. package/template.snapshot.json +5 -5
  184. package/template/docs/user-guide/templates//347/224/250/346/210/267/346/211/213/345/206/214/346/250/241/346/235/277.md +0 -53
  185. package/template/docs/user-guide//344/272/247/345/223/201/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201.md +0 -223
  186. package/template/docs/user-guide//344/272/247/345/223/201/347/240/224/345/217/221/345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +0 -1115
  187. package/template/docs/user-guide//345/244/226/351/203/250/345/221/275/344/273/244/350/241/214/345/267/245/345/205/267/345/256/236/350/267/265/346/214/207/345/215/227.md +0 -117
  188. package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +0 -584
  189. package/template/docs/user-guide//350/247/204/346/240/274/344/270/216/344/273/273/345/212/241/350/277/201/347/247/273/346/214/207/345/215/227.md +0 -44
  190. package/template/docs/user-guide//351/234/200/346/261/202/346/276/204/346/270/205/346/214/207/345/215/227.md +0 -230
  191. package/template/docs/user-guide//351/234/200/346/261/202/346/276/204/346/270/205/346/234/200/344/275/263/345/256/236/350/267/265.md +0 -275
@@ -0,0 +1,1014 @@
1
+ # YSS 用户手册
2
+
3
+ 第一次使用 YSS,不需要先读完所有规则。
4
+
5
+ 先用 CLI 准备项目,再完成一次只读检查。等你知道当前在哪一步、还缺什么,再按本手册继续。
6
+
7
+ ## 这本手册适合谁
8
+
9
+ - 第一次打开 YSS 项目,不知道从哪里开始。
10
+ - 听说过 Spec、Ticket,但不清楚它们有什么用。
11
+ - 需求只有一两句话,不知道应该先问什么。
12
+ - 团队准备开发,需要确认前端、后端和测试怎样配合。
13
+ - 想新建、接管或更新 YSS 项目。
14
+
15
+ ## 看完能做什么
16
+
17
+ - 用 CLI 创建、接管或更新项目。
18
+ - 在项目准备好后,完成一次不会修改文件的检查。
19
+ - 看懂 Agent 给出的当前阶段、阻塞原因和下一步。
20
+ - 把模糊需求整理成能写 Spec 的内容。
21
+ - 知道什么时候可以开发,什么时候必须先停下。
22
+ - 用同一套方法处理新功能、小改动和 Bug。
23
+ - 正确使用 `create-yss-spec` 创建、接管或更新项目。
24
+
25
+ ## 先找到你要做的事
26
+
27
+ | 你的情况 | 直接看这里 | 你会得到什么 |
28
+ |---|---|---|
29
+ | 还没有 YSS 项目 | [先用 CLI 准备项目](#先用-cli-准备项目) | 创建项目的最短命令和成功结果 |
30
+ | 第一次使用 | [三分钟开始](#三分钟开始) | 一段可以直接复制的只读检查提示词 |
31
+ | 需求还很模糊 | [需求没说清楚时怎么问](#需求没说清楚时怎么问) | 固定的追问顺序和记录格式 |
32
+ | 想看完整过程 | [用“模型发布”走一遍完整流程](#用模型发布走一遍完整流程) | 从需求到发布的虚构示例 |
33
+ | 团队准备开发 | [团队怎么配合](#团队怎么配合) | 新功能、小改动、Bug 的处理方法 |
34
+ | 新建或接管项目 | [创建、接管和更新项目](#创建接管和更新项目) | `create-yss-spec` 的实际命令 |
35
+ | 遇到专业词 | [新手术语卡](#新手术语卡) | 常用状态和正式名称的普通话解释 |
36
+
37
+ ## 先用 CLI 准备项目
38
+
39
+ 还没有项目时,先运行 CLI。后面的生命周期检查都在生成好的项目目录中执行。
40
+
41
+ ### 第一步:确认本机可以运行 Node.js 和 npm
42
+
43
+ ```bash
44
+ node --version
45
+ npm --version
46
+ ```
47
+
48
+ 两个命令都能输出版本号,才能继续。
49
+
50
+ 如果提示找不到命令,请先安装符合项目要求的 Node.js。
51
+
52
+ ### 第二步:创建项目
53
+
54
+ 在准备存放项目的父目录中运行:
55
+
56
+ ```bash
57
+ npm create yss-spec@latest
58
+ ```
59
+
60
+ 按提示填写项目名称、业务领域和目标目录。
61
+
62
+ 需要一次写明参数时,可以运行:
63
+
64
+ ```bash
65
+ npx create-yss-spec@latest \
66
+ --project-name "项目名称" \
67
+ --business-domain "业务领域" \
68
+ --target-dir "./project" \
69
+ --git-init
70
+ ```
71
+
72
+ ### 第三步:确认初始化成功
73
+
74
+ 进入新项目目录,检查下面几项:
75
+
76
+ - 根目录存在 `yss-project.yaml`。
77
+ - `repository_mode` 为 `project-instance`。
78
+ - 根目录存在 `CONTEXT.md`、`AGENTS.md` 和 `docs/`。
79
+ - `.yss-template.json` 已记录模板版本信息。
80
+
81
+ 如果这些文件缺失,请先处理 CLI 报错,不要继续做生命周期分诊。
82
+
83
+ ### 已经有项目怎么办
84
+
85
+ | 当前情况 | 先做什么 | 详细说明 |
86
+ |---|---|---|
87
+ | 现有项目还没有 YSS 模板 | 使用 `attach --dry-run` 预览,再确认写入 | [接管已有项目](#接管已有项目) |
88
+ | 已经存在 `.yss-template.json` | 使用 `sync --dry-run` 预览,再同步 | [更新模板](#更新模板) |
89
+
90
+ 不要在已有 `.yss-template.json` 的项目中重复运行 `attach`。
91
+
92
+ ## 开始前准备
93
+
94
+ CLI 初始化、接管或同步成功后,再准备:
95
+
96
+ 1. 进入项目根目录。
97
+ 2. 确认 `yss-project.yaml` 和 `CONTEXT.md` 可以打开。
98
+ 3. 确认 `yss-project.yaml` 中的 `repository_mode` 为 `project-instance`。
99
+ 4. 准备当前功能已有的文档、Ticket 或代码位置。
100
+
101
+ 第四项暂时没有也可以开始。先让 Agent 告诉你缺什么。
102
+
103
+ > 本手册使用“模型发布”作为虚构示例。不要因为教程把它写入任何项目的 `CONTEXT.md`。只有真实项目确实存在这个业务概念,并由业务方确认中文名称、含义和 PascalCase 英文标识后,才能登记。
104
+
105
+ ## 三分钟开始
106
+
107
+ ### 第一步:确认仓库身份
108
+
109
+ 打开根目录的 `yss-project.yaml`。
110
+
111
+ | 看到的内容 | 表示什么 | 你要做什么 |
112
+ |---|---|---|
113
+ | `repository_mode: project-instance` | 这是实际产品项目 | 可以继续检查功能 |
114
+ | `repository_mode: template-source` | 这是模板源 | 只维护模板,不创建真实产品的 Spec、原型或 Ticket |
115
+ | 文件缺失或值不合法 | 仓库身份不清楚 | 先停止,让 Agent 做迁移检查 |
116
+
117
+ ### 第二步:让 Agent 只做检查
118
+
119
+ 在 `project-instance` 中,把下面这段话发给 Agent:
120
+
121
+ ```text
122
+ 使用 yss-product-lifecycle,以 route 模式检查“模型发布”功能。
123
+ 请先读取 yss-project.yaml、CONTEXT.md 和当前已有资料。
124
+ 本轮只读,不要修改文件。
125
+ 请用普通话告诉我:
126
+ 1. 现在走到哪一步;
127
+ 2. 哪些资料还能继续使用;
128
+ 3. 还缺什么;
129
+ 4. 下一步只做哪一件事。
130
+ 正式 ID 放在普通话解释后面。
131
+ ```
132
+
133
+ `route` 的意思是“只检查,不写文件”。第一次使用时优先选它。
134
+
135
+ ### 第三步:检查回答
136
+
137
+ 一份能用的回答至少要说明:
138
+
139
+ - 当前处于哪一步。
140
+ - 功能会影响页面、接口、后端、数据还是多个仓库。
141
+ - 哪些资料存在、缺失或已经过期。
142
+ - 有没有功能父 Ticket 和垂直切片 Ticket。
143
+ - 当前小任务是否已经具备开发条件(`ready-for-agent`)。
144
+ - 下一步具体做什么。
145
+ - 为什么现在要暂停或可以继续。
146
+
147
+ 如果回答只说“可以开始开发”,却没有依据,请让 Agent 重新检查。
148
+
149
+ ### 三分钟检查成功后,你应该知道
150
+
151
+ - 当前仓库是不是 `project-instance`。
152
+ - 当前功能走到了哪一步。
153
+ - 哪些问题还没有答案。
154
+ - 下一步只需要完成什么。
155
+
156
+ 只要这四项说不清,就不要直接让 Agent 写代码。
157
+
158
+ ## 四种使用模式
159
+
160
+ | 模式 | 普通话解释 | 什么时候用 | 会不会写文件 |
161
+ |---|---|---|---|
162
+ | `route` | 看现状和下一步 | 第一次检查、范围变化后 | 不会 |
163
+ | `orchestrate` | 按当前范围继续推进 | 已经确认可以补文档或执行工作 | 会,但只能在约定范围内 |
164
+ | `resume` | 中断后重新核对再继续 | 会签完成、补充资料或更换 Agent 后 | 会,但先检查状态 |
165
+ | `audit` | 独立检查有没有漏项 | 审查阶段或怀疑状态不对时 | 不会 |
166
+
167
+ 需要继续推进时,可以发送:
168
+
169
+ ```text
170
+ 继续使用 yss-product-lifecycle,以 orchestrate 模式推进“模型发布”。
171
+ 只处理当前功能范围。
172
+ 遇到需要确认、发现新影响、资料过期或需要额外授权时停下。
173
+ 每完成一步,请告诉我改了什么、证据在哪里、下一步是什么。
174
+ ```
175
+
176
+ ## 可选:使用个人 Codex Plugin
177
+
178
+ 本节介绍的是个人、本机的可选工具,不属于 YSS 模板交付物。它不会自动安装到其他成员的环境,也不会改变项目的事实源、生命周期阶段或门禁。
179
+
180
+ ### 适合谁
181
+
182
+ 当前示例插件 `yss-backend-harness` 只服务后端工程角色。产品、项目、前端和测试角色应使用各自职责对应的工具或 Plugin,不要把后端插件当成全团队通用插件。
183
+
184
+ ### 安装和触发
185
+
186
+ 在已经安装 Codex、并且本机存在 `personal` marketplace 的环境中执行:
187
+
188
+ ```bash
189
+ codex plugin add yss-backend-harness@personal
190
+ ```
191
+
192
+ 安装后刷新或重启 Codex,再在已登记的实现仓库中调用。例如:
193
+
194
+ ```text
195
+ 请读取当前 YSS 任务包和 Slice Contract,按 role.backend-engineer 生成或执行后端任务。
196
+ ```
197
+
198
+ 插件只能在以下条件满足后执行具体实现:
199
+
200
+ - 仓库是 `project-instance`,不是 `template-source`;
201
+ - 实现仓库、项目根目录、分支和验证命令已经登记;
202
+ - OpenAPI 已 Freeze,或已记录无 API 影响;
203
+ - Slice Contract 已批准并处于 `ready-for-agent`;
204
+ - 任务包明确了允许写入的路径、行为和测试 seam。
205
+
206
+ ### 插件不会替代什么
207
+
208
+ Plugin 是运行时适配器,不是新的事实源。它不会替代 `yss-product-lifecycle`、`yss-router` 或 `tdd`,不会设置 `ready-for-agent`,不会 Freeze OpenAPI,也不能承担独立审查。
209
+
210
+ 执行结果应包含 `Workflow Execution Result`(例如 `completed`、`blocked`、`needs-human` 或 `failed`)及对应证据。发现路径越界、合同过期、影响面变化或证据缺失时,应停止并回到路由流程。
211
+
212
+ ### 不可用时怎么办
213
+
214
+ 如果插件未安装、版本不兼容或执行失败,回退到通用的 `yss-router + tdd` 流程,并记录阻塞原因和实际验证命令。不要为了绕过插件故障而跳过生命周期门禁。
215
+
216
+ ### 其他应用的接入建议
217
+
218
+ 应用接入按项目需要逐步增加,不作为模板默认依赖:
219
+
220
+ 1. GitHub 或 GitLab:代码、分支、MR/PR 和 CI。
221
+ 2. Jira 或 Linear:父 Ticket、Slice Ticket、状态和责任人。
222
+ 3. GitHub Actions、GitLab CI 或 Jenkins:自动执行模板、前端和后端验证。
223
+ 4. Confluence、Notion 或飞书文档:团队说明和知识库,但不得替代仓库事实源。
224
+ 5. Figma:仅在产品设计和 UI 实现阶段接入。
225
+ 6. Slack、Teams 或企业微信:仅发送阻塞、审查和发布通知,不承载正式决策。
226
+ 7. Sentry、Grafana 或 Datadog:仅在具体产品实例上线后接入运行监控。
227
+
228
+ 推荐顺序是:本地 Git + Codex/Plugin → Git 平台 → Issue tracker → CI/CD → 知识库 → 设计、通知和监控。
229
+
230
+ ## 一张表看懂完整路线
231
+
232
+ | 你要解决的问题 | 正式阶段 | 完成后应该看到什么 |
233
+ |---|---|---|
234
+ | 先弄清仓库和现状 | 入口分诊 `stage.entry-triage` | 仓库身份、影响范围、最近可信阶段 |
235
+ | 把想法问清楚 | Discovery `stage.discovery` | 用户、目标、范围、非目标、成功标准 |
236
+ | 写成可以确认的说明 | Spec / 功能架构 `stage.spec-architecture` | Spec、总体设计、功能架构 |
237
+ | 把页面和状态想清楚 | 产品设计 `stage.product-design` | 页面流、状态矩阵、原型和确认记录 |
238
+ | 定好接口、数据和工程约定 | 系统 / 数据架构与工程契约 `stage.system-data-engineering` | OpenAPI、数据设计、工程准备信息和审查记录 |
239
+ | 拆成可以单独完成的小任务 | Ticket 正式化 `stage.ticket-formalization` | 功能父 Ticket、垂直切片和实现合同 |
240
+ | 按合同实现和测试 | 垂直切片实现 `stage.vertical-slice-implementation` | 代码、测试和实际命令结果 |
241
+ | 独立检查并发布 | 验证 / 发布 / 复盘 `stage.verification-release-retrospective` | 审查、当次验证、发布和回滚记录 |
242
+
243
+ 主阶段不能删除。
244
+
245
+ 某项检查确实与当前功能无关时,记录“不适用”(`not-applicable`)和原因。不要为了凑齐目录创建空文档。
246
+
247
+ ## 用“模型发布”走一遍完整流程
248
+
249
+ 下面只是教学示例。
250
+
251
+ 假设建模人员现在只能保存草稿。团队希望增加发布功能,让下游系统读取稳定版本。
252
+
253
+ 一开始,发布后能不能修改、要不要审批、失败后能不能重试,都没有答案。因此不能直接写代码。
254
+
255
+ ### 第一步:只读分诊
256
+
257
+ 先用前面的 `route` 提示词检查仓库和已有资料。
258
+
259
+ 这个示例可能影响 UI、API、Backend 和 Data。如果前后端位于不同仓库,还会有 Cross-repo 影响。
260
+
261
+ 成功时你会看到:
262
+
263
+ - 仓库身份合法。
264
+ - 当前阶段和最近可信阶段已经说明。
265
+ - Agent 没有修改文件。
266
+ - 下一步指向需求澄清,而不是直接实现。
267
+
268
+ 正式信息:
269
+
270
+ - 阶段:`stage.entry-triage`
271
+ - 工作单元:`work-unit.entry-triage`
272
+ - 检查点:`gate.repository-identity-valid`
273
+
274
+ ### 第二步:把需求问清楚
275
+
276
+ 先确认用户和目标:
277
+
278
+ - 用户:建模人员。
279
+ - 目标:把检查通过的草稿变成下游可以读取的稳定版本。
280
+ - 成功:页面显示发布成功,下游读取到新版本。
281
+
282
+ 再确认边界:
283
+
284
+ | 问题 | 示例答案 |
285
+ |---|---|
286
+ | 发布后能否直接修改 | 不能,修改要产生新草稿 |
287
+ | 是否需要审批 | 本次 MVP 不做审批 |
288
+ | 发布失败怎么办 | 保留草稿,允许重试 |
289
+ | 下游读取哪个版本 | 只读取最后一个发布成功的版本 |
290
+ | 本次不做什么 | 不做定时发布,不做批量发布 |
291
+
292
+ 示例答案不能替代真实业务决定。
293
+
294
+ 成功时,已确认、待确认、非目标和外部事实已经分开记录。不确定的问题没有被 Agent 擅自决定。
295
+
296
+ 正式信息:
297
+
298
+ - 阶段:`stage.discovery`
299
+ - 工作单元:`work-unit.discovery-opportunity`、`work-unit.discovery-requirements`、`work-unit.domain-strategy-design`、`work-unit.stage-decision`
300
+
301
+ ### 第三步:写 Spec
302
+
303
+ Spec 可以先理解为“功能说明书”。它至少写清:
304
+
305
+ 1. 为什么要做。
306
+ 2. 谁可以操作。
307
+ 3. 操作前必须满足什么条件。
308
+ 4. 成功、失败和重试时发生什么。
309
+ 5. 本次明确不做什么。
310
+ 6. 用户和测试从哪里看到结果。
311
+
312
+ Spec 初稿通常使用 `ready-for-human`。这表示还要确认,不表示可以开发。
313
+
314
+ 成功时,用户问题、范围、主流程、异常流程和验收标准都可以被复述,Spec 基线已经完成需要的会签。
315
+
316
+ 正式信息:
317
+
318
+ - 阶段:`stage.spec-architecture`
319
+ - 工作单元:`work-unit.spec-synthesis`
320
+ - 检查点:`gate.spec-baseline-approved`
321
+
322
+ ### 第四步:把页面和状态画清楚
323
+
324
+ 如果功能会改变页面、导航、操作流程、权限体验或状态展示,需要补产品设计。
325
+
326
+ “模型发布”至少要考虑:
327
+
328
+ - 发布按钮什么时候可用。
329
+ - 发布中、成功和失败怎么显示。
330
+ - 没有权限时怎么提示。
331
+ - 失败后能不能重试。
332
+ - 窄屏下是否还能完成操作。
333
+
334
+ 成功时,交互说明、状态矩阵、低保真和高保真原型相互一致,并有评审、浏览器验证和用户确认记录。
335
+
336
+ 正式信息:
337
+
338
+ - 阶段:`stage.product-design`
339
+ - 工作单元:`work-unit.prototype-design`
340
+ - 检查点:`gate.prototype-reviewed`、`gate.prototype-verified`、`gate.user-confirmation`
341
+
342
+ ### 第五步:定接口、数据和工程约定
343
+
344
+ 有 API 影响时,先写 OpenAPI 3.1 Draft。
345
+
346
+ Draft 只是草案。评审通过后才能 Freeze。Freeze 可以理解为“接口版本已经确认,前后端按同一份约定实现”。
347
+
348
+ 还要回答:
349
+
350
+ - 草稿版本和发布版本怎样区分。
351
+ - 什么状态允许发布。
352
+ - 重复请求怎样处理。
353
+ - 失败是否留下中间状态。
354
+ - 下游怎样保证只拿到成功版本。
355
+
356
+ 同时登记实现仓库、项目根、分支、CI、前端 `pnpm` 命令、后端 `./mvnw` 命令、发布顺序和回滚点。
357
+
358
+ 没有 API 影响时,留下明确记录,不要创建空 OpenAPI 文件。
359
+
360
+ 正式信息:
361
+
362
+ - 阶段:`stage.system-data-engineering`
363
+ - 工作单元:`work-unit.technical-analysis`
364
+ - 常见检查点:`gate.openapi-draft-reviewed`、`gate.design-reviewed`、`gate.openapi-frozen`、`gate.engineering-baseline-accepted`、`gate.architecture-reviewed`
365
+
366
+ ### 第六步:拆成可以实现的 Ticket
367
+
368
+ 先创建功能父 Ticket,用来汇总整个功能。
369
+
370
+ 再按用户能看到的结果拆垂直切片:
371
+
372
+ | 切片 | 用户能看到的结果 | 主要验证 |
373
+ |---|---|---|
374
+ | 提交发布 | 建模人员提交请求并看到明确状态 | API 契约测试、页面状态测试 |
375
+ | 读取发布版本 | 下游只读取最后一个成功版本 | 后端行为测试、数据验证 |
376
+ | 失败后重试 | 失败不破坏草稿,用户可以重试 | 失败路径和幂等测试 |
377
+
378
+ 不要只拆成“写 Controller”“写页面”“建表”。这种任务不能单独证明用户结果。
379
+
380
+ 切片进入 `ready-for-agent` 前必须确认:
381
+
382
+ - 需要的检查点已经批准或明确不适用。
383
+ - 当前 Slice Implementation Contract 已批准并保存。
384
+ - 阻塞关系已经关闭。
385
+ - 实现仓库和验证命令已经登记。
386
+ - 有 UI 影响时,前端实现还原计划已经通过检查。
387
+
388
+ 正式信息:
389
+
390
+ - 阶段:`stage.ticket-formalization`
391
+ - 工作单元:`work-unit.ticket-decomposition`
392
+ - 检查点:`gate.slice-contract-approved`、`gate.slice-ready-for-agent`
393
+
394
+ ### 第七步:按合同实现
395
+
396
+ 每次只实现一个 `ready-for-agent` 切片。
397
+
398
+ 前端:
399
+
400
+ - 让 `yss-router` 选择当前页面需要的专项 skill。
401
+ - 以 `yss-ui`、`yss-page-module-development` 和 `tdd` 为主。
402
+ - 只修改合同允许的路径。
403
+ - 实际运行已登记的 `pnpm` 命令。
404
+
405
+ 后端:
406
+
407
+ - 按影响选择 `yss-domain`、`yss-application`、`yss-repository`、`yss-mybatis`、`yss-web-controller` 和 `yss-dto`。
408
+ - 先写失败测试,再实现最小代码。
409
+ - 只修改合同允许的路径。
410
+ - 实际运行项目根目录的 `./mvnw`。
411
+
412
+ Agent 应返回合同版本、修改文件、实际命令、退出码和证据位置。
413
+
414
+ 发现资料过期、新影响或违反合同时,Agent 必须停下并重新分诊。
415
+
416
+ ### 第八步:独立审查、发布和复盘
417
+
418
+ 1. 审查前固定一个不再变化的候选快照。
419
+ 2. 由非实现者使用 `code-review` 审查。
420
+ 3. 对同一候选重新运行测试、构建和关键流程检查。
421
+ 4. 准备发布步骤、监控、回滚方法和负责人。
422
+ 5. 由生物人决定 `gate.release-ready`。
423
+ 6. 出现返工或重要问题时记录复盘。
424
+
425
+ 审查可能给出:
426
+
427
+ - `violation`:实现违反当前合同,修复后重新检查。
428
+ - `drift`:资料和实现不一致,回到路由重新判断。
429
+ - `new_impacts`:出现新的 UI、API、数据或风险影响,回到路由补分析。
430
+
431
+ 成功时,同一候选已经通过独立审查和当次验证,发布和回滚证据可以读取。
432
+
433
+ ## 需求没说清楚时怎么问
434
+
435
+ 当一句需求可以有多种理解时,先问清楚,再写 Spec、接口或代码。
436
+
437
+ ### 先用普通话说明问题
438
+
439
+ 不推荐:
440
+
441
+ ```text
442
+ 做一个模型发布功能。
443
+ ```
444
+
445
+ 推荐:
446
+
447
+ ```text
448
+ 建模人员现在只能保存草稿。
449
+ 我们希望增加发布功能,让下游系统读取稳定版本。
450
+ 我还不确定发布后能不能修改、是否需要审批、失败后怎么处理。
451
+ ```
452
+
453
+ 第二种写法说明了用户、现状、目标和不确定点,Agent 才知道应该问什么。
454
+
455
+ ### 按这个顺序追问
456
+
457
+ #### 1. 谁在使用
458
+
459
+ - 谁发起操作?
460
+ - 谁查看结果?
461
+ - 谁不能操作?
462
+ - 不同角色看到的内容是否一样?
463
+
464
+ #### 2. 用户要完成什么
465
+
466
+ - 用户开始操作前处于什么状态?
467
+ - 用户做了什么?
468
+ - 什么结果表示成功?
469
+ - 成功后下一步是什么?
470
+
471
+ #### 3. 哪些内容不做
472
+
473
+ - 本次 MVP 不包括什么?
474
+ - 哪些角色、页面或流程以后再做?
475
+ - 哪些旧行为保持不变?
476
+
477
+ #### 4. 失败时怎么办
478
+
479
+ - 输入不合法时怎么提示?
480
+ - 没有权限时怎么提示?
481
+ - 外部服务失败时能不能重试?
482
+ - 重试会不会产生重复数据?
483
+ - 失败后怎样恢复?
484
+
485
+ #### 5. 怎么验收
486
+
487
+ 不要只写“发布成功”。要写用户能看到或测试能读取的结果。
488
+
489
+ 例如:
490
+
491
+ - 页面显示已发布版本号。
492
+ - 刷新后状态仍为已发布。
493
+ - 下游查询接口返回新版本。
494
+ - 发布失败时保留草稿,并显示可重试提示。
495
+
496
+ ### 一轮只问一个主题
497
+
498
+ 不要一次扔出十几个问题。
499
+
500
+ 先问用户和目标。得到可用答案后,再问流程、边界、失败和验收。
501
+
502
+ 不推荐:
503
+
504
+ > 请补充角色、权限、状态、流程、异常、接口、表结构和测试方案。
505
+
506
+ 推荐:
507
+
508
+ > 先确认用户。谁可以发布模型?谁只能查看结果?
509
+
510
+ ### 把形容词改成可以检查的结果
511
+
512
+ | 模糊说法 | 继续追问 | 可用答案示例 |
513
+ |---|---|---|
514
+ | 发布要快 | 多久算快,在哪个环境测 | 95% 请求在 3 秒内返回受理结果 |
515
+ | 操作要安全 | 要防止什么问题 | 重复点击不会创建两个发布版本 |
516
+ | 权限要控制 | 谁能做,谁不能做 | 建模人员可发布,访客只能查看 |
517
+ | 失败要友好 | 用户看到什么,能做什么 | 保留草稿,显示原因和重试入口 |
518
+ | 支持回滚 | 回到哪里,影响谁 | 恢复到上一个成功版本,下游下一次查询生效 |
519
+
520
+ 只有真实业务方确认后,示例答案才能成为需求。
521
+
522
+ ### 用“开始、动作、结果”检查流程
523
+
524
+ | 开始 | 动作 | 结果 |
525
+ |---|---|---|
526
+ | 模型为可发布草稿 | 点击发布并确认 | 页面进入发布中 |
527
+ | 发布中 | 系统处理完成 | 显示发布成功和版本号 |
528
+ | 发布中 | 系统处理失败 | 返回草稿,显示原因和重试入口 |
529
+
530
+ 有一格写不出来,说明需求还没有问清楚。
531
+
532
+ ### 分开记录不同类型的信息
533
+
534
+ | 类型 | 表示什么 | 怎么处理 |
535
+ |---|---|---|
536
+ | 已确认 | 已由业务方、产品或权威资料确认 | 可以进入后续文档 |
537
+ | 待确认 | 暂时没有答案 | 写负责人和确认时间,不让 Agent 猜 |
538
+ | 非目标 | 本次明确不做 | 用来控制范围 |
539
+ | 外部事实 | 来自法规、第三方 API、竞品或技术资料 | 用 `research` 或 `competitive-intelligence` 核对 |
540
+ | 猜测 | 还没有人确认的推测 | 保持为待确认 |
541
+
542
+ ### 处理稳定术语
543
+
544
+ 只有术语含义和使用范围都确认后,才提议写入项目实例的 `CONTEXT.md`。
545
+
546
+ 记录时包含:
547
+
548
+ - 中文术语。
549
+ - 简短含义。
550
+ - PascalCase 英文标识。
551
+ - 禁用的中文和英文别名。
552
+
553
+ 不要把 Vue 组件、Java 类、表名、接口路径、临时计划或猜测写进词汇表。
554
+
555
+ ### 什么时候需要 ADR
556
+
557
+ ADR 是架构决策记录。
558
+
559
+ 只有同时满足下面三项时才写:
560
+
561
+ 1. 决定很难回滚。
562
+ 2. 没有上下文时,未来读者会困惑。
563
+ 3. 团队确实比较过不同方案。
564
+
565
+ 发布版本是否永久不可变,可能需要 ADR。按钮放左边还是右边,通常不需要。
566
+
567
+ ### 推荐的需求记录格式
568
+
569
+ ```markdown
570
+ ## 本轮结论
571
+
572
+ ### 已确认
573
+ - ...
574
+
575
+ ### 待确认
576
+ - 问题:
577
+ 负责人:
578
+ 计划确认时间:
579
+
580
+ ### 非目标
581
+ - ...
582
+
583
+ ### 外部事实
584
+ - 事实:
585
+ 来源:
586
+
587
+ ### 稳定术语建议
588
+ - 中文术语:
589
+ 英文标识:
590
+ 含义:
591
+ 禁用别名:
592
+
593
+ ### ADR 建议
594
+ - 无 / 建议记录:
595
+
596
+ ### 下一步
597
+ - ...
598
+ ```
599
+
600
+ ### 什么时候可以停止追问
601
+
602
+ 满足下面条件时,可以把结果交给 `yss-product-lifecycle` 检查:
603
+
604
+ - 用户和目标明确。
605
+ - 主流程能写成“开始、动作、结果”。
606
+ - 失败、权限和恢复路径有答案。
607
+ - 非目标已经记录。
608
+ - 验收结果可以观察。
609
+ - 待确认问题不会影响下一阶段,或已经明确阻塞。
610
+
611
+ 默认由 `yss-product-lifecycle` 运行 `work-unit.discovery-requirements`。
612
+
613
+ `grill-with-docs`、`to-spec`、`to-tickets` 和 `implement` 只是用户明确点名时使用的兼容入口。它们不能跳过前置检查。
614
+
615
+ ## 团队怎么配合
616
+
617
+ ### 先判断任务类型
618
+
619
+ | 你的情况 | 从哪里开始 | 重点检查 |
620
+ |---|---|---|
621
+ | 全新产品或新模块 | Discovery | 用户、MVP、非目标、成功标准 |
622
+ | 已有功能的小迭代 | 最近仍然可信的阶段 | 哪些上游内容受到影响 |
623
+ | 可复现 Bug | Bug 诊断 | 复现步骤、失败测试、回归范围 |
624
+ | 技术探索或 spike | 只读调查 | 是否值得做、风险和建议 |
625
+ | 高风险行为变化 | 既有冻结基线 | Spec Delta、架构、契约和回滚 |
626
+
627
+ ### 全新功能
628
+
629
+ 按完整主链推进。不要先写页面或接口。
630
+
631
+ 成功时,每一步都有可读取的结果和审查结论,Ticket 能单独实现和验证。
632
+
633
+ ### 已有功能的小改动
634
+
635
+ 小改动不用机械重跑全部流程,但必须重新判断影响。
636
+
637
+ 1. 用 `route` 找到最近仍然可信的阶段。
638
+ 2. 写清这次改什么、不改什么。
639
+ 3. 只补受影响的 Spec、设计、API、Ticket 和验证。
640
+ 4. 上游内容变化后,重新检查下游资料是否过期。
641
+ 5. 再判断切片能否进入 `ready-for-agent`。
642
+
643
+ “发布成功后增加复制版本号按钮”可能只影响 UI。
644
+
645
+ “发布后允许回滚”会改变业务行为、状态、API、数据和测试,不能当成小文案修改。
646
+
647
+ ### Bug
648
+
649
+ 1. 用 `diagnosing-bugs` 写出稳定复现步骤。
650
+ 2. 找到用户能看到的失败结果。
651
+ 3. 用 `tdd` 先写失败测试。
652
+ 4. 实现最小修复。
653
+ 5. 运行受影响范围的回归测试。
654
+ 6. 发现需求或契约错误时,停止修复并重新分诊。
655
+
656
+ 成功时,同一个测试在修复前失败、修复后通过,相邻行为没有回退。
657
+
658
+ ### 技术探索或 spike
659
+
660
+ 可以调查代码、做最小实验、比较方案,但不要直接交付业务代码。
661
+
662
+ 探索结束时要回答:
663
+
664
+ - 方案能不能做。
665
+ - 主要风险是什么。
666
+ - 会影响哪些页面、接口、数据或仓库。
667
+ - 建议继续、放弃还是另开正式功能。
668
+
669
+ ### 每类文档只回答一类问题
670
+
671
+ | 文档 | 它回答什么 | 不要写什么 |
672
+ |---|---|---|
673
+ | `CONTEXT.md` | 稳定业务术语叫什么 | 临时方案、表名、类名 |
674
+ | Discovery | 为什么做、为谁做、MVP 是什么 | 详细实现 |
675
+ | Spec | 做什么、边界是什么、怎样验收 | 大段代码 |
676
+ | 产品设计 | 页面怎样走、有哪些状态 | 后端内部结构 |
677
+ | OpenAPI | 前后端怎样交换数据 | 页面布局 |
678
+ | 架构 / ADR | 边界、数据、风险和关键取舍 | 普通 CRUD 细节 |
679
+ | Ticket | 当前小任务做什么、怎样验证 | 整个产品的重复说明 |
680
+ | 发布记录 | 怎样发布、观察和回滚 | 未完成需求 |
681
+
682
+ ### 团队什么时候加入
683
+
684
+ | 角色 | 提前参与什么 | 交付前重点检查 |
685
+ |---|---|---|
686
+ | 需求经理 | 用户、范围、术语、成功标准 | Spec 是否还能被业务复述 |
687
+ | 产品经理 | 优先级、页面流、状态、原型及商业约束、交付承诺和发布窗口 | 实现是否偏离已确认体验;对外承诺是否经过生物人批准 |
688
+ | 前端工程师 | 原型可行性、API 是否好用 | 页面状态、截图、console、`pnpm` |
689
+ | 后端工程师 | API、数据、领域规则、工程准备 | 行为测试、契约、`./mvnw` |
690
+ | 测试工程师 | 测试入口、异常和恢复路径 | 独立审查、当次验证 |
691
+ | 项目经理 | Ticket、依赖、仓库和风险 | 候选、发布顺序和回滚点 |
692
+
693
+ 角色可以由不同 Agent 运行时承载。实现者不能审查自己的候选。
694
+
695
+ ### 前端开发前后要检查什么
696
+
697
+ 开发前:
698
+
699
+ - Spec、状态矩阵和原型已经批准并且可以读取。
700
+ - OpenAPI 已 Freeze,或已有无 API 影响记录。
701
+ - 当前垂直切片是 `ready-for-agent`。
702
+ - `frontend_implementation_plan` 已通过检查。
703
+
704
+ 完成前:
705
+
706
+ - 实际运行登记的 `pnpm` 测试、type-check、lint 和 build。
707
+ - 检查桌面和窄屏。
708
+ - 覆盖加载、空态、错误、权限、成功和失败恢复。
709
+ - 保存截图或视觉回归、交互、console warning 和退出码。
710
+
711
+ 只跑 type-check 不能证明页面已经符合设计。
712
+
713
+ ### 后端开发前后要检查什么
714
+
715
+ 开发前:
716
+
717
+ - OpenAPI 已 Freeze。
718
+ - 领域规则和数据边界已经说明。
719
+ - 当前垂直切片和实现合同都是当前版本。
720
+
721
+ 开发时按影响选择必要 skill。常见依赖方向是:
722
+
723
+ ```text
724
+ yss-domain
725
+ -> yss-application
726
+ -> yss-repository / yss-mybatis
727
+ -> yss-web-controller / yss-dto
728
+ ```
729
+
730
+ 这不表示要为每一层创建一个 Ticket。
731
+
732
+ 完成前:
733
+
734
+ - 用公开行为写测试。
735
+ - 实际运行项目根目录的 `./mvnw`。
736
+ - 检查 DTO 的真实 HTTP / JSON 形状。
737
+ - 检查异常、校验、幂等和事务边界。
738
+
739
+ ### 开发、合并和发布前的检查
740
+
741
+ 开发前:
742
+
743
+ - 仓库身份合法。
744
+ - 需求、Spec、设计和 API 没有未解释的矛盾。
745
+ - 实现仓库与验证命令已经登记。
746
+ - 垂直切片满足 `ready-for-agent`。
747
+
748
+ 合并前:
749
+
750
+ - 实现者已完成本切片测试。
751
+ - 非实现者审查同一候选。
752
+ - 命中的 UI、API、Backend、Data 范围都有证据。
753
+ - `violation` 已修复,`drift` 和 `new_impacts` 已重新分诊。
754
+
755
+ 发布前:
756
+
757
+ - 对同一候选重新执行验证。
758
+ - 发布、监控和回滚步骤可以执行。
759
+ - 未解决风险有负责人和日期。
760
+ - `gate.release-ready` 由生物人裁决。
761
+
762
+ ### 可以直接复制的团队提示词
763
+
764
+ 新功能分诊:
765
+
766
+ ```text
767
+ 使用 yss-product-lifecycle,以 route 模式检查“<功能名>”。
768
+ 本轮只读。请用普通话说明当前阶段、缺失内容、影响范围和下一步。
769
+ 正式 ID 放在解释后面。
770
+ ```
771
+
772
+ 小改动:
773
+
774
+ ```text
775
+ 检查“<改动>”相对当前 Spec、设计、API 和 Ticket 的影响。
776
+ 只补受影响内容。发现资料过期或新影响时停下并说明原因。
777
+ ```
778
+
779
+ Bug:
780
+
781
+ ```text
782
+ 使用 diagnosing-bugs 复现“<问题>”,记录输入、实际结果和预期结果。
783
+ 复现稳定后使用 tdd 写失败测试并完成最小修复。
784
+ ```
785
+
786
+ 准备实现:
787
+
788
+ ```text
789
+ 检查当前垂直切片是否满足 ready-for-agent。
790
+ 请列出合同版本、允许写入路径、必需技能和实际验证命令。
791
+ 条件不齐时不要实现。
792
+ ```
793
+
794
+ ## 创建、接管和更新项目
795
+
796
+ `create-yss-spec` 用来创建或补齐 YSS 研发管理项目。
797
+
798
+ CLI 源码由独立项目 [iloveZzz/create-yss-spec](https://github.com/iloveZzz/create-yss-spec) 维护。本节只说明怎么使用。
799
+
800
+ > CLI 不会替你创建前端、后端、远程 Git 仓库、CI 或 Ticket Board。
801
+
802
+ ### 使用前准备
803
+
804
+ 1. 安装符合项目要求的 Node.js 和 npm。
805
+ 2. 运行 `git status --short`,记录当前 Git 状态。
806
+ 3. 已有项目建议先创建分支或记录当前 commit。
807
+ 4. 再次确认目标目录。
808
+
809
+ ### 选对命令
810
+
811
+ | 你的情况 | 使用方式 |
812
+ |---|---|
813
+ | 新建项目 | `npm create yss-spec@latest` |
814
+ | 给已有项目补上模板 | `attach` |
815
+ | 更新已经接入的模板 | `sync` |
816
+
817
+ ### 新建项目
818
+
819
+ 最简单的方式:
820
+
821
+ ```bash
822
+ npm create yss-spec@latest
823
+ ```
824
+
825
+ 需要明确参数时:
826
+
827
+ ```bash
828
+ npx create-yss-spec@latest \
829
+ --project-name "项目名称" \
830
+ --business-domain "业务领域" \
831
+ --target-dir "./project" \
832
+ --git-init
833
+ ```
834
+
835
+ 成功后会看到:
836
+
837
+ - 目标目录已经创建。
838
+ - 根目录存在 `yss-project.yaml`。
839
+ - `repository_mode` 为 `project-instance`。
840
+ - `.yss-template.json` 使用 metadata schema v2,并记录 `templateCommit`。
841
+
842
+ 只想预览时加 `--dry-run`。预览不会创建目录,也不会删除文件。
843
+
844
+ ### 接管已有项目
845
+
846
+ `attach` 只补充模板管理的文件。业务代码、用户文件和 `.git` 会保留。
847
+
848
+ 先预览:
849
+
850
+ ```bash
851
+ npx create-yss-spec@latest attach \
852
+ --target-dir . \
853
+ --project-name "项目名称" \
854
+ --business-domain "业务领域" \
855
+ --dry-run
856
+ ```
857
+
858
+ 看懂预览结果:
859
+
860
+ | 状态 | 表示什么 | 你要做什么 |
861
+ |---|---|---|
862
+ | `missing` | 文件不存在,可以新增 | 通常可以继续 |
863
+ | `matched` | 文件与模板一致 | 无需处理 |
864
+ | `conflict` | 本地内容和模板不同 | 先看差异,再决定是否覆盖 |
865
+ | `unsafe` | CLI 无法确认能否安全处理 | 停下并人工确认,`--force` 也不能跳过 |
866
+
867
+ 确认写入:
868
+
869
+ ```bash
870
+ npx create-yss-spec@latest attach \
871
+ --target-dir . \
872
+ --project-name "项目名称" \
873
+ --business-domain "业务领域" \
874
+ --apply
875
+ ```
876
+
877
+ 只有确认要覆盖 `conflict` 时,才追加 `--force`。
878
+
879
+ `--dry-run` 和 `--apply` 不能一起使用。已有 `.yss-template.json` 的项目不要重复 `attach`,请使用 `sync`。
880
+
881
+ ### 更新模板
882
+
883
+ 先预览:
884
+
885
+ ```bash
886
+ npx create-yss-spec@latest sync \
887
+ --target-dir . \
888
+ --dry-run
889
+ ```
890
+
891
+ 确认后执行:
892
+
893
+ ```bash
894
+ npx create-yss-spec@latest sync \
895
+ --target-dir .
896
+ ```
897
+
898
+ 普通同步会:
899
+
900
+ - 新增缺失文件。
901
+ - 更新没有被本地修改的受管文件。
902
+ - 报告冲突,不直接覆盖。
903
+ - 报告模板已经删除的文件,但默认不删除。
904
+ - 保留与模板无关的文件。
905
+
906
+ 确认要覆盖受管冲突时才使用 `sync --force`。CLI 会先备份。验证失败时会回滚文件,并保留旧 metadata。
907
+
908
+ ### 命令完成后检查
909
+
910
+ 依次运行:
911
+
912
+ ```bash
913
+ git status --short
914
+ scripts/sync-skills --check
915
+ scripts/update-skill-lock --check
916
+ scripts/verify-template
917
+ ```
918
+
919
+ 成功时:
920
+
921
+ - 命令退出码为 `0`。
922
+ - 模板检查全部通过。
923
+ - `git status --short` 只显示你预期的变更。
924
+ - 你知道备份或回滚信息在哪里。
925
+
926
+ 安装、参数、`attach`、`sync` 或 npm 发布问题,请到 `create-yss-spec` 仓库反馈。
927
+
928
+ 模板内容、流程文档、Agent skills 或 `scripts/verify-template` 问题,请在本模板仓库处理。
929
+
930
+ ## 新手术语卡
931
+
932
+ | 术语 | 先这样理解 |
933
+ |---|---|
934
+ | Agent | 帮你执行特定工作步骤的 AI 协作者 |
935
+ | `yss-product-lifecycle` | 帮你判断当前进度和下一步的流程助手 |
936
+ | Spec | 把“要解决什么、怎样验收”写清楚的功能说明书 |
937
+ | Ticket | 一项可以跟踪的工作 |
938
+ | 功能父 Ticket | 汇总整个功能资料、状态和阻塞项的 Ticket |
939
+ | 垂直切片 Ticket | 能单独完成、单独测试的一小段功能 |
940
+ | 工作单元 `work-unit.*` | 一次范围明确、有输入和输出的工作 |
941
+ | 检查点 `gate.*` | 继续之前必须通过的检查 |
942
+ | `ready-for-human` | 内容还要等人或指定角色确认 |
943
+ | `ready-for-agent` | 当前垂直切片的开发条件已经齐全 |
944
+ | OpenAPI Draft | 还在评审的接口草案 |
945
+ | OpenAPI Freeze | 接口已经确认,前后端可以按它实现 |
946
+ | Fresh Verification | 完成前重新执行的测试或检查 |
947
+
948
+ ### 五种 Ticket 状态
949
+
950
+ | 状态 | 普通话解释 | 能不能直接开发 |
951
+ |---|---|---|
952
+ | `needs-triage` | 还没分清要做什么 | 不能 |
953
+ | `needs-info` | 缺资料或缺决定 | 不能 |
954
+ | `ready-for-human` | 等人或指定角色确认 | 不能 |
955
+ | `ready-for-agent` | 当前垂直切片已具备实现条件 | 可以 |
956
+ | `wontfix` | 明确不做 | 不适用 |
957
+
958
+ `ready-for-agent` 只给垂直切片 Ticket。不要给 Spec 初稿、原型或 OpenAPI Draft 使用。
959
+
960
+ ## 常见卡点
961
+
962
+ ### Agent 一上来就准备改文件
963
+
964
+ 重新说明:“使用 `route` 模式,本轮只读。”
965
+
966
+ ### 回答里的专业词太多
967
+
968
+ 让 Agent 先用普通话解释,再附上正式 ID。不要删除正式 ID,后续排查还会用到。
969
+
970
+ ### 文件存在,是不是就能继续
971
+
972
+ 不是。还要检查内容是否经过审查、是否过期、上游资料是否变化。
973
+
974
+ ### OpenAPI Draft 还没评审,前后端已经开始写
975
+
976
+ 先停止实现。完成 Draft Review、必要设计审查和 OpenAPI Freeze 后,再拆可以实现的切片。
977
+
978
+ ### Ticket 很多,却无法单独验收
979
+
980
+ 按用户能看到的结果重新拆垂直切片。不要只按前端、后端或数据库分层拆任务。
981
+
982
+ ### 实现者说“已经测试过”
983
+
984
+ 要求提供实际命令、退出码和候选引用。完成或发布前还要重新运行。
985
+
986
+ ### 用户总说“都可以”
987
+
988
+ 给出两个具体场景,让他选择,并说明各自影响。不要替他决定。
989
+
990
+ ### `--force` 仍然失败
991
+
992
+ 检查是否出现 `unsafe` 或无法判断归属的冲突。它们必须人工处理。
993
+
994
+ ## 最终成功标志
995
+
996
+ 一个功能准备发布时,你应该能找到:
997
+
998
+ - 已确认的用户问题、范围和成功标准。
999
+ - 当前版本的 Spec、设计和 API 约定。
1000
+ - 功能父 Ticket 和可以单独验证的垂直切片。
1001
+ - 已批准的实现合同。
1002
+ - 实际测试命令和退出码。
1003
+ - 非实现者的审查结论。
1004
+ - 发布、监控和回滚记录。
1005
+
1006
+ 少一项时,Agent 应明确说明缺什么,不要只说“已经完成”。
1007
+
1008
+ ## 下一步
1009
+
1010
+ 第一次使用时,回到[三分钟开始](#三分钟开始),先完成一次只读 `route` 检查。
1011
+
1012
+ 需要核对正式规则时,请查看[生命周期注册表](../process/lifecycle-registry.yaml)、[流程裁剪指南](../process/harness-process-tailoring.md)、[技能注册表](../agents/yss-skill-registry.yaml)、[数字人角色注册表](../agents/digital-human-roles.yaml)和 [Ticket 状态说明](../agents/triage-labels.md)。
1013
+
1014
+ 这些文件负责定义正式事实。本手册只负责把它们讲明白。