@michaelxwb/code-flow 0.8.1 → 1.0.0

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 (268) hide show
  1. package/README.md +73 -152
  2. package/bin/code-flow.js +12 -0
  3. package/docs/README.md +19 -0
  4. package/docs/USAGE.md +156 -1417
  5. package/docs/v1-design.md +1858 -0
  6. package/docs/v1-implementation.md +186 -0
  7. package/lib/adapters.js +126 -0
  8. package/lib/cli.js +258 -0
  9. package/lib/config.js +85 -0
  10. package/lib/doctor.js +283 -0
  11. package/lib/frontmatter.js +42 -0
  12. package/lib/fs.js +141 -0
  13. package/lib/glob.js +23 -0
  14. package/lib/hook.js +99 -0
  15. package/lib/init.js +132 -0
  16. package/lib/learn.js +170 -0
  17. package/lib/locks.js +52 -0
  18. package/lib/markdown.js +13 -0
  19. package/lib/process.js +116 -0
  20. package/lib/render.js +115 -0
  21. package/lib/repo.js +48 -0
  22. package/lib/runs.js +155 -0
  23. package/lib/session.js +40 -0
  24. package/lib/spec.js +80 -0
  25. package/lib/task.js +258 -0
  26. package/lib/taskdoc.js +308 -0
  27. package/lib/toml.js +140 -0
  28. package/lib/verify.js +168 -0
  29. package/lib/worktree.js +930 -0
  30. package/package.json +18 -21
  31. package/templates/adapters/opencode.mjs +65 -0
  32. package/templates/config.json +39 -0
  33. package/templates/instructions.md +13 -0
  34. package/templates/launcher/bridge.cjs +295 -0
  35. package/templates/launcher/hook.cmd +15 -0
  36. package/templates/launcher/hook.ps1 +10 -0
  37. package/templates/launcher/hook.sh +20 -0
  38. package/templates/skills/cf-check.md +19 -0
  39. package/templates/skills/cf-init.md +16 -0
  40. package/templates/skills/cf-spec.md +20 -0
  41. package/templates/skills/cf-task-align.md +19 -0
  42. package/templates/skills/cf-task-archive.md +20 -0
  43. package/templates/skills/cf-task-plan.md +31 -0
  44. package/templates/skills/cf-task-prd.md +14 -0
  45. package/templates/skills/cf-task-start.md +41 -0
  46. package/{src/core/code-flow/specs/shared/design → templates/workflow}/design-frontend.md +12 -12
  47. package/{src/core/code-flow/specs/shared/design → templates/workflow}/design-full.md +17 -19
  48. package/{src/core/code-flow/specs/shared/design → templates/workflow}/design-lite.md +12 -12
  49. package/{src/core/code-flow/specs/shared/prd-template.md → templates/workflow/prd.md} +1 -1
  50. package/templates/workflow/project-guidelines.md +48 -0
  51. package/templates/workflow/scenarios.md +67 -0
  52. package/templates/workflow/task.md +56 -0
  53. package/docs/acceptance-contract.md +0 -217
  54. package/docs/ci/acceptance-evidence.md +0 -77
  55. package/docs/migrations/runtime-0.7.0.md +0 -41
  56. package/docs/migrations/runtime-0.8.0.md +0 -154
  57. package/docs/migrations/runtime-0.9.0.md +0 -40
  58. package/docs/migrations/spec-workflow-0.6.0.md +0 -42
  59. package/docs/spec-injection-hardening.md +0 -54
  60. package/docs/spec-injection-performance.json +0 -73
  61. package/docs/spec-optimization.md +0 -12
  62. package/src/adapters/claude/CLAUDE.md +0 -45
  63. package/src/adapters/claude/commands/cf-init.md +0 -262
  64. package/src/adapters/claude/commands/cf-learn.md +0 -291
  65. package/src/adapters/claude/commands/cf-spec.md +0 -87
  66. package/src/adapters/claude/commands/cf-stats.md +0 -96
  67. package/src/adapters/claude/commands/cf-sync.md +0 -39
  68. package/src/adapters/claude/commands/cf-task/align.md +0 -331
  69. package/src/adapters/claude/commands/cf-task/archive.md +0 -155
  70. package/src/adapters/claude/commands/cf-task/block.md +0 -49
  71. package/src/adapters/claude/commands/cf-task/graph.md +0 -92
  72. package/src/adapters/claude/commands/cf-task/note.md +0 -248
  73. package/src/adapters/claude/commands/cf-task/plan.md +0 -477
  74. package/src/adapters/claude/commands/cf-task/prd.md +0 -173
  75. package/src/adapters/claude/commands/cf-task/start.md +0 -317
  76. package/src/adapters/claude/commands/cf-task/status.md +0 -71
  77. package/src/adapters/claude/commands/cf-task/verify-e2e.md +0 -148
  78. package/src/adapters/claude/commands/cf-validate.md +0 -100
  79. package/src/adapters/claude/settings.local.json +0 -50
  80. package/src/adapters/codex/AGENTS.md +0 -45
  81. package/src/adapters/codex/config.toml +0 -3
  82. package/src/adapters/codex/hooks.json +0 -54
  83. package/src/adapters/codex/skills/cf-init/SKILL.md +0 -273
  84. package/src/adapters/codex/skills/cf-learn/SKILL.md +0 -296
  85. package/src/adapters/codex/skills/cf-spec/SKILL.md +0 -88
  86. package/src/adapters/codex/skills/cf-stats/SKILL.md +0 -97
  87. package/src/adapters/codex/skills/cf-sync/SKILL.md +0 -45
  88. package/src/adapters/codex/skills/cf-task-align/SKILL.md +0 -332
  89. package/src/adapters/codex/skills/cf-task-archive/SKILL.md +0 -156
  90. package/src/adapters/codex/skills/cf-task-block/SKILL.md +0 -50
  91. package/src/adapters/codex/skills/cf-task-graph/SKILL.md +0 -93
  92. package/src/adapters/codex/skills/cf-task-note/SKILL.md +0 -245
  93. package/src/adapters/codex/skills/cf-task-plan/SKILL.md +0 -478
  94. package/src/adapters/codex/skills/cf-task-prd/SKILL.md +0 -174
  95. package/src/adapters/codex/skills/cf-task-start/SKILL.md +0 -318
  96. package/src/adapters/codex/skills/cf-task-status/SKILL.md +0 -72
  97. package/src/adapters/codex/skills/cf-task-verify-e2e/SKILL.md +0 -145
  98. package/src/adapters/codex/skills/cf-validate/SKILL.md +0 -102
  99. package/src/adapters/commands.json +0 -115
  100. package/src/adapters/costrict/CLAUDE.md +0 -45
  101. package/src/adapters/costrict/commands/cf-init.md +0 -262
  102. package/src/adapters/costrict/commands/cf-learn.md +0 -291
  103. package/src/adapters/costrict/commands/cf-spec.md +0 -87
  104. package/src/adapters/costrict/commands/cf-stats.md +0 -96
  105. package/src/adapters/costrict/commands/cf-sync.md +0 -39
  106. package/src/adapters/costrict/commands/cf-task/align.md +0 -331
  107. package/src/adapters/costrict/commands/cf-task/archive.md +0 -155
  108. package/src/adapters/costrict/commands/cf-task/block.md +0 -49
  109. package/src/adapters/costrict/commands/cf-task/graph.md +0 -92
  110. package/src/adapters/costrict/commands/cf-task/note.md +0 -248
  111. package/src/adapters/costrict/commands/cf-task/plan.md +0 -477
  112. package/src/adapters/costrict/commands/cf-task/prd.md +0 -173
  113. package/src/adapters/costrict/commands/cf-task/start.md +0 -317
  114. package/src/adapters/costrict/commands/cf-task/status.md +0 -71
  115. package/src/adapters/costrict/commands/cf-task/verify-e2e.md +0 -148
  116. package/src/adapters/costrict/commands/cf-validate.md +0 -100
  117. package/src/adapters/costrict/settings.local.json +0 -50
  118. package/src/adapters/install-plan.json +0 -100
  119. package/src/adapters/opencode/AGENTS.md +0 -45
  120. package/src/adapters/opencode/commands/cf-init.md +0 -281
  121. package/src/adapters/opencode/commands/cf-learn.md +0 -295
  122. package/src/adapters/opencode/commands/cf-spec.md +0 -91
  123. package/src/adapters/opencode/commands/cf-stats.md +0 -100
  124. package/src/adapters/opencode/commands/cf-sync.md +0 -44
  125. package/src/adapters/opencode/commands/cf-task/align.md +0 -331
  126. package/src/adapters/opencode/commands/cf-task/archive.md +0 -160
  127. package/src/adapters/opencode/commands/cf-task/block.md +0 -54
  128. package/src/adapters/opencode/commands/cf-task/graph.md +0 -97
  129. package/src/adapters/opencode/commands/cf-task/note.md +0 -253
  130. package/src/adapters/opencode/commands/cf-task/plan.md +0 -477
  131. package/src/adapters/opencode/commands/cf-task/prd.md +0 -178
  132. package/src/adapters/opencode/commands/cf-task/start.md +0 -317
  133. package/src/adapters/opencode/commands/cf-task/status.md +0 -76
  134. package/src/adapters/opencode/commands/cf-task/verify-e2e.md +0 -148
  135. package/src/adapters/opencode/commands/cf-validate.md +0 -105
  136. package/src/adapters/opencode/opencode.json +0 -3
  137. package/src/adapters/opencode/plugins/code-flow/index.js +0 -162
  138. package/src/adapters/opencode/plugins/code-flow/package.json +0 -6
  139. package/src/adapters/platform-bindings.json +0 -370
  140. package/src/cli.js +0 -1076
  141. package/src/core/code-flow/config.yml +0 -161
  142. package/src/core/code-flow/runtime-commands.json +0 -259
  143. package/src/core/code-flow/scripts/cf_acceptance_manifest.py +0 -10
  144. package/src/core/code-flow/scripts/cf_acceptance_runner.py +0 -10
  145. package/src/core/code-flow/scripts/cf_audit.py +0 -10
  146. package/src/core/code-flow/scripts/cf_codex_hook.py +0 -10
  147. package/src/core/code-flow/scripts/cf_design_lint.py +0 -10
  148. package/src/core/code-flow/scripts/cf_evidence_import.py +0 -10
  149. package/src/core/code-flow/scripts/cf_feedback.py +0 -10
  150. package/src/core/code-flow/scripts/cf_opencode_event.py +0 -10
  151. package/src/core/code-flow/scripts/cf_post_hook.py +0 -11
  152. package/src/core/code-flow/scripts/cf_pre_tool_hook.py +0 -11
  153. package/src/core/code-flow/scripts/cf_scenarios.py +0 -10
  154. package/src/core/code-flow/scripts/cf_spec_context.py +0 -10
  155. package/src/core/code-flow/scripts/cf_spec_gate.py +0 -10
  156. package/src/core/code-flow/scripts/cf_spec_session.py +0 -10
  157. package/src/core/code-flow/scripts/cf_stats.py +0 -10
  158. package/src/core/code-flow/scripts/cf_stop_hook.py +0 -11
  159. package/src/core/code-flow/scripts/cf_sync.py +0 -10
  160. package/src/core/code-flow/scripts/cf_task_index.py +0 -10
  161. package/src/core/code-flow/scripts/cf_task_parallel.py +0 -10
  162. package/src/core/code-flow/scripts/cf_task_workflow.py +0 -10
  163. package/src/core/code-flow/scripts/cf_user_prompt_hook.py +0 -11
  164. package/src/core/code-flow/scripts/cf_validation.py +0 -10
  165. package/src/core/code-flow/scripts/codeflow/__init__.py +0 -0
  166. package/src/core/code-flow/scripts/codeflow/acceptance/__init__.py +0 -0
  167. package/src/core/code-flow/scripts/codeflow/acceptance/cf_acceptance_evidence.py +0 -347
  168. package/src/core/code-flow/scripts/codeflow/acceptance/cf_acceptance_manifest_core.py +0 -660
  169. package/src/core/code-flow/scripts/codeflow/acceptance/cf_acceptance_plan.py +0 -202
  170. package/src/core/code-flow/scripts/codeflow/acceptance/cf_acceptance_registration.py +0 -60
  171. package/src/core/code-flow/scripts/codeflow/acceptance/cf_acceptance_risk.py +0 -73
  172. package/src/core/code-flow/scripts/codeflow/acceptance/cf_acceptance_schema.py +0 -282
  173. package/src/core/code-flow/scripts/codeflow/acceptance/cf_acceptance_selection.py +0 -266
  174. package/src/core/code-flow/scripts/codeflow/acceptance/cf_check_inputs.py +0 -172
  175. package/src/core/code-flow/scripts/codeflow/acceptance/cf_check_registration.py +0 -326
  176. package/src/core/code-flow/scripts/codeflow/acceptance/cf_checks.py +0 -333
  177. package/src/core/code-flow/scripts/codeflow/acceptance/cf_plan_quality.py +0 -197
  178. package/src/core/code-flow/scripts/codeflow/acceptance/cf_scenario_quality.py +0 -174
  179. package/src/core/code-flow/scripts/codeflow/acceptance/cf_scenario_source.py +0 -300
  180. package/src/core/code-flow/scripts/codeflow/acceptance/cf_traceability.py +0 -502
  181. package/src/core/code-flow/scripts/codeflow/cli/__init__.py +0 -0
  182. package/src/core/code-flow/scripts/codeflow/cli/cf_acceptance_manifest.py +0 -347
  183. package/src/core/code-flow/scripts/codeflow/cli/cf_acceptance_runner.py +0 -1490
  184. package/src/core/code-flow/scripts/codeflow/cli/cf_audit.py +0 -533
  185. package/src/core/code-flow/scripts/codeflow/cli/cf_design_lint.py +0 -172
  186. package/src/core/code-flow/scripts/codeflow/cli/cf_evidence_import.py +0 -607
  187. package/src/core/code-flow/scripts/codeflow/cli/cf_feedback.py +0 -53
  188. package/src/core/code-flow/scripts/codeflow/cli/cf_scenarios.py +0 -58
  189. package/src/core/code-flow/scripts/codeflow/cli/cf_spec_context.py +0 -1175
  190. package/src/core/code-flow/scripts/codeflow/cli/cf_spec_gate.py +0 -60
  191. package/src/core/code-flow/scripts/codeflow/cli/cf_spec_session.py +0 -46
  192. package/src/core/code-flow/scripts/codeflow/cli/cf_stats.py +0 -540
  193. package/src/core/code-flow/scripts/codeflow/cli/cf_sync.py +0 -144
  194. package/src/core/code-flow/scripts/codeflow/cli/cf_task_index.py +0 -177
  195. package/src/core/code-flow/scripts/codeflow/cli/cf_task_parallel.py +0 -1142
  196. package/src/core/code-flow/scripts/codeflow/cli/cf_task_workflow.py +0 -742
  197. package/src/core/code-flow/scripts/codeflow/cli/cf_validation.py +0 -31
  198. package/src/core/code-flow/scripts/codeflow/core/__init__.py +0 -0
  199. package/src/core/code-flow/scripts/codeflow/core/cf_context_cache.py +0 -67
  200. package/src/core/code-flow/scripts/codeflow/core/cf_core.py +0 -609
  201. package/src/core/code-flow/scripts/codeflow/core/cf_exec_base.py +0 -325
  202. package/src/core/code-flow/scripts/codeflow/core/cf_fs.py +0 -57
  203. package/src/core/code-flow/scripts/codeflow/core/cf_git.py +0 -92
  204. package/src/core/code-flow/scripts/codeflow/core/cf_log.py +0 -160
  205. package/src/core/code-flow/scripts/codeflow/core/cf_markdown.py +0 -77
  206. package/src/core/code-flow/scripts/codeflow/core/cf_native_paths.py +0 -26
  207. package/src/core/code-flow/scripts/codeflow/core/cf_patch.py +0 -33
  208. package/src/core/code-flow/scripts/codeflow/core/cf_runtime_install.py +0 -32
  209. package/src/core/code-flow/scripts/codeflow/core/cf_session_state.py +0 -37
  210. package/src/core/code-flow/scripts/codeflow/core/cf_stop_guard.py +0 -53
  211. package/src/core/code-flow/scripts/codeflow/core/cf_task_state.py +0 -9
  212. package/src/core/code-flow/scripts/codeflow/core/cf_validators.py +0 -408
  213. package/src/core/code-flow/scripts/codeflow/core/cf_worktree_env.py +0 -253
  214. package/src/core/code-flow/scripts/codeflow/evidence/__init__.py +0 -0
  215. package/src/core/code-flow/scripts/codeflow/evidence/cf_evidence_store.py +0 -527
  216. package/src/core/code-flow/scripts/codeflow/hooks/__init__.py +0 -0
  217. package/src/core/code-flow/scripts/codeflow/hooks/cf_codex_hook.py +0 -95
  218. package/src/core/code-flow/scripts/codeflow/hooks/cf_opencode_event.py +0 -98
  219. package/src/core/code-flow/scripts/codeflow/hooks/cf_post_hook.py +0 -30
  220. package/src/core/code-flow/scripts/codeflow/hooks/cf_pre_tool_hook.py +0 -41
  221. package/src/core/code-flow/scripts/codeflow/hooks/cf_stop_hook.py +0 -292
  222. package/src/core/code-flow/scripts/codeflow/hooks/cf_user_prompt_hook.py +0 -161
  223. package/src/core/code-flow/scripts/codeflow/spec/__init__.py +0 -0
  224. package/src/core/code-flow/scripts/codeflow/spec/cf_active_task.py +0 -412
  225. package/src/core/code-flow/scripts/codeflow/spec/cf_context_refresh.py +0 -301
  226. package/src/core/code-flow/scripts/codeflow/spec/cf_edit_service.py +0 -149
  227. package/src/core/code-flow/scripts/codeflow/spec/cf_injection.py +0 -111
  228. package/src/core/code-flow/scripts/codeflow/spec/cf_rule_readiness.py +0 -114
  229. package/src/core/code-flow/scripts/codeflow/spec/cf_scan.py +0 -367
  230. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_budget.py +0 -55
  231. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_context_model.py +0 -477
  232. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_impact.py +0 -119
  233. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_metadata.py +0 -387
  234. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_migrate.py +0 -529
  235. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_optimize.py +0 -193
  236. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_optimize_apply.py +0 -187
  237. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_resolver.py +0 -369
  238. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_router.py +0 -304
  239. package/src/core/code-flow/scripts/codeflow/spec/cf_spec_verify.py +0 -687
  240. package/src/core/code-flow/scripts/codeflow/spec/cf_stage_gate.py +0 -330
  241. package/src/core/code-flow/scripts/codeflow/spec/cf_task_projection.py +0 -83
  242. package/src/core/code-flow/scripts/codeflow/spec/cf_workflow_service.py +0 -755
  243. package/src/core/code-flow/scripts/codeflow/spec/cf_workflow_transaction.py +0 -110
  244. package/src/core/code-flow/scripts/codeflow/task/__init__.py +0 -0
  245. package/src/core/code-flow/scripts/codeflow/task/cf_requirement_verification.py +0 -867
  246. package/src/core/code-flow/scripts/codeflow/task/cf_task_doc.py +0 -178
  247. package/src/core/code-flow/scripts/codeflow/task/cf_task_merge.py +0 -635
  248. package/src/core/code-flow/scripts/codeflow/task/cf_task_plan.py +0 -251
  249. package/src/core/code-flow/scripts/codeflow/task/cf_task_runtime.py +0 -570
  250. package/src/core/code-flow/scripts/codeflow/task/cf_validation_service.py +0 -73
  251. package/src/core/code-flow/scripts/runtime-resources.json +0 -29
  252. package/src/core/code-flow/specs/backend/_map.md +0 -56
  253. package/src/core/code-flow/specs/backend/code-quality-performance.md +0 -59
  254. package/src/core/code-flow/specs/backend/database.md +0 -51
  255. package/src/core/code-flow/specs/backend/directory-structure.md +0 -54
  256. package/src/core/code-flow/specs/backend/logging.md +0 -50
  257. package/src/core/code-flow/specs/backend/platform-rules.md +0 -55
  258. package/src/core/code-flow/specs/frontend/_map.md +0 -52
  259. package/src/core/code-flow/specs/frontend/component-specs.md +0 -68
  260. package/src/core/code-flow/specs/frontend/directory-structure.md +0 -53
  261. package/src/core/code-flow/specs/frontend/quality-standards.md +0 -58
  262. package/src/core/code-flow/specs/shared/_map.md +0 -57
  263. package/src/core/code-flow/specs/shared/scenarios-template.md +0 -55
  264. package/src/core/code-flow/tasks/.gitkeep +0 -0
  265. package/src/core/code-flow/validation.yml +0 -59
  266. package/src/migrate/runtime.js +0 -213
  267. package/src/migrate/spec-workflow.js +0 -253
  268. package/src/runtime.js +0 -219
