@openprd/cli 0.1.0 → 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 (138) 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 +402 -441
  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 +39 -23
  73. package/skills/openprd-requirement-intake/references/prd-template-lenses.md +6 -6
  74. package/skills/openprd-requirement-intake/references/routing-rubric.md +22 -8
  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/self-update.js +1 -1
  131. package/src/session-binding.js +40 -3
  132. package/src/session-registry.js +159 -0
  133. package/src/standards.js +5 -3
  134. package/src/test-strategy.js +386 -0
  135. package/src/visual-compare.js +915 -34
  136. package/src/work-unit-migration.js +5 -1
  137. package/src/workspace-core.js +343 -19
  138. package/src/workspace-workflow.js +538 -134
package/README_CN.md CHANGED
@@ -1,583 +1,9 @@
1
1
  # OpenPrd
2
2
 
3
- [English](./README.md) | 简体中文
3
+ 简体中文 | [English](./README_EN.md)
4
4
 
5
- > 面向需求澄清、HTML 优先评审、图形确认与交接的 AI 原生 PRD 工作区与 CLI
5
+ > 默认简体中文 README 已迁移到 [README.md](./README.md)
6
6
 
7
- [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
8
- [![Node.js](https://img.shields.io/badge/node-%3E%3D20.19.0-339933.svg)](https://nodejs.org/)
9
- [![GitHub stars](https://img.shields.io/github/stars/mileson/openprd?style=social)](https://github.com/mileson/openprd)
7
+ 如果你是从旧链接进入,这个文件会继续保留为兼容入口。最新中文文档请直接查看 [README.md](./README.md)
10
8
 
11
- OpenPrd 是一个轻量但结构化的 **PRD harness**。它不只是“生成一份文档”,而是帮助团队和 Agent 完成:
12
-
13
- - 需求澄清
14
- - 用户确认
15
- - 图形化评审
16
- - 冻结前关卡控制
17
- - 面向执行系统的结构化交接
18
-
19
- 它把关键确认点沉淀成稳定的 HTML 产物,而不是把版本状态散落在聊天记录或终端输出里。
20
-
21
- ![OpenPrd 能力总览](./docs/assets/openprd-capability-overview-zh.png)
22
-
23
- ## 适合什么场景
24
-
25
- 如果你希望:
26
-
27
- - 在写 PRD 前先澄清需求
28
- - 区分用户确认、项目已有事实和 Agent 推断
29
- - 在 freeze 前插入架构图 / 流程图评审
30
- - 让 Agent 遵循 repo 内置的协同规则
31
-
32
- 那么 OpenPrd 就很适合你。
33
-
34
- ## OpenPrd 和 OpenSpec / Superpowers 有什么不一样
35
-
36
- OpenPrd 解决的问题,不只是“把 spec 写出来”,也不只是“把代码跑起来”,而是让
37
- 人和 Agent 在需求、评审、执行、交付这些关键节点上始终对齐。
38
-
39
- | 工具 | 重心 | 用户主要看到的产物 | 更适合什么 |
40
- |------|------|--------------------|------------|
41
- | **OpenPrd** | 需求澄清、HTML 优先协作、交付门禁 | `review.html`、学习阅读器、质量报告、图示、结构化 change/task 状态 | 需要把人机协同、评审确认、执行推进和交付判断串起来的团队 |
42
- | **OpenSpec** | spec / change 生命周期 | Markdown proposal、spec、design、tasks | 更关注 spec 增量治理和变更编排的团队 |
43
- | **Superpowers** | skill 驱动的编码执行流 | skills、plans、worktree / subagent 流程、代码评审检查点 | 更关注 AI Agent 如何规划、编码、review、收尾的工程团队 |
44
-
45
- OpenPrd 最有特色的地方,在于它把“这次到底在做什么、谁来确认、凭什么继续往下走”
46
- 做成稳定可见的协作面,而不是只留在 spec 文件或 prompt 流程里。
47
-
48
- ## 典型真实场景
49
-
50
- 最近 30 天的 Codex 项目记录里,OpenPrd 反复出现在几类连续工作里:模糊需求澄清、
51
- 已有产品流程改造、发布与交付、线上问题闭环,以及把一次完成的工作整理成可复用学习资料。
52
-
53
- | 场景 | 为什么这里更像 OpenPrd 的强项 | 主要产物 |
54
- |------|--------------------------------|----------|
55
- | 模糊产品需求,先别急着写代码 | 先澄清,再区分用户确认事实与 Agent 推断,最后把结果沉淀成稳定评审页。 | `clarify`、`capture`、`synthesize`、`review.html` |
56
- | 已有流程或登录入口改造 | 先从仓库与运行态重建当前事实,再决定下一步 change,而不是直接拍脑袋改。 | `discovery`、`diagram`、`review.html`、`change` |
57
- | 流程图、界面或架构确认 | 把理解差异放到图示和可评审产物里,而不是埋在聊天记录里。 | `diagram`、`visual-compare`、左右对比 JPG |
58
- | 长程 Agent 执行链路 | 把确认后的工作拆成按依赖可执行的小任务,每次新会话只推进一个任务并带验证门禁。 | `tasks`、`loop`、任务提示词、进度日志、验证报告 |
59
- | 发布、开源、交接前收口 | 让“现在能不能交付”变成有证据的显式判断,而不是靠感觉。 | `quality`、`run --verify`、`doctor`、`handoff` |
60
- | 一次需求或修复做完后沉淀学习资料 | 把最终需求、过程判断和结果整理成新成员可以直接学习的资料。 | 学习阅读器、`.openprd/knowledge/skills/`、docs 同步 |
61
-
62
- ## HTML 优先协作产物
63
-
64
- OpenPrd 会生成可以直接分享的 HTML 面板,让产品、研发和 Agent
65
- 围绕同一份稳定 artifact 协作,而不是各自回放聊天记录或命令输出。
66
-
67
- ### `review.html`
68
-
69
- 把当前需求版本整理成可评审页面,适合先给产品、研发或负责人确认“这次到底在做什么”。
70
-
71
- ![OpenPrd review HTML](./docs/assets/openprd-review-html.png)
72
-
73
- ### 学习阅读器
74
-
75
- 把一次需求、修复或协作方法整理成图文学习资料,方便新成员理解“这套流程为什么这样设计”。
76
-
77
- ![OpenPrd learning HTML](./docs/assets/openprd-learning-html.png)
78
-
79
- ### 质量回归报告
80
-
81
- 把准备就绪状态、必需门禁、验证材料和仍需人工判断的点放到一个可读页面里,再决定是否继续交付或发布。
82
-
83
- ![OpenPrd quality HTML](./docs/assets/openprd-quality-html.png)
84
-
85
- ### 效果图与截图拼图对比,自动优化
86
-
87
- 把效果图和实现截图放进同一张左右对比图里,适合登录入口改造、条款页本地化、弹窗复刻这类阶段性评审。
88
-
89
- ![效果图与截图拼图对比,自动优化](./docs/assets/openprd-visual-compare-case-study-zh.png)
90
-
91
- ## 自我成长机制
92
-
93
- OpenPrd 会沿着两条看得见的循环,越用越贴合你们的协作方式。一条循环把真实项目里反复验证过的做法沉淀成可复用的 `项目级 Skill`;另一条循环把不同场景下更合适的协作设置沉淀成 `动态参数配置`,让下次启动时直接带上更合适的默认做法。
94
-
95
- ![OpenPrd 自我成长机制](./docs/assets/openprd-self-evolving-mechanisms-zh.png)
96
-
97
- ### 场景一:项目级 Skill
98
-
99
- 当团队在真实工作里反复确认同一种判断,OpenPrd 不会让它继续散落在聊天记录里,而是把它留在项目身边。
100
-
101
- - 例子:一次登录入口改造里,团队确认“登录、注册、找回密码都走官网”。
102
- - 下次能直接复用什么:相关页面要一起检查、发布前要核对哪些入口和文案、类似需求应该沿着什么路径推进。
103
- - 为什么有用:下一次类似需求不会再从零开始,新成员接手也能直接照着做。
104
-
105
- ### 场景二:动态参数配置
106
-
107
- 不是每个项目都该用同一套起手方式。OpenPrd 会把不同场景下更合适的协作设置留住,并在下次自动带回来。
108
-
109
- - 例子:一个新项目会先澄清目标和范围,一个接手中的旧项目会先还原现状和改动边界。
110
- - 下次会自动带上什么:先问什么、先看什么、交付前先收什么材料。
111
- - 为什么有用:团队不用每次重新解释“这类项目该怎么开场”,而是直接从更合适的默认方式开始。
112
-
113
- ## 功能
114
-
115
- - **Clarification-first**:`clarify -> capture -> classify -> interview -> synthesize -> diagram -> freeze -> handoff`
116
- - **场景感知协同**:区分空项目冷启动、已有项目首次接入、持续推进中的 workspace
117
- - **自我成长机制**:把真实项目里确认过的做法沉淀成可复用的 `项目级 Skill`,并按场景沉淀 `动态参数配置`
118
- - **来源感知采集**:支持 `user-confirmed` / `project-derived` / `agent-inferred` / `agent-normalized`
119
- - **图形评审工件**:支持 `architecture` 和 `product-flow`
120
- - **界面视觉对比工件**:把效果图与实现截图合成左右对比 JPG,用于阶段性复刻评审
121
- - **Contract 驱动图渲染**:支持从 JSON contract 显式渲染
122
- - **Review status**:支持 `pending-confirmation` / `confirmed` / `needs-revision`
123
- - **策略化评审门禁**:PRD review 记录和执行意图分离;不能把“可以开做”当成任意评审稿的 `review --mark confirmed`
124
- - **OpenPrd 发现模式**:为已有项目、参考项目或不清晰需求初始化可持续推进的覆盖状态
125
- - **项目标准化**:初始化并验证 `docs/basic/`、文件说明书模板和文件夹 README 模板
126
- - **OpenPrd change 与任务执行**:从 PRD 快照生成 change 文件,校验结构,沉淀 accepted specs,归档变更,并按依赖顺序推进结构化任务
127
- - **长程 Agent Loop**:把 change 任务转成“一次新会话只做一个任务”的 Codex / Claude 执行提示词,并沉淀验证、进度日志和可选任务 commit
128
- - **默认 Agent 接入**:从一套 OpenPrd 源生成 Codex、Claude、Cursor 三端规则,并默认开启 Codex hooks
129
- - **Repo 内置 skills**:工具和 Agent 协同约束一起发布
130
-
131
- ## 一句话安装
132
-
133
- ```bash
134
- npm install -g git+https://github.com/mileson/openprd.git
135
- ```
136
-
137
- 安装后验证:
138
-
139
- ```bash
140
- openprd --help
141
- ```
142
-
143
- 之后更新 CLI 时先预演,再执行:
144
-
145
- ```bash
146
- openprd self-update --dry-run
147
- openprd self-update
148
- ```
149
-
150
- ## 快速开始
151
-
152
- ### 1. 初始化
153
-
154
- ```bash
155
- openprd init /path/to/project --template-pack agent
156
- ```
157
-
158
- `init` 会创建 `.openprd/`、`docs/basic/`、`AGENTS.md`,并生成 Codex / Claude / Cursor 三端引导。Codex 项目会同时写入 `.codex/config.toml`、`.codex/hooks.json`、`.codex/hooks/openprd-hook.mjs`,并开启用户级 Codex `codex_hooks = true`。
159
-
160
- Codex hooks 默认使用 `lite` 模式:安装 `UserPromptSubmit`、轻量
161
- `PreToolUse` 写入门禁,以及轻量 `Stop` 收工回顾。明确提到 OpenPrd、PRD、深度调研、深度对标、复刻、
162
- standards、fleet、文档标准化,或看起来像新产品 / 模块 / 流程需求的提示词都会
163
- 注入上下文;`lite` 写入门禁只匹配直接编辑工具,让只读 shell 探查保持安静;`Stop`
164
- 会在本轮结束前回顾是否值得沉淀项目经验。
165
- 需要连 shell 命令也进入写入门禁时使用 `guarded`,只有临时深度诊断才使用
166
- `full`。
167
- 如果用户给出报错、日志、复现、根因排查等明确故障证据,并要求直接修复,
168
- hook 会按小型 bugfix 处理,不开启需求入口;“确认修复”这类确认词也会关闭
169
- 已打开的需求入口。
170
-
171
- ### 2. 查看当前协同节奏
172
-
173
- ```bash
174
- openprd status /path/to/project
175
- openprd next /path/to/project
176
- ```
177
-
178
- ### 3. 先向用户澄清
179
-
180
- ```bash
181
- openprd clarify /path/to/project
182
- ```
183
-
184
- 澄清阶段只在对话里输出提纲或简短清单;正式 HTML 评审统一留给合成后的 `review.html`。
185
-
186
- ### 4. 写回答案
187
-
188
- 单条写回:
189
-
190
- ```bash
191
- openprd capture /path/to/project \
192
- --field problem.problemStatement \
193
- --value "移动端缺少高效的 Agent 会话与节点管理入口" \
194
- --source user-confirmed
195
- ```
196
-
197
- 批量写回:
198
-
199
- ```bash
200
- openprd capture /path/to/project --json-file answers.json
201
- ```
202
-
203
- 如果 `openprd synthesize` 提示生成的 `spec.md` 仍然过不了简体中文预检,
204
- 先用 `--source agent-normalized` 做纯内部措辞整理,再去记录当前
205
- `review.html` artifact。
206
-
207
- ### 5. 生成草稿与图
208
-
209
- ```bash
210
- openprd synthesize /path/to/project \
211
- --title "Moticlaw Mobile" \
212
- --owner "Moticlaw" \
213
- --problem "移动端用户缺少直连优先的节点选择与 Agent 会话入口。" \
214
- --why-now "控制面已经具备,当前缺少的是移动端入口。"
215
-
216
- openprd review-presentation /path/to/project --template
217
- openprd review-presentation /path/to/project \
218
- --presentation review-presentation.json \
219
- --write \
220
- --fail-on-violation
221
-
222
- openprd diagram /path/to/project --type architecture --open
223
- openprd diagram /path/to/project --type product-flow --open
224
- openprd review /path/to/project --open
225
- openprd review /path/to/project --mark confirmed --version <id> --digest <sha256> --work-unit <id>
226
- ```
227
-
228
- `review.html` 是当前 PRD 的稳定评审稿,但默认 approval policy 是
229
- `decision-points`,不是“每次都必须停在这里”。常规 lane 下,用户先看稳定
230
- artifact,再用页面复制出来的精确 `--version`、`--digest`、`--work-unit`
231
- 记录确认;`silent-record` lane 只有在用户一开始已经明确要求直接做、并显式
232
- 表示不需要额外评审或确认时,才允许直接记录当前这份精确 artifact。不要把
233
- 实现授权当成给任意评审稿补确认,也不要把评审记录当成实现授权。当前 artifact
234
- 记录完成后,再生成 OpenPrd change 和任务拆解;如果用户原始意图已明确要求
235
- 实现,tasks 就绪后即可直接执行,否则等待一句明确的执行指令:
236
-
237
- ```bash
238
- openprd change /path/to/project --generate --change <change-id>
239
- openprd tasks /path/to/project --change <change-id>
240
- ```
241
-
242
- ### 6. Freeze 与 handoff
243
-
244
- ```bash
245
- openprd freeze /path/to/project
246
- openprd handoff /path/to/project --target openprd
247
- ```
248
-
249
- ### 7. 启动 OpenPrd 发现模式
250
-
251
- 用户可以直接用自然语言说:
252
-
253
- ```text
254
- 用 OpenPrd 深度补全这个项目。
255
- 用 OpenPrd 全面复刻这个参考项目的产品逻辑。
256
- 继续深挖这个需求,直到 OpenPrd 覆盖完整。
257
- ```
258
-
259
- Discovery 和 loop 执行需要明确的深度或执行意图。用户只是说“看看、规划、
260
- 梳理、分析、预计动哪些文件、怎么改”时,Agent 应只读检查状态和代码后回答,
261
- 不得推进 coverage,也不得启动 loop 任务。
262
-
263
- Agent 会在内部完成路由。底层命令是:
264
-
265
- ```bash
266
- openprd discovery /path/to/project --mode brownfield
267
- openprd discovery /path/to/project --resume
268
- openprd discovery /path/to/project --advance --claim "用户可以从工作台发起会话" --evidence src/app.ts
269
- openprd discovery /path/to/project --verify
270
- openprd change /path/to/project --generate --change <change-id>
271
- openprd change /path/to/project --validate --change <change-id>
272
- openprd standards /path/to/project --verify
273
- openprd tasks /path/to/project --change <change-id>
274
- openprd tasks /path/to/project --change <change-id> --advance --verify --item T001.01
275
- openprd change /path/to/project --apply --change <change-id>
276
- openprd change /path/to/project --archive --change <change-id>
277
- openprd specs /path/to/project
278
- openprd changes /path/to/project
279
- ```
280
-
281
- 持续发现的校验也会检查当前 OpenPrd change 结构、spec delta、`docs/basic/`
282
- 标准化文档和长程任务文件。保留 `tasks.md` 作为第一个入口,每个任务文件最多放
283
- 25 个实质 checkbox 任务;超过后继续使用 `tasks-002.md`、`tasks-003.md`。
284
- 每个非最终任务文件的最后一个 checkbox 应指向下一个任务文件,方便 Agent 按顺序
285
- 继续。项目也可以通过 `.openprd/discovery/config.json` 的
286
- `taskSharding.maxItemsPerFile` 使用更细的本地限制。
287
-
288
- 这里的 25 只是分片上限,不是拆解目标。任务标题应优先描述可直接落地的实现单元、
289
- 接线边界、页面入口、集成闭环和回归项,而不是把“主流程 / 功能需求 / 验收目标 /
290
- 非功能需求”这些 PRD 小节逐条平移成 checkbox。
291
-
292
- 如果任务需要稳定编号来支撑长程执行,只保留最小元数据:
293
-
294
- ```md
295
- - [ ] T009.07 Port legacy database import preview
296
- - type: implementation
297
- - deps: T001.14, T007.06
298
- - done: preview shows counts, conflicts, skipped items, warnings
299
- - verify: npm run test -- migration
300
- ```
301
-
302
- `type` 用来区分 `implementation`、`verification`、`documentation` 和
303
- `governance`。`deps` 只在依赖前置任务时填写;`done` 写完成条件;`verify`
304
- 写验证命令或审查步骤。`implementation`、`verification` 和 `documentation`
305
- 任务的 `verify` 必须能证明实际落地,比如 `openprd run . --verify`、测试命令或
306
- 明确的人工审查步骤,不能只用 `openprd change . --validate` 代替。
307
-
308
- `tasks` 默认列出下一个依赖已满足的任务。`--advance` 会勾选完成任务;
309
- 同时传 `--verify` 时,会先运行该任务的 `verify` 命令,通过后再勾选。执行记录
310
- 写在任务文件外,避免把 `tasks.md` 元数据变复杂。
311
-
312
- ## 项目标准化
313
-
314
- `openprd init` 会创建项目标准化契约:
315
-
316
- - `docs/basic/file-structure.md`
317
- - `docs/basic/app-flow.md`
318
- - `docs/basic/prd.md`
319
- - `docs/basic/frontend-guidelines.md`
320
- - `docs/basic/backend-structure.md`
321
- - `docs/basic/tech-stack.md`
322
- - `.openprd/standards/file-manual-template.md`
323
- - `.openprd/standards/folder-readme-template.md`
324
-
325
- 当项目已经存在源码文件时,`openprd standards --verify` 不只检查文件是否存在,还会阻断以下情况:
326
-
327
- - `docs/basic/` 仍停留在“待补充”等模板占位内容。
328
- - 源码文件头部缺少文件说明书。
329
- - 承载源码的文件夹缺少 `[项目名]_[文件夹名]_README.md` 文件夹说明书。
330
-
331
- 检查命令:
332
-
333
- ```bash
334
- openprd standards /path/to/project --verify
335
- ```
336
-
337
- OpenPrd 生成的 change 会包含标准化维护任务,change 校验也会检查这套契约。
338
- 项目基础文档的唯一标准路径是 `docs/basic/`。
339
-
340
- 实现阶段的标准化维护是明确的影响判定,不是最后顺手清理。每次新增或修改源码
341
- 文件时,Agent 都要检查 `docs/basic/`、文件说明书、所在文件夹 README 是否缺失
342
- 或已因本次变更过期。缺失的必须补齐;已有文档如果受到职责、流程、结构、依赖
343
- 或产品行为变化影响,也必须同步更新。如果无需更新,应说明已经完成影响判定以及
344
- 为什么现有文档仍然准确。
345
-
346
- ## 效果图与截图拼图对比,自动优化
347
-
348
- 当界面任务已经有效果图、设计稿、用户给图或 Agent 自己生成的 mock 时,Agent
349
- 在阶段性完成后应先截实现图,再生成左右对比图,不能只靠主观印象判断是否一致:
350
-
351
- ```bash
352
- openprd visual-compare /path/to/project \
353
- --reference effect-image.png \
354
- --actual implementation-screenshot.jpg
355
- ```
356
-
357
- 默认会在 `.openprd/harness/visual-reviews/` 下输出体积较小的 JPG。左侧标注
358
- `效果图`,右侧标注 `实现截图`。输入可以是 `sharp` 支持的常见图片格式;输出
359
- 也可以按需要调整:
360
-
361
- ```bash
362
- openprd visual-compare /path/to/project \
363
- --reference effect-image.png \
364
- --actual implementation-screenshot.jpg \
365
- --out review.webp \
366
- --format webp \
367
- --quality 82 \
368
- --max-panel-width 1180
369
- ```
370
-
371
- Agent 必须查看生成图并继续对标,直到没有明显视觉差异。最终回复里应给出本次
372
- 生成的对比图路径,并说明对比后是否仍有差异。
373
-
374
- ## 回归测试与质量评估报告
375
-
376
- `openprd init` 同时会创建质量契约:
377
-
378
- - `.openprd/quality/config.json`
379
- - `.openprd/quality/reports/`
380
- - `.openprd/knowledge/`
381
-
382
- 检查命令:
383
-
384
- ```bash
385
- openprd quality /path/to/project --verify
386
- ```
387
-
388
- 该命令会在 `.openprd/quality/reports/` 下同时写入 JSON 和 HTML。HTML 回归测试报告
389
- 是阶段性质量查看的主要产物,优先展示整体回归结果、逐需求模块结果、测试块通过情况、
390
- 未通过项和需要确认是否属于本期的遗漏。EVO 是 OpenPrd 内部对“质量评估/验证层”的简称;
391
- 用户可见报告不要求理解这个缩写。脚本、依赖或 fixture 存在只代表项目具备能力,
392
- 不能替代本次运行证据。
393
-
394
- 当需求涉及免费用户、额度、AI 调用、第三方 API、生成、存储、下载或其他消耗型成本时,
395
- `quality --verify` 会额外检查是否存在成本来源、用户级限制、负向验证、用量/成本监控、
396
- 报警阈值和止损动作,避免免费额度或高成本路径在上线后才暴露。
397
-
398
- `openprd quality --verify` 默认会在本期必测块未 production-ready 时返回失败;
399
- `openprd run --verify` 会再次执行这个质量门禁。Agent 不得在本期必测块缺证据或需关注时宣称就绪。
400
- 如果界面任务已有参考图,视觉就绪还需要 `.openprd/harness/visual-reviews/`
401
- 下存在本次 `openprd visual-compare` 产物;对比图仍有明显差异时,应回到实现继续复刻。
402
-
403
- 当一个问题已经修复并完成验证后,可以把抽象模式沉淀为项目级经验:
404
-
405
- ```bash
406
- openprd quality /path/to/project --learn --review --from .openprd/harness/turn-state.json
407
- openprd quality /path/to/project --learn --from <report-id-or-json>
408
- openprd quality /path/to/project --learn --from ./diagnostics/incident-2026-05-24
409
- ```
410
-
411
- `--learn --review` 会先在 `.openprd/knowledge/candidates/` 生成待确认
412
- knowledge candidate,并在 `.openprd/knowledge/drafts/` 生成 draft skill。
413
- 确认值得长期保留后,再用 `--learn --from` promote 为 `.openprd/knowledge/`
414
- 下的 incident、pattern 和经验 Skill,让后续任务能提前触发同类经验,而不是重新排查一遍。`--from`
415
- 现在既可以接质量报告 JSON,也可以直接接已经导出的诊断目录 / 证据文件;
416
- 只要里面已经有 `diagnostic-report`、`runtime-events`、`timeline`、
417
- `root-cause-candidates` 这些结构化诊断产物,就能直接沉淀成可复用的排查 Skill。
418
-
419
- ## Agent 自动接入
420
-
421
- OpenPrd 会把协同规则装进项目,让用户不需要记住具体 skill、命令或 hook:
422
-
423
- ```bash
424
- openprd setup /path/to/project
425
- openprd doctor /path/to/project
426
- openprd self-update --dry-run
427
- openprd self-update
428
- openprd update /path/to/project
429
- openprd update /path/to/project --hook-profile lite
430
- openprd upgrade /path/to/project --dry-run
431
- openprd upgrade /path/to/project
432
- openprd upgrade /path/to/projects --fleet --dry-run
433
- openprd fleet /path/to/projects --dry-run
434
- openprd fleet /path/to/projects --sync-registry
435
- openprd run /path/to/project --context
436
- openprd run /path/to/project --verify
437
- openprd loop /path/to/project --plan --change <change-id>
438
- openprd loop /path/to/project --run --agent codex --dry-run
439
- ```
440
-
441
- 仅安装 CLI 不会直接改写项目或用户配置。用户在项目里运行 `openprd init` 或
442
- `openprd setup` 时,才会安装完整的 Codex / Claude / Cursor 适配配置。
443
-
444
- `setup` 与 `init` 会生成:
445
-
446
- - `AGENTS.md` 中的 OpenPrd 管理规则
447
- - `.codex/skills/`、`.codex/prompts/`、`.codex/config.toml`、`.codex/hooks.json` 和 `.codex/hooks/openprd-hook.mjs`
448
- - 用户级 Codex config 的 `features.codex_hooks = true`
449
- - `.claude/skills/`、`.claude/commands/openprd/` 和 `CLAUDE.md`
450
- - `.cursor/rules/openprd.mdc` 和 `.cursor/commands/`
451
- - `.openprd/harness/install-manifest.json`、`hook-state.json`、`events.jsonl`、`drift-report.json` 和 `visual-reviews/`
452
-
453
- `doctor` 会检查三端引导、Codex hooks 开关、项目标准化和 OpenPrd 工作区验证是否健康。`update` 会从 OpenPrd 的统一源刷新这些生成文件,并保留用户自己已有的 hook 分组。
454
-
455
- `self-update` 只更新 OpenPrd CLI 自身,默认使用公开 GitHub npm 安装源。
456
- `upgrade` 会编排两层更新:先执行 `self-update`,再重新解析安装后的
457
- `openprd` 可执行文件,然后执行 `update <project>`;加 `--fleet` 时会执行
458
- `fleet <root> --update-openprd`,只刷新已有 `.openprd/` 的历史项目。两个入口都支持
459
- `--dry-run`,预演时只打印安装和刷新命令,不修改 CLI、项目、registry 或 harness 状态。
460
-
461
- 这套 harness 是有状态的,但 hook 重量由 profile 控制。默认 `lite` 保留轻量
462
- PreToolUse 写入门禁,并把匹配范围限制在直接编辑工具上,同时在 `Stop` 做一轮轻量项目经验回顾,避免只读 shell 噪声和完整工具级遥测;`guarded` 会额外覆盖 shell 工具,`full` 只建议用于临时深度诊断。`freeze`、`handoff`、accepted spec apply/archive、commit、push、release、publish 等高风险动作会先经过 `openprd run . --verify`,覆盖标准化、工作区校验、激活 change 校验和激活 discovery 校验。
463
-
464
- `openprd run . --context` 是类似 Ralph 的循环控制面。它会从激活 change 任务、discovery coverage 或普通 OpenPrd 工作流状态里选择下一项可执行单元,并把 hook turn 记录到 `.openprd/harness/iterations.jsonl`。
465
-
466
- ### 长程 Agent Loop
467
-
468
- 如果进入真正的开发落地阶段,建议使用 `openprd loop`。它比 `run --context`
469
- 更严格:先生成稳定的 feature list,再为每个任务写出单独提示词,启动一个新的
470
- Codex 或 Claude 会话只处理这一个任务。每个任务完成后必须先自测,失败就修复并
471
- 重新自测;前端界面任务在 Codex 客户端优先用 Computer Use,在 Codex CLI 和
472
- Claude Code 中优先用 Playwright、MCP 浏览器自动化或项目已有 e2e 工具。验证
473
- 通过后,`loop --finish` 会写入阶段性测试报告,并可为该任务生成独立 commit。
474
- 如果该界面任务已有参考图,还必须截实现图并运行 `openprd visual-compare`,
475
- 查看左右对比 JPG 后才能完成任务。
476
-
477
- `openprd run --context` 可能展示 loop 相关执行命令,但它不是自动执行指令。
478
- 只有当用户当前明确要求开发、实现、继续任务、深度调研、深度对标、复刻落地或
479
- 提交时,Agent 才能运行 `openprd loop --run`、`openprd tasks --advance`、
480
- `openprd discovery --advance` 或 commit 命令。规划和审查类对话应止步于模块 /
481
- 文件清单和证据说明。
482
-
483
- Loop 建议按实质实现任务数触发,而不是按所有 checkbox 触发。当一个 change 的
484
- `implementation` 任务总数或待处理数达到 10 个时,`run --context` 会建议使用
485
- 独立 worktree 或等价隔离环境,并通过单任务 Loop 会话推进。
486
-
487
- ```bash
488
- openprd loop . --init
489
- openprd loop . --plan --change <change-id>
490
- openprd loop . --next
491
- openprd loop . --prompt --agent codex
492
- openprd loop . --run --agent codex --dry-run
493
- openprd loop . --run --agent claude --dry-run
494
- openprd loop . --verify --item T001.01
495
- openprd loop . --finish --item T001.01 --commit --message "Complete T001.01"
496
- ```
497
-
498
- Loop 状态会沉淀在 `.openprd/harness/`:
499
-
500
- - `feature-list.json`:按依赖排序的执行任务列表
501
- - `feature-list.json`:每个任务都会带一个人类可读的 `taskHandle`,例如
502
- `change-id:T001.01:task-title`,方便跨对话继续同一任务,而不是只靠聊天 UUID
503
- - `progress.md`:给人看的进度记录
504
- - `agent-sessions.jsonl`:每次 prompt / run / finish 的结构化事件,也会记录任务句柄和任务标题
505
- - `bootstrap.sh`:每个新会话启动时执行的检查脚本
506
- - `loop-state.json`:当前任务 id、任务句柄、任务标题,以及最近一次 Agent 会话状态
507
- - `loop-prompts/`:生成过的单任务提示词,便于审计和复用
508
- - `test-reports/`:每个任务的阶段性测试报告,会和任务改动一起提交
509
-
510
- 建议先用 `--dry-run`,让 OpenPrd 生成提示词和准确执行命令,但不直接启动 Agent。
511
- `--agent codex` / `--agent claude` 会使用默认 CLI 集成;只有需要接入团队自定义
512
- 包装器时,才使用 `--agent-command "<custom command>"`。
513
-
514
- OpenPrd 面向用户的时间统一使用上海时区的 `YYYY-MM-DD HH:mm:ss` 格式,不输出
515
- `T`、`Z` 或毫秒后缀。除命令、字段名、文件路径、API 名称等必要专有术语外,生成
516
- 文档、进度日志、proposal、prompt 和测试报告默认使用简体中文。`spec.md` 会额外
517
- 校验正文语言:新生成的结构字段使用“新增需求”“需求”“场景”“当”“则”等中文表达;
518
- 校验器仍兼容历史 OpenSpec 英文结构字段,但实际内容必须使用简体中文。
519
-
520
- 历史项目不要手写 shell 循环批量改。使用 `fleet` 先扫描报告;它现在会顺带提示全局 registry 里已经登记了多少 OpenPrd 工作区、当前 root 外还有多少已知项目。`--sync-registry` 用来把当前 root 下已初始化的 `.openprd/` 工作区回填到 `~/.openprd/registry/workspaces.jsonl`。`--update-openprd` 只刷新已经有 `.openprd/` 的项目,项目自身 standards 或 validate 缺口会作为“项目健康需关注”报告,但不阻断生成引导更新;只有 agent 配置或普通项目默认保持不变,除非显式用 `--setup-missing` 接管。
521
-
522
- ## 怎么看 `status` / `next`
523
-
524
- ### `openprd status`
525
-
526
- 重点看:
527
-
528
- - `Scenario`
529
- - `User participation mode`
530
- - `Current gate`
531
- - `Upcoming gate`
532
-
533
- ### `openprd next`
534
-
535
- 重点看:
536
-
537
- - `Next action`
538
- - `Current gate`
539
- - `Upcoming gate`
540
- - `Suggested command`
541
- - `Suggested questions`
542
-
543
- ## 图 Contract
544
-
545
- OpenPrd 支持:
546
-
547
- - `architecture`
548
- - `product-flow`
549
-
550
- 也支持从显式 contract 渲染:
551
-
552
- ```bash
553
- openprd diagram /path/to/project \
554
- --type product-flow \
555
- --input ./product-flow-contract.json
556
- ```
557
-
558
- ## Agent Skills
559
-
560
- 仓库内自带:
561
-
562
- - `skills/openprd-shared/`
563
- - `skills/openprd-harness/`
564
- - `skills/openprd-standards/`
565
- - `skills/openprd-diagram-review/`
566
- - `skills/openprd-discovery-loop/`
567
-
568
- 配合顶层 `AGENTS.md` 使用,可以让 Agent 更稳定地按照 OpenPrd 的协同方式工作。
569
-
570
- ## 贡献与安全
571
-
572
- - 贡献说明:见 [CONTRIBUTING.md](./CONTRIBUTING.md)
573
- - 安全披露:见 [SECURITY.md](./SECURITY.md)
574
-
575
- ## 许可证
576
-
577
- MIT — 见 [LICENSE](./LICENSE)
578
-
579
- ## 作者
580
-
581
- - X: [Mileson07](https://x.com/Mileson07)
582
- - 小红书: [超级峰](https://xhslink.com/m/4LnJ9aB1f97)
583
- - 抖音: [超级峰](https://v.douyin.com/rH645q7trd8/)
9
+ English documentation is available in [README_EN.md](./README_EN.md).