@openprd/cli 0.1.11 → 0.1.18

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 (134) hide show
  1. package/.openprd/changes/adaptive-project-framing/.openprd.yaml +2 -0
  2. package/.openprd/changes/adaptive-project-framing/design.md +47 -0
  3. package/.openprd/changes/adaptive-project-framing/proposal.md +35 -0
  4. package/.openprd/changes/adaptive-project-framing/specs/agent-requirements/spec.md +16 -0
  5. package/.openprd/changes/adaptive-project-framing/task-events.jsonl +20 -0
  6. package/.openprd/changes/adaptive-project-framing/tasks.md +340 -0
  7. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/.openprd.yaml +2 -0
  8. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/design.md +34 -0
  9. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/proposal.md +23 -0
  10. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/specs/agent-requirements/spec.md +16 -0
  11. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/task-events.jsonl +14 -0
  12. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/tasks.md +238 -0
  13. package/.openprd/changes/loop-isolated-worktree-commit/.openprd.yaml +2 -0
  14. package/.openprd/changes/loop-isolated-worktree-commit/design.md +53 -0
  15. package/.openprd/changes/loop-isolated-worktree-commit/proposal.md +38 -0
  16. package/.openprd/changes/loop-isolated-worktree-commit/specs/agent-requirements/spec.md +16 -0
  17. package/.openprd/changes/loop-isolated-worktree-commit/task-events.jsonl +22 -0
  18. package/.openprd/changes/loop-isolated-worktree-commit/tasks.md +357 -0
  19. package/.openprd/changes/openprd/.openprd.yaml +2 -0
  20. package/.openprd/changes/openprd/design.md +46 -0
  21. package/.openprd/changes/openprd/proposal.md +36 -0
  22. package/.openprd/changes/openprd/specs/agent-requirements/spec.md +16 -0
  23. package/.openprd/changes/openprd/task-events.jsonl +23 -0
  24. package/.openprd/changes/openprd/tasks.md +242 -0
  25. package/.openprd/changes/pm-human-in-the-loop/.openprd.yaml +2 -0
  26. package/.openprd/changes/pm-human-in-the-loop/design.md +38 -0
  27. package/.openprd/changes/pm-human-in-the-loop/proposal.md +29 -0
  28. package/.openprd/changes/pm-human-in-the-loop/specs/agent-requirements/spec.md +16 -0
  29. package/.openprd/changes/pm-human-in-the-loop/task-events.jsonl +18 -0
  30. package/.openprd/changes/pm-human-in-the-loop/tasks.md +306 -0
  31. package/.openprd/changes/test-strategy-router/.openprd.yaml +2 -0
  32. package/.openprd/changes/test-strategy-router/design.md +65 -0
  33. package/.openprd/changes/test-strategy-router/proposal.md +45 -0
  34. package/.openprd/changes/test-strategy-router/specs/agent-requirements/spec.md +16 -0
  35. package/.openprd/changes/test-strategy-router/task-events.jsonl +1 -0
  36. package/.openprd/changes/test-strategy-router/tasks.md +132 -0
  37. package/.openprd/changes/verify-boundaries-and-historical-refresh/.openprd.yaml +2 -0
  38. package/.openprd/changes/verify-boundaries-and-historical-refresh/design.md +28 -0
  39. package/.openprd/changes/verify-boundaries-and-historical-refresh/proposal.md +23 -0
  40. package/.openprd/changes/verify-boundaries-and-historical-refresh/specs/agent-requirements/spec.md +16 -0
  41. package/.openprd/changes/verify-boundaries-and-historical-refresh/task-events.jsonl +11 -0
  42. package/.openprd/changes/verify-boundaries-and-historical-refresh/tasks.md +66 -0
  43. package/.openprd/changes/vibe-coding-dev-check/.openprd.yaml +2 -0
  44. package/.openprd/changes/vibe-coding-dev-check/design.md +37 -0
  45. package/.openprd/changes/vibe-coding-dev-check/proposal.md +28 -0
  46. package/.openprd/changes/vibe-coding-dev-check/specs/agent-requirements/spec.md +16 -0
  47. package/.openprd/changes/vibe-coding-dev-check/task-events.jsonl +18 -0
  48. package/.openprd/changes/vibe-coding-dev-check/tasks.md +306 -0
  49. package/.openprd/design/README.md +11 -6
  50. package/.openprd/design/README_EN.md +4 -1
  51. package/.openprd/design/active/asset-spec.md +6 -0
  52. package/.openprd/design/active/direction-plan.md +5 -5
  53. package/.openprd/design/active/selected-direction.md +2 -0
  54. package/.openprd/design/anti-slop.md +26 -1
  55. package/.openprd/design/assets/surface-presets.md +6 -0
  56. package/.openprd/design/checklists/ui-quality-gate.md +7 -0
  57. package/.openprd/design/lenses/frontend-lenses.md +28 -0
  58. package/.openprd/design/recipes/content-experience.md +8 -1
  59. package/.openprd/design/recipes/operational-tool.md +7 -0
  60. package/.openprd/design/recipes/product-launch.md +8 -1
  61. package/.openprd/design/templates/README.md +6 -3
  62. package/.openprd/design/templates/README_EN.md +6 -3
  63. package/.openprd/design/templates/ops-dashboard.html +8 -1
  64. package/.openprd/design/templates/product-launch.html +2 -1
  65. package/.openprd/design/themes/theme-catalog.json +23 -5
  66. package/.openprd/engagements/active/prd.md +103 -100
  67. package/.openprd/standards/config.json +7 -1
  68. package/AGENTS.md +13 -3
  69. package/README.md +107 -14
  70. package/README_EN.md +131 -13
  71. package/package.json +1 -1
  72. package/scripts/dev-check-wrapup-copy.mjs +46 -21
  73. package/skills/openprd-diagram-review/SKILL.md +27 -2
  74. package/skills/openprd-diagram-review/references/explanation-svg-patterns.md +131 -0
  75. package/skills/openprd-discovery-loop/SKILL.md +2 -2
  76. package/skills/openprd-frontend-design/SKILL.md +44 -20
  77. package/skills/openprd-frontend-design/references/design-asset-contract.md +6 -0
  78. package/skills/openprd-frontend-design/references/direction-engine.md +29 -4
  79. package/skills/openprd-harness/SKILL.md +22 -16
  80. package/skills/openprd-quality/SKILL.md +10 -8
  81. package/skills/openprd-requirement-intake/SKILL.md +2 -0
  82. package/skills/openprd-router/SKILL.md +2 -1
  83. package/skills/openprd-shared/SKILL.md +26 -16
  84. package/skills/openprd-standards/SKILL.md +4 -2
  85. package/src/agent-canonical-content.js +808 -0
  86. package/src/agent-integration.js +258 -777
  87. package/src/canvas-app.html.js +2910 -0
  88. package/src/canvas-i18n.js +274 -0
  89. package/src/canvas-workspace.js +2271 -0
  90. package/src/cli/args.js +72 -4
  91. package/src/cli/basic-print.js +3 -0
  92. package/src/cli/canvas-print.js +106 -0
  93. package/src/cli/doctor-print.js +20 -0
  94. package/src/cli/print.js +2 -0
  95. package/src/cli/quality-commands.js +222 -0
  96. package/src/cli/quality-print.js +28 -2
  97. package/src/cli/run-print.js +5 -0
  98. package/src/cli/workflow-print.js +3 -0
  99. package/src/codex-app-server-relay.js +251 -0
  100. package/src/codex-hook-runner-template.mjs +957 -59
  101. package/src/design-starter-support.js +2 -2
  102. package/src/design-starter.js +39 -3
  103. package/src/dev-standards.js +125 -10
  104. package/src/diagram-core.js +6 -20
  105. package/src/discovery.js +2 -8
  106. package/src/docs-compact.js +125 -0
  107. package/src/execution-strategy.js +1 -1
  108. package/src/fleet.js +9 -3
  109. package/src/guide.js +227 -0
  110. package/src/html-artifacts.js +428 -7
  111. package/src/knowledge.js +45 -11
  112. package/src/language-policy.js +63 -3
  113. package/src/learning-review.js +1 -1
  114. package/src/loop.js +1 -1
  115. package/src/openprd.js +68 -131
  116. package/src/openspec/change-validate.js +2 -2
  117. package/src/openspec/constants.js +6 -7
  118. package/src/openspec/execute.js +2 -2
  119. package/src/openspec/generate.js +318 -102
  120. package/src/openspec/migration.js +168 -0
  121. package/src/openspec/paths.js +1 -22
  122. package/src/prd-core.js +1 -1
  123. package/src/quality-visual-review.js +257 -14
  124. package/src/quality.js +46 -8
  125. package/src/review-presentation.js +60 -0
  126. package/src/run-harness.js +41 -3
  127. package/src/session-evidence.js +363 -0
  128. package/src/standards.js +64 -0
  129. package/src/test-strategy.js +7 -4
  130. package/src/visual-compare-centering.js +622 -0
  131. package/src/visual-compare-core.js +1123 -0
  132. package/src/visual-compare.js +620 -698
  133. package/src/workspace-core.js +94 -4
  134. package/src/workspace-workflow.js +46 -1