package/README.md CHANGED
@@ -1,201 +1,122 @@
1
1
  # code-flow
2
2
 
3
- 用于管理项目规范、任务和可执行验收的命令行工具。通过 `code-flow init` 安装四平台入口,再由持久化 Spec Context、场景源、阶段门禁和逐 check 执行证据约束开发流程。
3
+ v1 是零依赖的全局 Node.js CLI,为 AI 编码工具提供两件事:按当前任务注入最新规范,以及把已完成任务的稳定约束沉淀为 Spec。默认 `hook` 工作流只要求最小 task 文档和声明测试;`full` 文档流程和过程采集按需开启。
4
4
 
5
- 本仓库当前版本为 **0.8.1**;npm 的 `latest` 标签以注册表查询为准。使用说明见[使用手册](docs/USAGE.md),场景与测试登记格式见[可执行验收契约](docs/acceptance-contract.md)。
5
+ 需要 Node.js 18 或更高版本。支持 Claude Code、Codex、Costrict 与 OpenCode;不需要 Python,不在项目中复制核心脚本。
6
6
 
7
- ## 安装
8
-
9
- npm:
7
+ ## 安装与初始化
10
8
 
11
9
  ```bash
12
10
  npm i -g @michaelxwb/code-flow
11
+ code-flow init --platform=codex
13
12
  ```
