@openprd/cli 0.1.1 → 0.1.8

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 (137) hide show
  1. package/.openprd/README.md +43 -69
  2. package/.openprd/README_EN.md +84 -0
  3. package/.openprd/benchmarks/index.md +7 -0
  4. package/.openprd/benchmarks/sources.yaml +25 -3
  5. package/.openprd/discovery/config.json +16 -2
  6. package/.openprd/engagements/active/flows.md +19 -14
  7. package/.openprd/engagements/active/handoff.md +11 -4
  8. package/.openprd/engagements/active/prd.md +99 -71
  9. package/.openprd/engagements/active/review.html +4 -4
  10. package/.openprd/engagements/active/roles.md +9 -8
  11. package/.openprd/engagements/work-units/wu-20260524015648-6d33ded7.json +4 -4
  12. package/.openprd/engagements/work-units/wu-20260602113956-a99b5b88.json +18 -0
  13. package/.openprd/engagements/work-units/wu-20260602122244-78656aaf.json +18 -0
  14. package/.openprd/engagements/work-units/wu-20260602122442-e96489e2.json +18 -0
  15. package/.openprd/engagements/work-units/wu-20260602132835-695429e8.json +18 -0
  16. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/candidate.json +78 -0
  17. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/diagnostic-report.json +129 -0
  18. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/root-cause-candidates.json +41 -0
  19. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/timeline.json +14 -0
  20. package/.openprd/knowledge/drafts/openprd-experience-diagnostic-candidate-turn-1780116203372-5f266a79e968c758/SKILL.md +49 -0
  21. package/.openprd/knowledge/index.json +44 -4
  22. package/.openprd/reviews/v0001.html +195 -129
  23. package/.openprd/reviews/v0002.html +1150 -0
  24. package/.openprd/reviews/v0003.html +1150 -0
  25. package/.openprd/reviews/v0004.html +1150 -0
  26. package/.openprd/reviews/v0005.html +1150 -0
  27. package/.openprd/standards/config.json +12 -9
  28. package/.openprd/state/changes.json +17 -2
  29. package/.openprd/state/current.json +399 -63
  30. package/.openprd/state/release-ledger.json +344 -0
  31. package/.openprd/state/version-index.json +52 -0
  32. package/.openprd/state/versions/v0002.json +264 -0
  33. package/.openprd/state/versions/v0002.md +183 -0
  34. package/.openprd/state/versions/v0003.json +269 -0
  35. package/.openprd/state/versions/v0003.md +188 -0
  36. package/.openprd/state/versions/v0004.json +274 -0
  37. package/.openprd/state/versions/v0004.md +193 -0
  38. package/.openprd/state/versions/v0005.json +299 -0
  39. package/.openprd/state/versions/v0005.md +189 -0
  40. package/.openprd/templates/agent/intake.md +5 -4
  41. package/.openprd/templates/b2b/intake.md +5 -4
  42. package/.openprd/templates/base/intake.md +10 -4
  43. package/.openprd/templates/company/README.md +9 -7
  44. package/.openprd/templates/company/README_EN.md +12 -0
  45. package/.openprd/templates/consumer/intake.md +5 -4
  46. package/.openprd/templates/industry/README.md +12 -10
  47. package/.openprd/templates/industry/README_EN.md +18 -0
  48. package/.openprd/templates/project/README.md +11 -9
  49. package/.openprd/templates/project/README_EN.md +16 -0
  50. package/.openprd/templates/session/README.md +11 -9
  51. package/.openprd/templates/session/README_EN.md +16 -0
  52. package/AGENTS.md +12 -8
  53. package/README.md +399 -438
  54. package/README_CN.md +4 -578
  55. package/README_EN.md +850 -0
  56. package/docs/assets/openprd-requirement-routing-en.png +0 -0
  57. package/docs/assets/openprd-requirement-routing-en.svg +102 -0
  58. package/docs/assets/openprd-requirement-routing-zh-refined.png +0 -0
  59. package/docs/assets/openprd-requirement-routing-zh.png +0 -0
  60. package/docs/assets/openprd-requirement-routing-zh.svg +102 -0
  61. package/package.json +6 -2
  62. package/scripts/dev-check-wrapup-copy.mjs +110 -0
  63. package/scripts/openprd-github-release-notes.mjs +99 -0
  64. package/scripts/quality-perf-check.mjs +203 -0
  65. package/skills/openprd-benchmark-router/SKILL.md +1 -0
  66. package/skills/openprd-benchmark-router/references/benchmark-sources.md +1 -0
  67. package/skills/openprd-benchmark-router/references/source-policy.md +2 -0
  68. package/skills/openprd-discovery-loop/SKILL.md +2 -2
  69. package/skills/openprd-harness/SKILL.md +46 -24
  70. package/skills/openprd-harness/references/workflow-gates.md +15 -0
  71. package/skills/openprd-quality/SKILL.md +10 -4
  72. package/skills/openprd-requirement-intake/SKILL.md +31 -20
  73. package/skills/openprd-requirement-intake/references/prd-template-lenses.md +6 -6
  74. package/skills/openprd-requirement-intake/references/routing-rubric.md +10 -2
  75. package/skills/openprd-router/SKILL.md +2 -2
  76. package/skills/openprd-shared/SKILL.md +51 -23
  77. package/skills/openprd-standards/SKILL.md +2 -1
  78. package/src/agent-integration.js +265 -65
  79. package/src/benchmark/constants.js +107 -0
  80. package/src/benchmark/operations.js +235 -0
  81. package/src/benchmark/registry.js +64 -0
  82. package/src/benchmark/render.js +115 -0
  83. package/src/benchmark/source.js +617 -0
  84. package/src/benchmark/storage.js +121 -0
  85. package/src/benchmark/verify.js +235 -0
  86. package/src/benchmark.js +50 -851
  87. package/src/change-summary.js +339 -0
  88. package/src/cli/args.js +67 -6
  89. package/src/cli/basic-print.js +365 -0
  90. package/src/cli/benchmark-print.js +91 -0
  91. package/src/cli/change-print.js +221 -0
  92. package/src/cli/doctor-print.js +268 -0
  93. package/src/cli/growth-print.js +176 -0
  94. package/src/cli/print.js +73 -1384
  95. package/src/cli/quality-print.js +284 -0
  96. package/src/cli/run-print.js +297 -0
  97. package/src/cli/shared-print.js +127 -0
  98. package/src/cli/workflow-print.js +195 -0
  99. package/src/codex-hook-runner-template.mjs +639 -117
  100. package/src/codex-runtime.js +324 -0
  101. package/src/dev-standards.js +178 -5
  102. package/src/diagram-core.js +5 -5
  103. package/src/discovery.js +2 -1
  104. package/src/execution-strategy.js +369 -0
  105. package/src/fleet.js +4 -0
  106. package/src/github-release.js +156 -0
  107. package/src/growth.js +311 -13
  108. package/src/html-artifact-utils.js +25 -0
  109. package/src/html-artifacts.js +157 -1596
  110. package/src/knowledge.js +1176 -75
  111. package/src/language-policy.js +2 -112
  112. package/src/learning-html-artifact.js +1031 -0
  113. package/src/learning-review.js +3 -2
  114. package/src/loop.js +280 -9
  115. package/src/openprd.js +341 -38
  116. package/src/openspec/change-validate.js +0 -9
  117. package/src/openspec/execute.js +79 -3
  118. package/src/openspec/generate.js +33 -20
  119. package/src/openspec/tasks.js +33 -2
  120. package/src/prd-core.js +10 -9
  121. package/src/product-type-copy.js +69 -0
  122. package/src/quality-html-artifact.js +108 -9
  123. package/src/quality-learning.js +30 -0
  124. package/src/quality-visual-review.js +237 -0
  125. package/src/quality.js +329 -43
  126. package/src/registry-hygiene.js +54 -0
  127. package/src/release-ledger.js +413 -0
  128. package/src/review-presentation.js +12 -6
  129. package/src/run-harness.js +722 -48
  130. package/src/session-binding.js +40 -3
  131. package/src/session-registry.js +159 -0
  132. package/src/standards.js +5 -3
  133. package/src/test-strategy.js +386 -0
  134. package/src/visual-compare.js +915 -34
  135. package/src/work-unit-migration.js +5 -1
  136. package/src/workspace-core.js +343 -19
  137. package/src/workspace-workflow.js +538 -134