@@ -0,0 +1,242 @@
1
+ # 任务
2
+
3
+ - [x] T001.01 评审生成的 spec 覆盖
4
+ - type: governance
5
+ - done: 生成的 agent-requirements spec 符合 PRD 意图
6
+ - verify: openprd change . --validate --change openprd
7
+ - test-layer: manual
8
+ - test-size: manual
9
+ - test-scope: governance
10
+ - evidence-plan: openprd change . --validate --change openprd
11
+ - upgrade-reason: 治理任务以结构校验、评审确认和变更状态证据为主
12
+
13
+ - [x] T001.02 接通界面入口、导航与页面挂载
14
+ - type: implementation
15
+ - deps: T001.01
16
+ - done: 用户可以从正确入口进入对应界面,页面挂载与状态收尾已经接通。 涉及: 需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约 等 3 项。
17
+ - verify: openprd tasks . --change openprd --item T001.02 --evidence-required
18
+ - test-layer: integration, e2e
19
+ - test-size: large
20
+ - test-scope: user-flow
21
+ - evidence-plan: 主流程自动化、截图或 visual-compare 证据 + 本任务 verify 命令
22
+ - upgrade-reason: 触达用户可见路径,需要端到端或视觉级证据
23
+
24
+ - [x] T001.03 对齐共享契约与 Host API 调用边界
25
+ - type: implementation
26
+ - deps: T001.02
27
+ - done: 共享契约、Host API 和上下游调用边界已经对齐,后续功能可以直接接线。 涉及: 需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约。
28
+ - verify: openprd tasks . --change openprd --item T001.03 --evidence-required
29
+ - test-layer: unit, integration
30
+ - test-size: medium
31
+ - test-scope: api-contract
32
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
33
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
34
+
35
+ - [x] T001.04 实现OpenPrd 提供可选的项目级 release/version ledger,支持记录 current version、版本状态和版本内变化项
36
+ - type: implementation
37
+ - deps: T001.03
38
+ - done: 已完成:OpenPrd 提供可选的项目级 release/version ledger,支持记录 current version、版本状态和版本内变化项
39
+ - verify: openprd tasks . --change openprd --item T001.04 --evidence-required
40
+ - test-layer: unit, integration
41
+ - test-size: medium
42
+ - test-scope: cli-contract
43
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
44
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
45
+
46
+ - [x] T001.05 实现现有共享变化摘要规则支持把新增、修复、优化、调整、移除等条目关联到具体项目版本
47
+ - type: implementation
48
+ - deps: T001.04
49
+ - done: 已完成:现有共享变化摘要规则支持把新增、修复、优化、调整、移除等条目关联到具体项目版本
50
+ - verify: openprd tasks . --change openprd --item T001.05 --evidence-required
51
+ - test-layer: unit, integration
52
+ - test-size: medium
53
+ - test-scope: cli-contract
54
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
55
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
56
+
57
+ - [x] T001.06 实现handoff 与 release notes 导出优先从项目版本轨道读取对应版本的变化条目
58
+ - type: implementation
59
+ - deps: T001.05
60
+ - done: 已完成:handoff 与 release notes 导出优先从项目版本轨道读取对应版本的变化条目
61
+ - verify: openprd tasks . --change openprd --item T001.06 --evidence-required
62
+ - test-layer: unit, integration
63
+ - test-size: medium
64
+ - test-scope: cli-contract
65
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
66
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
67
+
68
+ - [x] T001.07 实现当版本轨道已启用且用户通过 OpenPrd 显式执行 commit 时,commit 流可以读取当前版本号并辅助创建或更新本地版本 tag
69
+ - type: implementation
70
+ - deps: T001.06
71
+ - done: 已完成:当版本轨道已启用且用户通过 OpenPrd 显式执行 commit 时,commit 流可以读取当前版本号并辅助创建或更新本地版本 tag
72
+ - verify: openprd tasks . --change openprd --item T001.07 --evidence-required
73
+ - test-layer: unit, integration
74
+ - test-size: medium
75
+ - test-scope: cli-contract
76
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
77
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
78
+
79
+ - [x] T001.08 实现当用户未更新版本号时,后续变化默认继续累计到当前版本;当用户显式更新版本号后,新的变化进入下一个版本
80
+ - type: implementation
81
+ - deps: T001.07
82
+ - done: 已完成:当用户未更新版本号时,后续变化默认继续累计到当前版本;当用户显式更新版本号后,新的变化进入下一个版本
83
+ - verify: openprd tasks . --change openprd --item T001.08 --evidence-required
84
+ - test-layer: unit, integration
85
+ - test-size: medium
86
+ - test-scope: cli-contract
87
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
88
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
89
+
90
+ - [x] T001.09 打通主流程闭环:用户在项目里启用版本轨道后,OpenPrd 记录当前版本号,例如 0.1.23,并把后续变化条目累计到该版本下 等 4 项
91
+ - type: implementation
92
+ - deps: T001.08
93
+ - done: 主流程关键节点已经打通,用户可以按预期从入口走到结果收尾。涉及: 用户在项目里启用版本轨道后,OpenPrd 记录当前版本号,例如 0.1.23,并把后续变化条目累计到该版本下 等 4 项。
94
+ - verify: openprd tasks . --change openprd --item T001.09 --evidence-required
95
+ - test-layer: integration, e2e
96
+ - test-size: large
97
+ - test-scope: user-flow
98
+ - evidence-plan: 主流程自动化、截图或 visual-compare 证据 + 本任务 verify 命令
99
+ - upgrade-reason: 触达用户可见路径,需要端到端或视觉级证据
100
+
101
+ - [x] T001.10 验证新增项目级 release/version ledger,支持 current version、版本状态和版本内变化项存储
102
+ - type: verification
103
+ - deps: T001.09
104
+ - done: 已验证:新增项目级 release/version ledger,支持 current version、版本状态和版本内变化项存储
105
+ - verify: openprd tasks . --change openprd --item T001.10 --evidence-required
106
+ - test-layer: unit, integration
107
+ - test-size: medium
108
+ - test-scope: cli-contract
109
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
110
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
111
+
112
+ - [x] T001.11 验证现有变化摘要层继续复用新增、修复、优化、调整、移除等短文案动作词,并能挂到具体项目版本下
113
+ - type: verification
114
+ - deps: T001.10
115
+ - done: 已验证:现有变化摘要层继续复用新增、修复、优化、调整、移除等短文案动作词,并能挂到具体项目版本下
116
+ - verify: openprd tasks . --change openprd --item T001.11 --evidence-required
117
+ - test-layer: unit, integration
118
+ - test-size: medium
119
+ - test-scope: cli-contract
120
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
121
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
122
+
123
+ - [x] T001.12 验证commit 流在启用版本轨道且用户明确执行时,可以读取当前版本并辅助创建或更新本地版本 tag;同版本多次提交时 tag 可移动到最新 commit
124
+ - type: verification
125
+ - deps: T001.11
126
+ - done: 已验证:commit 流在启用版本轨道且用户明确执行时,可以读取当前版本并辅助创建或更新本地版本 tag;同版本多次提交时 tag 可移动到最新 commit
127
+ - verify: openprd tasks . --change openprd --item T001.12 --evidence-required
128
+ - test-layer: unit, integration
129
+ - test-size: medium
130
+ - test-scope: cli-contract
131
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
132
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
133
+
134
+ - [x] T001.13 验证README、skills、handoff/release 导出和测试同步说明版本轨道与 tag 协同规则
135
+ - type: verification
136
+ - deps: T001.12
137
+ - done: 已验证:README、skills、handoff/release 导出和测试同步说明版本轨道与 tag 协同规则
138
+ - verify: openprd tasks . --change openprd --item T001.13 --evidence-required
139
+ - test-layer: manual
140
+ - test-size: manual
141
+ - test-scope: docs
142
+ - evidence-plan: openprd tasks . --change openprd --item T001.13 --evidence-required
143
+ - upgrade-reason: 文档任务以标准校验和人工审查证据为主
144
+
145
+ - [x] T001.14 回归非功能约束:版本轨道是可选辅助信息,不应破坏现有没有版本管理习惯的项目流程 等 2 项
146
+ - type: verification
147
+ - deps: T001.13
148
+ - done: 非功能约束已经回归确认。涉及: 版本轨道是可选辅助信息,不应破坏现有没有版本管理习惯的项目流程 等 2 项。
149
+ - verify: openprd tasks . --change openprd --item T001.14 --evidence-required
150
+ - test-layer: unit, integration
151
+ - test-size: medium
152
+ - test-scope: cli-contract
153
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
154
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
155
+
156
+ - [x] T001.15 回归非功能约束:现有显式 commit message、自定义 handoff 内容和已有版本体系优先级不能被新能力静默覆盖 等 2 项
157
+ - type: verification
158
+ - deps: T001.14
159
+ - done: 非功能约束已经回归确认。涉及: 现有显式 commit message、自定义 handoff 内容和已有版本体系优先级不能被新能力静默覆盖 等 2 项。
160
+ - verify: openprd tasks . --change openprd --item T001.15 --evidence-required
161
+ - test-layer: unit, integration
162
+ - test-size: medium
163
+ - test-scope: cli-contract
164
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
165
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
166
+
167
+ - [x] T001.16 回归边界条件与失败处理:边界情况:项目可能已经有自己的一套版本号规则,OpenPrd 需要允许手动修正当前版本号,而不是强推默认策略 等 8 项
168
+ - type: verification
169
+ - deps: T001.15
170
+ - done: 边界条件与失败处理已经回归确认。涉及: 边界情况:项目可能已经有自己的一套版本号规则,OpenPrd 需要允许手动修正当前版本号,而不是强推默认策略 等 8 项。
171
+ - verify: openprd tasks . --change openprd --item T001.16 --evidence-required
172
+ - test-layer: unit, integration
173
+ - test-size: medium
174
+ - test-scope: cli-contract
175
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
176
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
177
+
178
+ - [x] T001.17 验证成本与额度护栏
179
+ - type: verification
180
+ - deps: T001.16
181
+ - done: 已验证免费、试用或低权限用户不能绕过额度、并发、频率或总量限制
182
+ - verify: openprd tasks . --change openprd --item T001.17 --evidence-required
183
+ - test-layer: integration, security
184
+ - test-size: medium
185
+ - test-scope: security
186
+ - evidence-plan: 正向路径 + 越权、额度、并发或敏感信息负向验证
187
+ - upgrade-reason: 触达权限、安全、成本或滥用边界,需要至少集成级证据
188
+
189
+ - [x] T001.18 验证滥用与越权路径
190
+ - type: verification
191
+ - deps: T001.17
192
+ - done: 已覆盖重复请求、并发请求、越权身份和异常恢复等负向场景
193
+ - verify: openprd tasks . --change openprd --item T001.18 --evidence-required
194
+ - test-layer: integration, security
195
+ - test-size: medium
196
+ - test-scope: security
197
+ - evidence-plan: 正向路径 + 越权、额度、并发或敏感信息负向验证
198
+ - upgrade-reason: 触达权限、安全、成本或滥用边界,需要至少集成级证据
199
+
200
+ - [x] T001.19 验证成本监控、报警和止损
201
+ - type: verification
202
+ - deps: T001.18
203
+ - done: 已确认用量或成本信号、报警阈值和人工/自动止损动作可执行
204
+ - verify: openprd tasks . --change openprd --item T001.19 --evidence-required
205
+ - test-layer: integration, security
206
+ - test-size: medium
207
+ - test-scope: security
208
+ - evidence-plan: 正向路径 + 越权、额度、并发或敏感信息负向验证
209
+ - upgrade-reason: 触达权限、安全、成本或滥用边界,需要至少集成级证据
210
+
211
+ - [x] T001.20 维护 docs/basic 项目基础文档
212
+ - type: documentation
213
+ - deps: T001.19
214
+ - done: 已检查 docs/basic 是否缺失或因本次需求、流程、结构、依赖、产品行为变化而过期;若涉及后端、脚本、Agent 或工具链变更,已同步评估 CLI 与 API 接入面,并在 backend-structure.md 中记录事实或不适用原因;需要更新的基础文档已同步
215
+ - verify: openprd standards . --verify
216
+ - test-layer: manual
217
+ - test-size: manual
218
+ - test-scope: docs
219
+ - evidence-plan: openprd standards . --verify
220
+ - upgrade-reason: 文档任务以标准校验和人工审查证据为主
221
+
222
+ - [x] T001.21 更新文件说明书和文件夹 README
223
+ - type: documentation
224
+ - deps: T001.20
225
+ - done: 本次变更涉及的文件说明书和文件夹 README 已检查;缺失的已补齐,过期的已更新
226
+ - verify: openprd standards . --verify
227
+ - test-layer: manual
228
+ - test-size: manual
229
+ - test-scope: docs
230
+ - evidence-plan: openprd standards . --verify
231
+ - upgrade-reason: 文档任务以标准校验和人工审查证据为主
232
+
233
+ - [x] T001.22 运行 OpenPrd spec 校验
234
+ - type: governance
235
+ - deps: T001.21
236
+ - done: 生成的 change 通过 OpenPrd 校验
237
+ - verify: openprd change . --validate --change openprd
238
+ - test-layer: manual
239
+ - test-size: manual
240
+ - test-scope: governance
241
+ - evidence-plan: openprd change . --validate --change openprd
242
+ - upgrade-reason: 治理任务以结构校验、评审确认和变更状态证据为主
@@ -0,0 +1,2 @@
1
+ schema: openprd.change.v1
2
+ generatedFrom: v0008
@@ -0,0 +1,38 @@
1
+ # 设计
2
+
3
+ ## 背景
4
+
5
+ 用户明确反馈不少人用了 OpenPrd 觉得疑惑它到底是干嘛的,希望有一套软件工程视角的标准流程引导;画布做了一半,需要继续对标白板工具补齐人机协同能力。
6
+
7
+ ## 目标
8
+
9
+ - 产品经理任何时刻都能一眼看到自己处在 7 步标准流程的哪一步和下一步动作
10
+ - 画布接入评审方向导入与流程位置提示,让 PM 在白板上完成方向标注并把结论发回 Agent
11
+
12
+ ## 范围
13
+
14
+ - 新增 openprd guide 命令:7 步标准流程 + 当前位置 + 下一步动作(PM 语言,支持 --json)
15
+ - review.html 顶部新增流程位置条(stepper)
16
+ - 画布服务端新增 /api/review-directions 与 /api/guide
17
+ - 画布前端新增导入评审方向按钮与流程位置条
18
+
19
+ ## 约束
20
+
21
+ - 改动集中在 src/standards.js、src/quality.js、src/openspec/change-lifecycle.js、src/review-presentation.js、src/html-artifacts.js,新增 src/docs-compact.js;skills 生成源同步 openprd-shared / openprd-frontend-design / command-catalog。
22
+ - 提交与状态写回不能泄露用户本地无关改动或敏感信息。
23
+ - Codex 原生 imagegen(生成 3 方向交互稿图片);现有 review artifact 渲染与 hash 校验管线。
24
+
25
+ ## 业务护栏
26
+
27
+ - 成本来源: imagegen 每方向一次调用,共 3 次;报告清理为本地文件操作无外部成本。
28
+ - 额度限制: docs-compact 单次只处理 docs/basic 下的标准文档;retention 默认保留最近 30 份报告可配置。
29
+ - 滥用防护: docs-compact 重写稿默认写到 sibling draft 待确认,不直接覆盖原文档;retention 不触碰 evidence 目录中被 latest 报告引用的文件。
30
+ - 监控信号: standards verify 输出 docsQuality 结果;doctor 输出 .openprd 体积与报告数量提示。
31
+ - 报警阈值: 单行超 300 字符 warning;prd.md 落后最新版本超过 20 个版本 warning;quality/reports 超过 200 份提示清理。
32
+ - 止损动作: 任一清理动作失败即中止并保留原状;归档失败回退为仅提示不移动。
33
+
34
+ ## 风险与开放问题
35
+
36
+ - 假设: imagegen 由 Codex 原生 Image 2 提供,OpenPrd 只消费图片路径;review.html 静态打开,选择结果通过现有 canvas/browser handoff 或 review --mark 通道回传;巨行阈值默认 300 字符可配置。
37
+ - 风险: 流程步骤定义与既有 lane/gate 概念不完全一一对应,guide 只做展示层推断,不改门禁行为
38
+ - 问题: 画布方向卡片是否需要内置投票/评分组件,留到下一轮看使用反馈
@@ -0,0 +1,29 @@
1
+ # PM 流程引导与画布评审协同(Human-in-the-loop 升级)
2
+
3
+ ## 背景与原因
4
+
5
+ 产品经理使用 OpenPrd 时缺少一条看得懂的标准流程指引,经常不知道自己处在需求到收口的哪一步、下一步该做什么;对话协同画布目前是通用白板,没有接入评审方向选择等 OpenPrd 流程环节,Human-in-the-loop 在工具之间断开。
6
+
7
+ ## 变更内容
8
+
9
+ - 新增 openprd guide 命令:7 步标准流程 + 当前位置 + 下一步动作(PM 语言,支持 --json)
10
+ - review.html 顶部新增流程位置条(stepper)
11
+ - 画布服务端新增 /api/review-directions 与 /api/guide
12
+ - 画布前端新增导入评审方向按钮与流程位置条
13
+ - guide 命令基于工作区状态推断 7 步流程位置
14
+ - review.html 渲染 stepper
15
+ - canvas /api/review-directions 返回方向元数据与图片
16
+ - canvas 前端导入方向卡片组
17
+ - 在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据。
18
+
19
+ ## 能力范围
20
+
21
+ - `agent-requirements`: PM 流程引导与画布评审协同(Human-in-the-loop 升级) 需求。
22
+
23
+ ## 影响范围
24
+
25
+ - 主要用户: 用 Vibe Coding 方式做产品的产品经理
26
+ - 成本来源: imagegen 每方向一次调用,共 3 次;报告清理为本地文件操作无外部成本。
27
+ - 额度限制: docs-compact 单次只处理 docs/basic 下的标准文档;retention 默认保留最近 30 份报告可配置。
28
+ - 依赖: Codex 原生 imagegen(生成 3 方向交互稿图片);现有 review artifact 渲染与 hash 校验管线。
29
+ - 风险: 流程步骤定义与既有 lane/gate 概念不完全一一对应,guide 只做展示层推断,不改门禁行为
@@ -0,0 +1,16 @@
1
+ ## 新增需求
2
+
3
+ ### 需求:PM 流程引导与画布评审协同(Human-in-the-loop 升级)
4
+ 产品经理使用 OpenPrd 时缺少一条看得懂的标准流程指引,经常不知道自己处在需求到收口的哪一步、下一步该做什么;对话协同画布目前是通用白板,没有接入评审方向选择等 OpenPrd 流程环节,Human-in-the-loop 在工具之间断开。
5
+
6
+ #### 场景:主流程成功
7
+ - **当** PM 打开终端或让 Agent 运行 openprd guide,看到 7 步流程和当前位置,按提示进入下一步
8
+ - **则** 在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据。
9
+
10
+ #### 场景:边界情况保持可见
11
+ - **当** 工作区还没有任何需求版本时 guide 显示第 1 步并给出起步动作
12
+ - **则** 产品应保持该情况明确可见,以支持实现和验证
13
+
14
+ #### 场景:失败模式得到处理
15
+ - **当** 方向图片文件缺失时导入跳过该方向并提示,不中断其他方向导入
16
+ - **则** 产品应提供有边界且可评审的结果
@@ -0,0 +1,18 @@
1
+ {"version":1,"at":"2026-07-03 17:36:34","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.01","taskTitle":"评审生成的 spec 覆盖","ok":true,"verify":null,"evidence":"openprd change --validate 通过;spec 覆盖 guide/stepper/canvas 三个能力块","notes":null}
2
+ {"version":1,"at":"2026-07-03 17:36:47","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.02","taskTitle":"接通界面入口、导航与页面挂载","ok":true,"verify":null,"evidence":"画布右栏新增评审协同区,guide 进度与导入按钮已挂载;review.html 顶部阶段条已接入 renderReviewPage","notes":null}
3
+ {"version":1,"at":"2026-07-03 17:36:47","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.03","taskTitle":"补齐日志、诊断与可观测性信号","ok":true,"verify":null,"evidence":"guide/canvas API 失败路径返回结构化 ok:false+error;画布导入失败有用户可读状态提示","notes":null}
4
+ {"version":1,"at":"2026-07-03 17:36:47","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.04","taskTitle":"实现guide 命令基于工作区状态推断 7 步流程位置","ok":true,"verify":null,"evidence":"src/guide.js 实现 7 步推断;test/openprd-guide-canvas.test.js 前 2 个用例覆盖 fresh/review/direction/tasks 阶段流转","notes":null}
5
+ {"version":1,"at":"2026-07-03 17:36:47","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.05","taskTitle":"实现review.html 渲染 stepper","ok":true,"verify":null,"evidence":"renderReviewStageRail 渲染阶段条,方向步按 designDirections 动态出现;测试用例 5 覆盖有/无方向两种渲染","notes":null}
6
+ {"version":1,"at":"2026-07-03 17:36:47","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.06","taskTitle":"实现canvas /api/review-directions 返回方向元数据与图片","ok":true,"verify":null,"evidence":"canvas-workspace buildReviewDirectionsPayload + GET /api/review-directions 返回方向元数据与 dataURL 图片;测试用例 3/4 覆盖","notes":null}
7
+ {"version":1,"at":"2026-07-03 17:36:47","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.07","taskTitle":"实现canvas 前端导入方向卡片组","ok":true,"verify":null,"evidence":"canvas-app importReviewDirectionsToCanvas 导入方向卡片组(框+标题+说明+图片,选中高亮),渲染冒烟通过","notes":null}
8
+ {"version":1,"at":"2026-07-03 17:41:31","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.08","taskTitle":"打通主流程闭环:PM 打开终端或让 Agent 运行 openprd guide,看到 7 步流程和当前位置,按提示进入下一步 等 3 项","ok":true,"verify":null,"evidence":"/tmp/openprd-desktop-demo 端到端演示:guide 从第 1 步走到第 3 步;review.html 阶段条+3 方向卡浏览器截图;画布导入 3 方向卡成功(截图证据见本轮对话)","notes":null}
9
+ {"version":1,"at":"2026-07-03 17:41:31","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.09","taskTitle":"验证在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据","ok":true,"verify":null,"evidence":"npm test 241/241 通过(含 test/openprd-guide-canvas.test.js 5 例);桌面任务在 /tmp/openprd-desktop-demo 实测 guide/review/canvas 全链路","notes":null}
10
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.10","taskTitle":"回归非功能约束:不新增外部依赖 / guide 与画布 API 只读工作区状态,不写状态","ok":true,"verify":null,"evidence":"无新增外部依赖;guide 与 /api/guide、/api/review-directions 全部只读,不写工作区状态","notes":null}
11
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.11","taskTitle":"回归非功能约束:全部文案用 PM 能看懂的普通语言","ok":true,"verify":null,"evidence":"guide 输出、阶段条、画布评审协同区文案均为 PM 可读普通语言,无内部术语","notes":null}
12
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.12","taskTitle":"回归边界条件与失败处理:边界情况:工作区还没有任何需求版本时 guide 显示第 1 步并给出起步动作 等 3 项","ok":true,"verify":null,"evidence":"空工作区 guide 显示第 1 步并给起步动作(测试用例 1);无方向时 /api/review-directions 返回 ok:false(测试用例 4);无版本时 reason=no-version","notes":null}
13
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.13","taskTitle":"验证成本与额度护栏","ok":true,"verify":null,"evidence":"本能力零外部成本:无模型调用、无第三方 API,纯本地文件读取","notes":null}
14
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.14","taskTitle":"验证滥用与越权路径","ok":true,"verify":null,"evidence":"canvas API 仅绑定 127.0.0.1 本地服务;图片路径解析强制限制在项目根内,杜绝路径穿越","notes":null}
15
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.15","taskTitle":"验证成本监控、报警和止损","ok":true,"verify":null,"evidence":"无消耗型成本,无需报警与止损;质量报告 retention 沿用上轮机制","notes":null}
16
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.16","taskTitle":"维护 docs/basic 项目基础文档","ok":true,"verify":null,"evidence":"docs/basic prd/app-flow/backend-structure/file-structure/tech-stack 已补 guide 与画布评审协同","notes":null}
17
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.17","taskTitle":"更新文件说明书和文件夹 README","ok":true,"verify":null,"evidence":"file-structure.md 已加 src/guide.js 条目;命令目录 agent-integration.js 已补 guide 与画布评审协同","notes":null}
18
+ {"version":1,"at":"2026-07-03 17:41:32","changeId":"pm-human-in-the-loop","action":"advance","taskId":"T001.18","taskTitle":"运行 OpenPrd spec 校验","ok":true,"verify":null,"evidence":"openprd change --validate 通过","notes":null}