14
13
 
15
- pnpm:
16
-
17
- ```bash
18
- pnpm add -g @michaelxwb/code-flow
19
- ```
20
-
21
- ## 升级
22
-
23
- 先核对已安装版本与注册表版本:
24
-
25
- ```bash
26
- code-flow --version
27
- npm view @michaelxwb/code-flow dist-tags --json
28
- ```
14
+ 平台可选 claude、codex、costrict、opencode。Codex 按宿主要求审阅并信任新的 Hook。所有项目共享当前全局版本;更新 Node 或全局安装路径后,重新 init。
29
15
 
30
- 从 npm 升级到已发布的最新版本:
16
+ init 会安装 `.code-flow/templates/project-guidelines.md` 作为项目规范 starter;`cf-init` 会据此把项目特有规范写到 `CLAUDE.md`/`AGENTS.md` 的托管块之外,并把 `.code-flow/specs` 明确为规范来源。
31
17
 
32
- ```bash
33
- npm i -g @michaelxwb/code-flow@latest
34
- ```
18
+ 旧版本需要人工保存资料、清除旧平台入口后重新初始化;v1 不包含迁移、转换或自动删除逻辑。详见[使用说明](docs/USAGE.md)。
35
19
 
36
- pnpm:
20
+ ## 规范与任务
37
21
 