@@ -0,0 +1,264 @@
1
+ {
2
+ "versionNumber": 2,
3
+ "versionId": "v0002",
4
+ "createdAt": "2026-06-02 11:39:56",
5
+ "projectRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd",
6
+ "workspaceRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd/.openprd",
7
+ "schema": "prd-core",
8
+ "templatePack": "agent",
9
+ "productType": "agent",
10
+ "title": "OpenPrd 用户视角变化摘要",
11
+ "owner": "Codex",
12
+ "status": "synthesized",
13
+ "sections": {
14
+ "meta": {
15
+ "title": "OpenPrd 用户视角变化摘要",
16
+ "owner": "Codex",
17
+ "status": "classified",
18
+ "version": "v0002",
19
+ "productType": "agent",
20
+ "date": "2026-06-02"
21
+ },
22
+ "problem": {
23
+ "problemStatement": "把 Feature Git Commit 的用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要能力,并落地到 loop commit、handoff / 版本说明、review 摘要三处。",
24
+ "whyNow": "用户已经确认方向,希望 OpenPrd 默认就能写出更适合人阅读的变化说明,而不是把这类经验留在单独 skill 里。",
25
+ "evidence": []
26
+ },
27
+ "users": {
28
+ "primaryUsers": [
29
+ "维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer",
30
+ "使用 OpenPrd 执行任务并需要生成 commit、handoff 或版本说明的 Agent 使用者"
31
+ ],
32
+ "secondaryUsers": [],
33
+ "stakeholders": [
34
+ "阅读交付变更、提交说明和版本说明的项目负责人",
35
+ "需要快速判断这次改动是否值得合入或发布的协作者"
36
+ ]
37
+ },
38
+ "goals": {
39
+ "goals": [
40
+ "把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不是停留在单个 commit skill。",
41
+ "让 OpenPrd 在 loop commit、handoff / 版本说明、review 摘要三处都能输出更适合人阅读的变化说明。",
42
+ "保持 OpenPrd 现有 workflow、review gate 和高风险提交门禁不变,只升级表达层。"
43
+ ],
44
+ "successMetrics": [
45
+ "loop 默认 commit message 不再只输出 `Complete <task>` 这种执行口吻,而是优先输出短标题加动作词条目。",
46
+ "handoff 导出结果包含可直接复用的变化摘要或版本说明片段,便于人快速扫读。",
47
+ "review 摘要文案的标签和一句话说明更明显地站在用户视角表达新增、修复、优化、调整等变化。",
48
+ "完成后用单独 worker 跑一个样例项目,能看到这套变化摘要在真实任务中的输出效果。"
49
+ ],
50
+ "acceptanceGoals": [
51
+ "新增一套共享变化摘要规则,明确标题、动作词、用户视角和避免技术细节的写法。",
52
+ "loop commit、handoff / 版本说明、review 摘要三处都接入这套规则,并保留必要的回退逻辑。",
53
+ "README、skills 或相关生成指引同步说明这套默认写法。",
54
+ "本地测试覆盖 formatter、调用方接线和回退路径。"
55
+ ]
56
+ },
57
+ "scope": {
58
+ "inScope": [
59
+ "新增共享变化摘要 formatter 或 contract。",
60
+ "修改 loop task commit 默认文案生成。",
61
+ "修改 handoff 导出内容,加入面向人的变化摘要 / 版本说明区块。",
62
+ "修改 review presentation 或相关摘要 contract,让标签和一句话说明更贴近新增、修复、优化、调整等用户视角表达。",
63
+ "补充 README、skills、文档和测试。",
64
+ "完成后用 worker 在单独项目上跑一次最小验证。"
65
+ ],
66
+ "outOfScope": [
67
+ "不把 Feature Git Commit 的自动 tag、自动 push、版本号阻断、敏感扫描整包并入 OpenPrd 默认工作流。",
68
+ "不改写历史 commit 或历史 handoff 产物。",
69
+ "不要求所有技术性内部说明都必须被改写成用户文案;只约束面向人的变化摘要层。"
70
+ ]
71
+ },
72
+ "scenarios": {
73
+ "primaryFlows": [
74
+ "用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。",
75
+ "用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。",
76
+ "用户查看 review 评审摘要时,能先用短标签和一句话理解这次带来的用户可感知变化,而不是先读技术实现。"
77
+ ],
78
+ "edgeCases": [
79
+ "当改动主要是底层重构、文档或内部治理时,变化摘要仍需保持诚实,不要硬包装成夸大的用户收益。",
80
+ "一个任务可能同时包含新增和修复,摘要需要支持多个动作词条目归到同一个短标题下。",
81
+ "如果当前上下文不足以生成可信的用户视角摘要,调用方需要保留清晰回退,而不是输出胡乱包装的文案。"
82
+ ],
83
+ "failureModes": [
84
+ "commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。",
85
+ "摘要为了好看而扭曲真实改动,把内部治理误写成用户可感知功能。",
86
+ "三处落点风格不一致,用户在 commit、handoff 和 review 里看到三套不同写法。"
87
+ ]
88
+ },
89
+ "requirements": {
90
+ "functional": [
91
+ "OpenPrd 提供共享变化摘要规则,支持短标题、动作词条目和用户视角描述。",
92
+ "loop 在未显式传入 message 时,优先基于 task 上下文生成用户视角 commit message。",
93
+ "handoff 导出内容增加变化摘要 / 版本说明字段,并写入 markdown 与 json 产物。",
94
+ "review 摘要 contract 明确要求标签和一句话说明优先表达新增、修复、优化、调整等变化结论。",
95
+ "相关 skills、README 或生成引导同步提示这套默认写法。"
96
+ ],
97
+ "nonFunctional": [
98
+ "新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。",
99
+ "formatter 只依赖本地上下文,不新增外部网络、第三方 API 或额外付费依赖。",
100
+ "输出在中英文混合项目里仍以当前用户语言为主,必要专有名词保持原样。"
101
+ ],
102
+ "businessRules": [
103
+ "变化摘要优先描述用户能看到或感受到的变化,不优先描述代码实现细节。",
104
+ "默认动作词优先使用新增、修复、优化、调整、移除;只有确有必要时才扩展。",
105
+ "除非用户明确要求技术细节,否则 commit、handoff 和 review 摘要中避免出现文件名、函数名、参数值或内部模块术语。"
106
+ ]
107
+ },
108
+ "businessGuardrails": {
109
+ "costDrivers": [
110
+ "无新增第三方付费调用成本;变化摘要完全基于本地上下文生成。"
111
+ ],
112
+ "usageLimits": [
113
+ "不引入新的用户额度或发布配额限制;沿用现有 commit / handoff 执行门禁。"
114
+ ],
115
+ "abusePrevention": [
116
+ "不把自动 push、自动 tag 或历史重写并入默认能力,避免摘要能力演变成高风险自动发布路径。"
117
+ ],
118
+ "monitoringSignals": [
119
+ "关注生成摘要是否频繁退回技术细节、是否在测试中出现失真或空摘要。"
120
+ ],
121
+ "alertThresholds": [
122
+ "如果三处输出中任一处无法生成可信摘要并持续回退,需要在测试中显式暴露。"
123
+ ],
124
+ "stopLossActions": [
125
+ "当上下文不足或摘要质量不可信时,回退到现有安全文案,不自动包装。"
126
+ ]
127
+ },
128
+ "constraints": {
129
+ "technical": [
130
+ "需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约。",
131
+ "需要在 dirty workspace 中做窄改动,避免误伤正在进行的 test-strategy-router 等历史工作。"
132
+ ],
133
+ "compliance": [],
134
+ "dependencies": [
135
+ "依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 handoff 导出流程。"
136
+ ]
137
+ },
138
+ "risks": {
139
+ "assumptions": [
140
+ "用户更看重人能快速扫懂的变化摘要,而不是技术完整性优先的底层说明。",
141
+ "三处落点可以共用一套核心 formatter,再按场景做轻量渲染差异。"
142
+ ],
143
+ "risks": [
144
+ "如果 formatter 规则过死,可能把一些纯技术任务描述得失真。",
145
+ "如果只改一处而没有共用 contract,后续很快会再次分叉。"
146
+ ],
147
+ "openQuestions": [
148
+ "是否需要把默认动作词进一步 grow-aware,让项目级偏好后续可配置。"
149
+ ]
150
+ },
151
+ "handoff": {
152
+ "owner": "Codex",
153
+ "nextStep": "确认新的评审稿后生成 change 和 tasks,并按三处落点实现。",
154
+ "targetSystem": "OpenSpec"
155
+ },
156
+ "typeSpecific": {
157
+ "kind": "agent",
158
+ "title": "Agent 专项",
159
+ "fields": {
160
+ "humanAgentContract": "Agent 可以根据 task、handoff 和 review 上下文生成变化摘要草案,但不能把自动生成的摘要当成发布事实之外的营销文案;高风险提交行为仍遵守现有执行门禁。",
161
+ "autonomyBoundary": "Agent 可以修改 OpenPrd 的 formatter、skills、文档、测试和 worker 验证流程;不得自动推送、改写历史提交,或把 Feature Git Commit 的高风险 git 行为直接并入 OpenPrd 默认流。",
162
+ "toolBoundary": "仅使用本地 OpenPrd 代码、CLI、测试与 worker 会话完成实现和验证;本次不需要额外第三方文档调研。",
163
+ "stateModel": "共享变化摘要 contract 负责统一标题、动作词和描述规则;loop、handoff、review 三个调用面只做各自场景渲染与回退控制。",
164
+ "evalPlan": "先做本地单测和回归,再用 worker 在单独样例项目上跑一个最小任务,检查 commit、handoff 或 review 摘要输出是否符合预期。"
165
+ }
166
+ }
167
+ },
168
+ "reviewPresentation": {
169
+ "diagram": {
170
+ "type": "map"
171
+ },
172
+ "mapNodes": {
173
+ "problem": {
174
+ "title": "问题定义",
175
+ "text": "变化摘要仍偏技术口吻"
176
+ },
177
+ "goal": {
178
+ "title": "统一写法",
179
+ "text": "三处都改成用户视角短句"
180
+ },
181
+ "scope": {
182
+ "title": "三处落点",
183
+ "text": "commit、handoff、review 同步接线"
184
+ },
185
+ "flow": {
186
+ "title": "主流程",
187
+ "text": "共享 contract 生成短标题和动作条目"
188
+ },
189
+ "risk": {
190
+ "title": "主要风险",
191
+ "text": "包装过度或三处继续分叉"
192
+ }
193
+ },
194
+ "panels": {
195
+ "flow": [
196
+ {
197
+ "summary": "共享摘要",
198
+ "detail": "先定一套共享 contract,再分发到 commit、handoff 和 review。"
199
+ },
200
+ {
201
+ "summary": "提交说明",
202
+ "detail": "task commit 默认改成短标题加新增、修复、优化条目。"
203
+ },
204
+ {
205
+ "summary": "版本说明",
206
+ "detail": "handoff 直接产出可复用的变化摘要和版本说明片段。"
207
+ },
208
+ {
209
+ "summary": "评审摘要",
210
+ "detail": "review 先给短标签和一句话,不先暴露技术实现。"
211
+ }
212
+ ],
213
+ "function": [
214
+ {
215
+ "summary": "保留覆盖",
216
+ "detail": "显式 message 仍优先,避免覆盖用户自定义提交文案。"
217
+ },
218
+ {
219
+ "summary": "本地生成",
220
+ "detail": "只用本地上下文推导摘要,不新增外部依赖或付费调用。"
221
+ },
222
+ {
223
+ "summary": "诚实回退",
224
+ "detail": "上下文不足时回退安全文案,不硬包装用户收益。"
225
+ }
226
+ ],
227
+ "guardrail": [
228
+ {
229
+ "summary": "不并高危",
230
+ "detail": "不把 auto tag、auto push、历史重写并进默认能力。"
231
+ },
232
+ {
233
+ "summary": "保持门禁",
234
+ "detail": "现有 review、commit 和 handoff 门禁继续生效。"
235
+ }
236
+ ],
237
+ "risk": [
238
+ {
239
+ "summary": "过度包装",
240
+ "detail": "底层重构若被写成用户功能,会损害说明可信度。"
241
+ },
242
+ {
243
+ "summary": "三处分叉",
244
+ "detail": "如果不共用 formatter,commit、handoff 和 review 会再次失去一致性。"
245
+ },
246
+ {
247
+ "summary": "词表成长",
248
+ "detail": "默认动作词后续可能需要 grow-aware 化。"
249
+ }
250
+ ]
251
+ }
252
+ },
253
+ "workUnitId": "wu-20260602113956-a99b5b88",
254
+ "targetRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd",
255
+ "content": "# OpenPrd 用户视角变化摘要\n> 语言规则:默认用简体中文生成 PRD、spec、tasks 和用户可见说明;除 PRD、OpenPrd、OpenSpec、API、SDK、CLI、TypeScript、JSON、HTTP、WebSocket、字段 key、命令名、品牌名、产品名和协议名等必要专有名词外,其余内容优先写成简体中文。\n- 版本: v0002\n- 负责人: Codex\n- 产品类型: agent\n- 模板包: agent\n- 状态: synthesized\n- 生成时间: 2026-06-02 11:39:56\n## 元信息\n\n- 标题: OpenPrd 用户视角变化摘要\n- 负责人: Codex\n- 状态: classified\n- 版本: v0002\n- 产品类型: agent\n- 日期: 2026-06-02\n\n## 问题\n\n- 问题陈述: 把 Feature Git Commit 的用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要能力,并落地到 loop commit、handoff / 版本说明、review 摘要三处。\n- 为什么是现在: 用户已经确认方向,希望 OpenPrd 默认就能写出更适合人阅读的变化说明,而不是把这类经验留在单独 skill 里。\n- 证据:\n - 待补充\n\n## 用户与相关方\n\n- 主要用户:\n - 维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer\n - 使用 OpenPrd 执行任务并需要生成 commit、handoff 或版本说明的 Agent 使用者\n- 次要用户:\n - 待补充\n- 相关方:\n - 阅读交付变更、提交说明和版本说明的项目负责人\n - 需要快速判断这次改动是否值得合入或发布的协作者\n\n## 目标与成功标准\n\n- 目标:\n - 把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不是停留在单个 commit skill。\n - 让 OpenPrd 在 loop commit、handoff / 版本说明、review 摘要三处都能输出更适合人阅读的变化说明。\n - 保持 OpenPrd 现有 workflow、review gate 和高风险提交门禁不变,只升级表达层。\n- 成功指标:\n - loop 默认 commit message 不再只输出 `Complete <task>` 这种执行口吻,而是优先输出短标题加动作词条目。\n - handoff 导出结果包含可直接复用的变化摘要或版本说明片段,便于人快速扫读。\n - review 摘要文案的标签和一句话说明更明显地站在用户视角表达新增、修复、优化、调整等变化。\n - 完成后用单独 worker 跑一个样例项目,能看到这套变化摘要在真实任务中的输出效果。\n- 验收目标:\n - 新增一套共享变化摘要规则,明确标题、动作词、用户视角和避免技术细节的写法。\n - loop commit、handoff / 版本说明、review 摘要三处都接入这套规则,并保留必要的回退逻辑。\n - README、skills 或相关生成指引同步说明这套默认写法。\n - 本地测试覆盖 formatter、调用方接线和回退路径。\n\n## 范围与非目标\n\n- 范围内:\n - 新增共享变化摘要 formatter 或 contract。\n - 修改 loop task commit 默认文案生成。\n - 修改 handoff 导出内容,加入面向人的变化摘要 / 版本说明区块。\n - 修改 review presentation 或相关摘要 contract,让标签和一句话说明更贴近新增、修复、优化、调整等用户视角表达。\n - 补充 README、skills、文档和测试。\n - 完成后用 worker 在单独项目上跑一次最小验证。\n- 范围外:\n - 不把 Feature Git Commit 的自动 tag、自动 push、版本号阻断、敏感扫描整包并入 OpenPrd 默认工作流。\n - 不改写历史 commit 或历史 handoff 产物。\n - 不要求所有技术性内部说明都必须被改写成用户文案;只约束面向人的变化摘要层。\n\n## 场景与流程\n\n- 主流程:\n - 用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。\n - 用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。\n - 用户查看 review 评审摘要时,能先用短标签和一句话理解这次带来的用户可感知变化,而不是先读技术实现。\n- 边界情况:\n - 当改动主要是底层重构、文档或内部治理时,变化摘要仍需保持诚实,不要硬包装成夸大的用户收益。\n - 一个任务可能同时包含新增和修复,摘要需要支持多个动作词条目归到同一个短标题下。\n - 如果当前上下文不足以生成可信的用户视角摘要,调用方需要保留清晰回退,而不是输出胡乱包装的文案。\n- 失败模式:\n - commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。\n - 摘要为了好看而扭曲真实改动,把内部治理误写成用户可感知功能。\n - 三处落点风格不一致,用户在 commit、handoff 和 review 里看到三套不同写法。\n\n## 可视化图表\n\n### 产品流程\n\n```mermaid\nflowchart LR\n entry[\"入口触发<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。\"]\n experience[\"产品内步骤<br/>用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。\"]\n decision{\"决策点<br/>当改动主要是底层重构、文档或内部治理时,变化摘要仍需保持诚实,不要硬包装成夸大的用户收益。\"}\n success([\"成功结果<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…\"])\n failure[[\"失败与恢复<br/>commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。\"]]\n entry -->|\"用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd …\"| experience\n experience -->|\"用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组…\"| decision\n decision -->|\"把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不…\"| success\n decision -.->|\"commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等…\"| failure\n```\n\n### 架构\n\n```mermaid\nflowchart LR\n users[\"主要用户<br/>维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer · 使用 Open…\"]\n subgraph solution[\"方案边界\"]\n experience[\"Agent 运行层<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。 …\"]\n core[\"核心产品逻辑<br/>把 Feature Git Commit 的用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要能力,并落地到 loop …\"]\n integrations[\"依赖与集成<br/>依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 hand…\"]\n governance[[\"约束与可靠性<br/>新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。 · formatter 只依赖本地上下文,不新…\"]]\n delivery[\"验证与交接<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…\"]\n end\n users -->|\"用户让 Agent 完成某个 task 并选择 commit 时,OpenPr…\"| experience\n experience -->|\"产品动作与编排\"| core\n core -->|\"依赖与外部服务\"| integrations\n core -.->|\"策略、可靠性与合规\"| governance\n core -->|\"成功标准与交接\"| delivery\n integrations -->|\"运营就绪\"| delivery\n governance -.->|\"评审与确认\"| delivery\n```\n\n## 需求\n\n- 功能需求:\n - OpenPrd 提供共享变化摘要规则,支持短标题、动作词条目和用户视角描述。\n - loop 在未显式传入 message 时,优先基于 task 上下文生成用户视角 commit message。\n - handoff 导出内容增加变化摘要 / 版本说明字段,并写入 markdown 与 json 产物。\n - review 摘要 contract 明确要求标签和一句话说明优先表达新增、修复、优化、调整等变化结论。\n - 相关 skills、README 或生成引导同步提示这套默认写法。\n- 非功能需求:\n - 新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。\n - formatter 只依赖本地上下文,不新增外部网络、第三方 API 或额外付费依赖。\n - 输出在中英文混合项目里仍以当前用户语言为主,必要专有名词保持原样。\n- 业务规则:\n - 变化摘要优先描述用户能看到或感受到的变化,不优先描述代码实现细节。\n - 默认动作词优先使用新增、修复、优化、调整、移除;只有确有必要时才扩展。\n - 除非用户明确要求技术细节,否则 commit、handoff 和 review 摘要中避免出现文件名、函数名、参数值或内部模块术语。\n\n## 业务护栏\n\n- 成本来源:\n - 无新增第三方付费调用成本;变化摘要完全基于本地上下文生成。\n- 额度与限制:\n - 不引入新的用户额度或发布配额限制;沿用现有 commit / handoff 执行门禁。\n- 滥用防护:\n - 不把自动 push、自动 tag 或历史重写并入默认能力,避免摘要能力演变成高风险自动发布路径。\n- 监控信号:\n - 关注生成摘要是否频繁退回技术细节、是否在测试中出现失真或空摘要。\n- 报警阈值:\n - 如果三处输出中任一处无法生成可信摘要并持续回退,需要在测试中显式暴露。\n- 止损动作:\n - 当上下文不足或摘要质量不可信时,回退到现有安全文案,不自动包装。\n\n## 约束、依赖与风险\n\n- 技术约束:\n - 需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约。\n - 需要在 dirty workspace 中做窄改动,避免误伤正在进行的 test-strategy-router 等历史工作。\n- 合规要求:\n - 待补充\n- 依赖:\n - 依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 handoff 导出流程。\n- 假设:\n - 用户更看重人能快速扫懂的变化摘要,而不是技术完整性优先的底层说明。\n - 三处落点可以共用一套核心 formatter,再按场景做轻量渲染差异。\n- 风险:\n - 如果 formatter 规则过死,可能把一些纯技术任务描述得失真。\n - 如果只改一处而没有共用 contract,后续很快会再次分叉。\n- 开放问题:\n - 是否需要把默认动作词进一步 grow-aware,让项目级偏好后续可配置。\n\n## 类型专项模块\n\n- 类型: Agent 专项\n- humanAgentContract: Agent 可以根据 task、handoff 和 review 上下文生成变化摘要草案,但不能把自动生成的摘要当成发布事实之外的营销文案;高风险提交行为仍遵守现有执行门禁。\n- autonomyBoundary: Agent 可以修改 OpenPrd 的 formatter、skills、文档、测试和 worker 验证流程;不得自动推送、改写历史提交,或把 Feature Git Commit 的高风险 git 行为直接并入 OpenPrd 默认流。\n- toolBoundary: 仅使用本地 OpenPrd 代码、CLI、测试与 worker 会话完成实现和验证;本次不需要额外第三方文档调研。\n- stateModel: 共享变化摘要 contract 负责统一标题、动作词和描述规则;loop、handoff、review 三个调用面只做各自场景渲染与回退控制。\n- evalPlan: 先做本地单测和回归,再用 worker 在单独样例项目上跑一个最小任务,检查 commit、handoff 或 review 摘要输出是否符合预期。\n\n## 交接\n\n- 负责人: Codex\n- 下一步: 确认新的评审稿后生成 change 和 tasks,并按三处落点实现。\n- 目标系统: OpenSpec\n",
256
+ "digest": "e44eccd0d6fe1a7fd962ece31187f920e1a71de76122d15b826fb0a66d934d35",
257
+ "reviewPresentationMeta": {
258
+ "validatedAt": "2026-06-02T03:40:23.692Z",
259
+ "source": "/var/folders/tt/1k8vpmg15kg54d33jthh2q5c0000gn/T/tmp.LelQUlg4E2",
260
+ "presentationHash": "48fa606d3ff524483966f557133b2ad4603d35134baadbb2baa238cb6137fc7c",
261
+ "violationsHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
262
+ "validator": "openprd review-presentation"
263
+ }
264
+ }
@@ -0,0 +1,183 @@
1
+ # OpenPrd 用户视角变化摘要
2
+ > 语言规则:默认用简体中文生成 PRD、spec、tasks 和用户可见说明;除 PRD、OpenPrd、OpenSpec、API、SDK、CLI、TypeScript、JSON、HTTP、WebSocket、字段 key、命令名、品牌名、产品名和协议名等必要专有名词外,其余内容优先写成简体中文。
3
+ - 版本: v0002
4
+ - 负责人: Codex
5
+ - 产品类型: agent
6
+ - 模板包: agent
7
+ - 状态: synthesized
8
+ - 生成时间: 2026-06-02 11:39:56
9
+ ## 元信息
10
+
11
+ - 标题: OpenPrd 用户视角变化摘要
12
+ - 负责人: Codex
13
+ - 状态: classified
14
+ - 版本: v0002
15
+ - 产品类型: agent
16
+ - 日期: 2026-06-02
17
+
18
+ ## 问题
19
+
20
+ - 问题陈述: 把 Feature Git Commit 的用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要能力,并落地到 loop commit、handoff / 版本说明、review 摘要三处。
21
+ - 为什么是现在: 用户已经确认方向,希望 OpenPrd 默认就能写出更适合人阅读的变化说明,而不是把这类经验留在单独 skill 里。
22
+ - 证据:
23
+ - 待补充
24
+
25
+ ## 用户与相关方
26
+
27
+ - 主要用户:
28
+ - 维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer
29
+ - 使用 OpenPrd 执行任务并需要生成 commit、handoff 或版本说明的 Agent 使用者
30
+ - 次要用户:
31
+ - 待补充
32
+ - 相关方:
33
+ - 阅读交付变更、提交说明和版本说明的项目负责人
34
+ - 需要快速判断这次改动是否值得合入或发布的协作者
35
+
36
+ ## 目标与成功标准
37
+
38
+ - 目标:
39
+ - 把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不是停留在单个 commit skill。
40
+ - 让 OpenPrd 在 loop commit、handoff / 版本说明、review 摘要三处都能输出更适合人阅读的变化说明。
41
+ - 保持 OpenPrd 现有 workflow、review gate 和高风险提交门禁不变,只升级表达层。
42
+ - 成功指标:
43
+ - loop 默认 commit message 不再只输出 `Complete <task>` 这种执行口吻,而是优先输出短标题加动作词条目。
44
+ - handoff 导出结果包含可直接复用的变化摘要或版本说明片段,便于人快速扫读。
45
+ - review 摘要文案的标签和一句话说明更明显地站在用户视角表达新增、修复、优化、调整等变化。
46
+ - 完成后用单独 worker 跑一个样例项目,能看到这套变化摘要在真实任务中的输出效果。
47
+ - 验收目标:
48
+ - 新增一套共享变化摘要规则,明确标题、动作词、用户视角和避免技术细节的写法。
49
+ - loop commit、handoff / 版本说明、review 摘要三处都接入这套规则,并保留必要的回退逻辑。
50
+ - README、skills 或相关生成指引同步说明这套默认写法。
51
+ - 本地测试覆盖 formatter、调用方接线和回退路径。
52
+
53
+ ## 范围与非目标
54
+
55
+ - 范围内:
56
+ - 新增共享变化摘要 formatter 或 contract。
57
+ - 修改 loop task commit 默认文案生成。
58
+ - 修改 handoff 导出内容,加入面向人的变化摘要 / 版本说明区块。
59
+ - 修改 review presentation 或相关摘要 contract,让标签和一句话说明更贴近新增、修复、优化、调整等用户视角表达。
60
+ - 补充 README、skills、文档和测试。
61
+ - 完成后用 worker 在单独项目上跑一次最小验证。
62
+ - 范围外:
63
+ - 不把 Feature Git Commit 的自动 tag、自动 push、版本号阻断、敏感扫描整包并入 OpenPrd 默认工作流。
64
+ - 不改写历史 commit 或历史 handoff 产物。
65
+ - 不要求所有技术性内部说明都必须被改写成用户文案;只约束面向人的变化摘要层。
66
+
67
+ ## 场景与流程
68
+
69
+ - 主流程:
70
+ - 用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。
71
+ - 用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。
72
+ - 用户查看 review 评审摘要时,能先用短标签和一句话理解这次带来的用户可感知变化,而不是先读技术实现。
73
+ - 边界情况:
74
+ - 当改动主要是底层重构、文档或内部治理时,变化摘要仍需保持诚实,不要硬包装成夸大的用户收益。
75
+ - 一个任务可能同时包含新增和修复,摘要需要支持多个动作词条目归到同一个短标题下。
76
+ - 如果当前上下文不足以生成可信的用户视角摘要,调用方需要保留清晰回退,而不是输出胡乱包装的文案。
77
+ - 失败模式:
78
+ - commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。
79
+ - 摘要为了好看而扭曲真实改动,把内部治理误写成用户可感知功能。
80
+ - 三处落点风格不一致,用户在 commit、handoff 和 review 里看到三套不同写法。
81
+
82
+ ## 可视化图表
83
+
84
+ ### 产品流程
85
+
86
+ ```mermaid
87
+ flowchart LR
88
+ entry["入口触发<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。"]
89
+ experience["产品内步骤<br/>用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。"]
90
+ decision{"决策点<br/>当改动主要是底层重构、文档或内部治理时,变化摘要仍需保持诚实,不要硬包装成夸大的用户收益。"}
91
+ success(["成功结果<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…"])
92
+ failure[["失败与恢复<br/>commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。"]]
93
+ entry -->|"用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd …"| experience
94
+ experience -->|"用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组…"| decision
95
+ decision -->|"把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不…"| success
96
+ decision -.->|"commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等…"| failure
97
+ ```
98
+
99
+ ### 架构
100
+
101
+ ```mermaid
102
+ flowchart LR
103
+ users["主要用户<br/>维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer · 使用 Open…"]
104
+ subgraph solution["方案边界"]
105
+ experience["Agent 运行层<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。 …"]
106
+ core["核心产品逻辑<br/>把 Feature Git Commit 的用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要能力,并落地到 loop …"]
107
+ integrations["依赖与集成<br/>依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 hand…"]
108
+ governance[["约束与可靠性<br/>新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。 · formatter 只依赖本地上下文,不新…"]]
109
+ delivery["验证与交接<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…"]
110
+ end
111
+ users -->|"用户让 Agent 完成某个 task 并选择 commit 时,OpenPr…"| experience
112
+ experience -->|"产品动作与编排"| core
113
+ core -->|"依赖与外部服务"| integrations
114
+ core -.->|"策略、可靠性与合规"| governance
115
+ core -->|"成功标准与交接"| delivery
116
+ integrations -->|"运营就绪"| delivery
117
+ governance -.->|"评审与确认"| delivery
118
+ ```
119
+
120
+ ## 需求
121
+
122
+ - 功能需求:
123
+ - OpenPrd 提供共享变化摘要规则,支持短标题、动作词条目和用户视角描述。
124
+ - loop 在未显式传入 message 时,优先基于 task 上下文生成用户视角 commit message。
125
+ - handoff 导出内容增加变化摘要 / 版本说明字段,并写入 markdown 与 json 产物。
126
+ - review 摘要 contract 明确要求标签和一句话说明优先表达新增、修复、优化、调整等变化结论。
127
+ - 相关 skills、README 或生成引导同步提示这套默认写法。
128
+ - 非功能需求:
129
+ - 新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。
130
+ - formatter 只依赖本地上下文,不新增外部网络、第三方 API 或额外付费依赖。
131
+ - 输出在中英文混合项目里仍以当前用户语言为主,必要专有名词保持原样。
132
+ - 业务规则:
133
+ - 变化摘要优先描述用户能看到或感受到的变化,不优先描述代码实现细节。
134
+ - 默认动作词优先使用新增、修复、优化、调整、移除;只有确有必要时才扩展。
135
+ - 除非用户明确要求技术细节,否则 commit、handoff 和 review 摘要中避免出现文件名、函数名、参数值或内部模块术语。
136
+
137
+ ## 业务护栏
138
+
139
+ - 成本来源:
140
+ - 无新增第三方付费调用成本;变化摘要完全基于本地上下文生成。
141
+ - 额度与限制:
142
+ - 不引入新的用户额度或发布配额限制;沿用现有 commit / handoff 执行门禁。
143
+ - 滥用防护:
144
+ - 不把自动 push、自动 tag 或历史重写并入默认能力,避免摘要能力演变成高风险自动发布路径。
145
+ - 监控信号:
146
+ - 关注生成摘要是否频繁退回技术细节、是否在测试中出现失真或空摘要。
147
+ - 报警阈值:
148
+ - 如果三处输出中任一处无法生成可信摘要并持续回退,需要在测试中显式暴露。
149
+ - 止损动作:
150
+ - 当上下文不足或摘要质量不可信时,回退到现有安全文案,不自动包装。
151
+
152
+ ## 约束、依赖与风险
153
+
154
+ - 技术约束:
155
+ - 需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约。
156
+ - 需要在 dirty workspace 中做窄改动,避免误伤正在进行的 test-strategy-router 等历史工作。
157
+ - 合规要求:
158
+ - 待补充
159
+ - 依赖:
160
+ - 依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 handoff 导出流程。
161
+ - 假设:
162
+ - 用户更看重人能快速扫懂的变化摘要,而不是技术完整性优先的底层说明。
163
+ - 三处落点可以共用一套核心 formatter,再按场景做轻量渲染差异。
164
+ - 风险:
165
+ - 如果 formatter 规则过死,可能把一些纯技术任务描述得失真。
166
+ - 如果只改一处而没有共用 contract,后续很快会再次分叉。
167
+ - 开放问题:
168
+ - 是否需要把默认动作词进一步 grow-aware,让项目级偏好后续可配置。
169
+
170
+ ## 类型专项模块
171
+
172
+ - 类型: Agent 专项
173
+ - humanAgentContract: Agent 可以根据 task、handoff 和 review 上下文生成变化摘要草案,但不能把自动生成的摘要当成发布事实之外的营销文案;高风险提交行为仍遵守现有执行门禁。
174
+ - autonomyBoundary: Agent 可以修改 OpenPrd 的 formatter、skills、文档、测试和 worker 验证流程;不得自动推送、改写历史提交,或把 Feature Git Commit 的高风险 git 行为直接并入 OpenPrd 默认流。
175
+ - toolBoundary: 仅使用本地 OpenPrd 代码、CLI、测试与 worker 会话完成实现和验证;本次不需要额外第三方文档调研。
176
+ - stateModel: 共享变化摘要 contract 负责统一标题、动作词和描述规则;loop、handoff、review 三个调用面只做各自场景渲染与回退控制。
177
+ - evalPlan: 先做本地单测和回归,再用 worker 在单独样例项目上跑一个最小任务,检查 commit、handoff 或 review 摘要输出是否符合预期。
178
+
179
+ ## 交接
180
+
181
+ - 负责人: Codex
182
+ - 下一步: 确认新的评审稿后生成 change 和 tasks,并按三处落点实现。
183
+ - 目标系统: OpenSpec