38
- ```bash
39
- pnpm add -g @michaelxwb/code-flow@latest
22
+ ```text
23
+ .code-flow/
24
+ config.json
25
+ specs/shared/base.md
26
+ specs/cli/runtime.md
27
+ tasks/2026-11-10/example/example.md
28
+ process/ # capture 开启时的过程事件与采集包(gitignored)
40
29
  ```
41
30
 
42
- 需要使用本仓库尚未发布的修复时,在仓库根目录构建并安装本地包:
43
-
44
- ```bash
45
- npm pack --ignore-scripts
46
- npm install --global ./michaelxwb-code-flow-0.8.1.tgz --ignore-scripts
47
- code-flow --version
48
- ```
31
+ Spec 身份就是相对路径,例如 cli/runtime;JSON frontmatter 包含 description 与 next_rule。完整规则引用为 cli/runtime#RULE-001。
49
32
 
50
- CLI 更新后,在目标项目执行运行时迁移,将脚本、已安装平台和 Hook 一起更新:
33
+ 一个需求一份任务文档,内部包含多个 `## TASK-NNN` 段。默认 `workflow: hook` 只需要 `example.md`;`workflow: full` 额外生成 PRD/前后端 design/scenarios:
51
34
 
52
- ```bash
53
- code-flow migrate --runtime --dry-run
54
- code-flow migrate --runtime --apply
35
+ ```text
36
+ tasks/2026-11-10/example/
37
+ example.md
38
+ # workflow=full:
39
+ # example.prd.md
40
+ # example.frontend.design.md
41
+ # example.backend.design.md
42
+ # example.scenarios.md
55
43
  ```
56
44
 
57
- CLI 与项目 runtime 必须匹配;版本不一致时按诊断升级 CLI 或迁移 runtime。备份与回滚步骤见 [0.8 迁移说明](docs/migrations/runtime-0.8.0.md)。
45
+ 任务文档的 TASK 段声明 status、source、scenarios、spec_refs 和 tests(hook 下 source/scenarios 可留空):
58
46
 
59
- ## 卸载
47
+ ````markdown
48
+ ## TASK-001: Implement behavior
60
49
 
61
- npm:
62
-
63
- ```bash
64
- npm rm -g @michaelxwb/code-flow
65
- ```
50
+ - **Status**: draft
51
+ - **Depends**:
52
+ - **Source**:
53
+ - **Scenarios**:
54
+ - **Spec-Refs**: cli/runtime
66
55
 
67
- pnpm:
56
+ ### Tests
68
57
 
69
- ```bash
70
- pnpm remove -g @michaelxwb/code-flow
58
+ ```json
59
+ [
60
+ { "id": "unit", "argv": ["node", "--test", "test/hook.test.js"] }
61
+ ]
71
62
  ```
72
63
 
73
- ## 基本用法
64
+ ### Checklist
74
65
 
75
- 初始化(默认 `--platform=claude`):
66
+ - [ ] 实现相关行为并验证回归。
67
+ ````
76
68
 
77
- ```bash
78
- code-flow init
79
- code-flow init --platform=codex
80
- code-flow init --platform=costrict
81
- code-flow init --platform=opencode
82
- code-flow init --force # 覆盖所有文件,包括用户已编辑内容
83
- ```
69
+ `Source`/`Scenarios` 在 hook 工作流可留空;full 工作流填 design/scenarios 引用。
84
70
 
85
- 查看帮助:
71
+ 完整示例见[使用说明](docs/USAGE.md)。
86
72
 
87
73
  ```bash
88
- code-flow --help
74
+ code-flow task start .code-flow/tasks/2026-11-10/example/example.md --task TASK-001
75
+ code-flow task finish .code-flow/tasks/2026-11-10/example/example.md --task TASK-001 --json
76
+ code-flow task archive .code-flow/tasks/2026-11-10/example --dry-run
77
+ code-flow task archive .code-flow/tasks/2026-11-10/example
89
78
  ```
90
79
 
91
- ## 开发与验收
80
+ cf-task skill 把 prompt Hook 给出的 session token 传给 start --session,之后按会话自动续选任务。用户也可用独立行 `task: <任务文档>#TASK-001` 选择本轮任务。绑定缺失时按明确文件路径映射或显示 catalog,不猜测唯一 in-progress。
92
81
 
93
- 需求文件集中在 `.code-flow/tasks/<日期>/<需求>/`。通常依次使用 `cf-task:prd` → `cf-task:align` → `cf-task:plan` → `cf-task:start` → `cf-task:verify-e2e` → `cf-task:archive`;Codex 使用对应的 `cf-task-*` skills。
82
+ Hook 只在用户提交 prompt 时读取并交付上下文。没有编辑/Stop 门禁;规范修改后下次适用注入读取最新内容。finish 实际执行本任务声明测试;archive 仅应用 Delta 并移动需求目录,CI 独立承担全量与 E2E。
94
83
 
95
- | 阶段 | 正式运行时入口 | 检查内容 |
96
- |------|----------------|----------|
97
- | 场景 | `code-flow scenarios parse --file "<需求>.scenarios.md" --quality --json` | 浏览器边界、具体预期与步骤/断言引用、延期责任 |
98
- | 设计 | `code-flow design lint --file "<需求>.design.md" --scenarios-file "<需求>.scenarios.md" --json` | ID 闭环、功能场景覆盖与已声明模板章节 |
99
- | 计划 | `code-flow acceptance manifest --task-dir "<需求目录>" --task-file "<任务文件>" --verify-plan --json` | manifest、场景、设计、测试登记/收集与 Spec Gate |
100
- | 开发中 | `code-flow task verify --task-dir "<需求目录>" --checks --profile full --root "$PWD" --json` | 只运行 validators,不推进任务状态 |
101
- | 需求终验 | `code-flow task verify --task-dir "<需求目录>" --layers validators,review,e2e --profile full --root "$PWD" --json` | 全层执行与当前输入证据 |
102
- | 诊断 | `code-flow spec doctor --task-dir "<需求目录>" --root "$PWD" --json` | 安装/Context 健康、未解决 Rule 引用与阶段 readiness |
84
+ 批次 worktree 从包含 specs/当前需求/config 的 baseline 创建;业务代码 dirty 时拒绝。worker 默认使用全局 CLI,prepare 不再自动 init;只有需要 worker 内宿主会话时才用 `--init`。随后校验 specs 快照并自动合并。
103
85
 
104
- 浏览器关键旅程用 `e2e`,API/CLI/后台全链路用 `system`,容量用 `capacity`。计划通过与测试收集通过不能代替真实执行;格式、错误修复和各项数量口径见[验收契约](docs/acceptance-contract.md)。
86
+ ## 工作流与过程数据
105
87
 
106
- ## 质量闭环(v0.5)
88
+ `config.json` 的关键字段:
107
89
 
108
- 零配置开箱即用,安装后自动获得两个闭环:
109
-
110
- **合规反馈**:spec 约束可在 frontmatter 标注机检规则,AI 编辑文件后自动检查,违规当场反馈给 AI 修正(只提示、不阻断):
111
-
112
- ```yaml
113
- ---
114
- description: 改 Python 脚本时适用
115
- checks:
116
- - id: no-print-debug
117
- type: regex
118
- pattern: '^\s*print\('
119
- files: "**/*.py"
120
- message: 禁止 print() 调试,用日志到 stderr
121
- ---
90
+ ```json
91
+ {
92
+ "version": 1,
93
+ "workflow": "hook",
94
+ "capture": { "enabled": false, "path": ".code-flow/process" }
95
+ }
122
96
  ```
123
97
 
124
- **学习沉淀**:你在对话中纠正 AI 的行为("不要用 print 调试")会被记录,`/cf-learn` 将同类纠正聚合为候选规范(附 ✅/❌ 对照与机检草稿),由你确认后落盘——纠正一次,不用说第二遍。
125
-
126
- **误报治理**:反馈出现误报时直接告诉 AI"这是误报"即可,同一规则误报 3 次或误报率超 10% 自动停用;`cf-stats` 可查违规榜/修正率/误报率,`cf-stats --audit` 输出僵尸规范复审清单。
127
-
128
- **一键回退**:`config.yml` 中 `quality_loop.enabled: false` 完整回到 v0.5 行为。
129
-
130
- > **数据声明**:质量闭环产生的所有数据(违规事件、纠正语句摘录、统计计数)仅存储在项目本地 `.code-flow/` 目录(`.session-log.jsonl` / `.check-state.json`,已加入 .gitignore),不上传、不外发、30 天滚动清理。纠正采集可经 `quality_loop.correction_capture: false` 单独关闭。
98
+ - `workflow`: `hook`(默认)要求 task 文档和声明测试;`full` 启用 PRD/design/scenarios。设计文档是项目资产,不作为 prompt 输入;只有 Spec 会注入。
99
+ - `capture`: 开启后 CLI/Hook 自动写入 `.code-flow/process/events.jsonl`。验证结束用跨平台命令采集:
131
100
 
132
- ## 支持的 AI 工具
133
-
134
- | 工具 | `--platform` | 状态 |
135
- |------|-------------|------|
136
- | [Claude Code](https://claude.ai/code) | `claude` | ✅ 完整支持 |
137
- | [Codex CLI](https://github.com/openai/codex) | `codex` | ✅ 完整支持 |
138
- | [Costrict](https://costrict.com) | `costrict` | ✅ 完整支持 |
139
- | [OpenCode](https://opencode.ai) | `opencode` | ✅ 完整支持 |
140
-
141
- ## 生成的目录与文件
142
-
143
- 运行 `code-flow init` 后,将在项目根目录生成(或更新)以下结构:
144
-
145
- ```
146
- .code-flow/ # 规范核心(共用)
147
- scripts/ # Python 运行时与 Hook(四平台共用)
148
- runtime-commands.json # 正式运行时命令契约
149
- tasks/<日期>/<需求>/ # PRD、design、scenarios、任务与验收 manifest
150
- specs/<domain>/ # 领域 spec(_map.md + 约束规则)
151
-
152
- # Claude Code (--platform=claude)
153
- .claude/commands/ # 命令模板
154
- .claude/settings.local.json # Hook 注册(PreToolUse + UserPromptSubmit)
155
- CLAUDE.md # 全局指令
156
-
157
- # Codex CLI (--platform=codex)
158
- .codex/hooks.json # Hook 注册(SessionStart + UserPromptSubmit)
159
- .codex/config.toml # Codex 配置
160
- .agents/skills/<skill>/SKILL.md # 项目级 Skills
161
- AGENTS.md # 全局指令
162
-
163
- # Costrict (--platform=costrict)
164
- .costrict/commands/ # 命令模板
165
- .costrict/settings.local.json # Hook 注册
166
- CLAUDE.md # 与 Claude 共用全局指令
167
-
168
- # OpenCode (--platform=opencode)
169
- .opencode/commands/ # 命令模板(含 cf-task/)
170
- .opencode/plugins/code-flow/ # v2 插件:session.prompt 转发到 cf_user_prompt_hook.py
171
- opencode.json # OpenCode 配置(`.opencode/plugins/` 自动发现,无需注册键)
172
- AGENTS.md # 全局指令
101
+ ```bash
102
+ code-flow process collect --out <dir> [--transcript <host-session.jsonl>]
173
103
  ```
174
104
 
175
- ## 依赖说明
105
+ 输出目录包含事件、任务/规范快照、状态、git 信息和可选 transcript;手动压缩传递。
106
+
107
+ ## 大测试集
176
108
 
177
- - 需要 Node.js 18 及以上
178
- - 需要 `python3` 版本 3.9 及以上
179
- - 需要安装 `pyyaml`(`cf_init` 会尝试自动安装,失败会提示手动处理)
180
- - 运行测试需要 `pytest`
109
+ 把相关测试文件合成一次框架调用,使用框架自己的 workers。不同命令确认独立后设置 parallel:true;用 group 串行共享数据库、端口或 fixture,--jobs 限制 CLI 并发。相同调用内完全相同命令只执行一次,不跨次缓存结果。
181
110
 
182
- ### 运行测试
111
+ ## 开发
183
112
 
184
113
  ```bash
185
- python3 -m pip install pyyaml pytest
186
- python3 -m pytest -q tests
114
+ code-flow doctor --json
115
+ npm test
116
+ npm run test:performance
117
+ npm pack --ignore-scripts
187
118
  ```
188
119
 
189
- ## 常见问题
190
-
191
- - EOTP(`--otp`)
192
- - 原因:启用了 npm/pnpm 的一次性密码或 2FA。
193
- - 处理:按提示输入 OTP,或使用 `--otp` 重新执行安装命令。
194
-
195
- - E402(`--access=public`)
196
- - 原因:发布/安装时访问级别不匹配或权限不足。
197
- - 处理:必要时使用 `--access=public` 重新发布或检查权限配置。
120
+ 运行源码使用 node bin/code-flow.js。测试覆盖真实子进程、全局包安装、worktree、平台原生协议和多文件失败重试。
198
121
 
199
- - name 冲突
200
- - 原因:本地或全局已有同名命令/包。
201
- - 处理:先卸载冲突包或更换名称后再安装。
122
+ [文档索引](docs/README.md) · [设计](docs/v1-design.md) · [验收覆盖](docs/v1-implementation.md) · [使用说明](docs/USAGE.md)
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ process.stdout.on('error', error => {
4
+ if (error.code !== 'EPIPE') process.stderr.write('code-flow stdout: ' + error.message + '\n');
5
+ process.exitCode = process.argv[2] === 'hook' ? 0 : 1;
6
+ });
7
+ require('../lib/cli').main(process.argv.slice(2)).then(code => {
8
+ process.exitCode = code;
9
+ }).catch(error => {
10
+ process.stderr.write('code-flow: ' + error.message + '\n');
11
+ process.exitCode = process.argv[2] === 'hook' ? 0 : 1;
12
+ });
package/docs/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # 文档索引
2
+
3
+ 当前只保留 v1 有效文档:
4
+
5
+ | 文档 | 用途 |
6
+ |---|---|
7
+ | [USAGE.md](USAGE.md) | 安装、Spec、Task、测试、worktree、诊断和旧版切换 |
8
+ | [v1-design.md](v1-design.md) | v1 架构、数据格式、Hook、任务生命周期和验收契约 |
9
+ | [v1-implementation.md](v1-implementation.md) | 实现范围、测试矩阵、CI 和已知限制 |
10
+
11
+ 以下历史资料不再维护,可从 Git 标签 `v0.8.1`(提交 `eb0e4c0`)查看:
12
+
13
+ - 旧 Python 运行时与 `src/` 设计;
14
+ - 旧 Spec Context、acceptance manifest、evidence、scenario/design gate 文档;
15
+ - 0.6–0.9 迁移说明、0.8 计划和发布说明;
16
+ - 旧 verification-efficiency 原始测量数据;
17
+ - 旧 worktree-parallel 设计。
18
+
19
+ 当前工作树只使用 `.code-flow/config.json`、`.code-flow/specs/`、`.code-flow/tasks/` 和 `.code-flow/templates/`。v1 不读取、不转换、不自动清理旧文档。