@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
@@ -1,161 +0,0 @@
1
- version: 1
2
-
3
- spec_workflow:
4
- schema_version: 1
5
- enforcement: required # 推荐全门禁;历史 warn/inject 仅兼容部分验证降级,路由完整性错误始终阻断
6
- drift_check: true
7
- scope_expansion_check: true
8
- metrics: true
9
- catalog:
10
- dedup_window: 5
11
-
12
- budget:
13
- total: 2500
14
- l0_max: 800
15
- l1_max: 1700
16
- map_max: 400
17
- # catalog 模式下 spec 目录的 token 上限(超出按 Tier1 优先截断并告警)
18
- catalog_max: 200
19
-
20
- # 质量闭环(v0.5):合规反馈 + 学习采集。
21
- # enabled 仅 literal true 启用(缺失即关闭,升级用户行为不变);
22
- # 子开关缺省跟随 enabled,仅 literal false 单独关闭。
23
- # 数据仅存本地 .code-flow/(.session-log.jsonl / .check-state.json)。
24
- quality_loop:
25
- enabled: true
26
- post_check: true # PostToolUse 违规反馈(只提示不阻断)
27
- stop_check: true # Stop 收尾按 validation.yml 校验(heavy 项跳过)
28
- finish_check: true # 任务 finish 时全量执行 validation.yml(含 heavy,每任务一次)
29
- correction_capture: true # 纠正句式采集(喂 cf-learn 候选)
30
- # 注入时对 spec 内容做保守无损压缩(去行尾空白、折叠多空行、剥 HTML 注释、去重 bullet)
31
- # 缺省视为 true;仅显式 false 关闭
32
- compress: true
33
- compress_reminder: true # 会话过长每 N 轮提醒 /compact(per-session 计数,缺省 true)
34
- code_extensions:
35
- - ".py"
36
- - ".ts"
37
- - ".tsx"
38
- - ".js"
39
- - ".jsx"
40
- - ".go"
41
- - ".java"
42
- - ".rs"
43
- - ".rb"
44
- - ".vue"
45
- - ".svelte"
46
- skip_extensions:
47
- - ".md"
48
- - ".txt"
49
- - ".json"
50
- - ".yml"
51
- - ".yaml"
52
- - ".toml"
53
- - ".lock"
54
- - ".csv"
55
- - ".xml"
56
- - ".svg"
57
- - ".png"
58
- - ".jpg"
59
- - ".jpeg"
60
- - ".gif"
61
- - ".ico"
62
- - ".pdf"
63
- - ".zip"
64
- - ".gz"
65
- - ".tar"
66
- skip_paths:
67
- - "docs/**"
68
- - "*.config.*"
69
- - ".code-flow/**"
70
- - ".claude/**"
71
- - ".codex/**"
72
- - ".costrict/**"
73
- - ".opencode/**"
74
- - "node_modules/**"
75
- - "dist/**"
76
- - "build/**"
77
- - "out/**"
78
- - "coverage/**"
79
- - ".next/**"
80
- - ".cache/**"
81
- - ".venv/**"
82
- - "venv/**"
83
- - "__pycache__/**"
84
- - ".git/**"
85
-
86
- path_mapping:
87
- shared:
88
- # 共享模板供 cf-task:align / cf-task:prd 命令显式 Read 使用,
89
- # 不是约束规范,禁止通配符自动注入。
90
- # 仅 _map.md 保持 "*" 作为 Tier 0 导航。
91
- specs:
92
- - path: "shared/_map.md"
93
- tags: ["*"]
94
- tier: 0
95
- - path: "shared/scenarios-template.md"
96
- tags: [] # 永不自动注入,仅 align 显式 Read
97
- tier: 1
98
- - path: "shared/prd-template.md"
99
- tags: [] # 永不自动注入,仅 cf-task:prd 命令显式 Read
100
- tier: 1
101
- - path: "shared/design/design-lite.md"
102
- tags: [] # 永不自动注入,仅 cf-task:align 命令显式 Read
103
- tier: 1
104
- - path: "shared/design/design-full.md"
105
- tags: [] # 永不自动注入,仅 cf-task:align 命令显式 Read
106
- tier: 1
107
- - path: "shared/design/design-frontend.md"
108
- tags: [] # 永不自动注入,仅 cf-task:align 命令显式 Read(前端设计模板)
109
- tier: 1
110
- frontend:
111
- patterns:
112
- - "src/components/**"
113
- - "src/pages/**"
114
- - "src/hooks/**"
115
- - "src/composables/**"
116
- - "src/services/**"
117
- - "src/styles/**"
118
- - "**/*.tsx"
119
- - "**/*.jsx"
120
- - "**/*.css"
121
- - "**/*.scss"
122
- specs:
123
- - path: "frontend/_map.md"
124
- tags: ["*"]
125
- tier: 0
126
- - path: "frontend/directory-structure.md"
127
- tags: ["directory", "structure", "folder", "route", "page", "layout"]
128
- tier: 1
129
- - path: "frontend/quality-standards.md"
130
- tags: ["quality", "type", "lint", "error", "test", "state", "strict"]
131
- tier: 1
132
- - path: "frontend/component-specs.md"
133
- tags: ["component", "prop", "hook", "render", "ui", "style"]
134
- tier: 1
135
- backend:
136
- patterns:
137
- - "services/**"
138
- - "api/**"
139
- - "models/**"
140
- - "*.py"
141
- - "**/*.py"
142
- - "**/*.go"
143
- specs:
144
- - path: "backend/_map.md"
145
- tags: ["*"]
146
- tier: 0
147
- - path: "backend/directory-structure.md"
148
- tags: ["directory", "structure", "folder", "module", "layout"]
149
- tier: 1
150
- - path: "backend/logging.md"
151
- tags: ["log", "logging", "debug", "trace", "monitor", "observe"]
152
- tier: 1
153
- - path: "backend/database.md"
154
- tags: ["database", "db", "sql", "orm", "model", "migration", "query", "table", "schema"]
155
- tier: 1
156
- - path: "backend/platform-rules.md"
157
- tags: ["api", "deploy", "config", "version", "compatibility", "release", "flag"]
158
- tier: 1
159
- - path: "backend/code-quality-performance.md"
160
- tags: ["quality", "performance", "error", "exception", "test", "timeout", "retry", "cache"]
161
- tier: 1
@@ -1,259 +0,0 @@
1
- {
2
- "schema_version": 1,
3
- "commands": {
4
- "spec budget": {
5
- "module": "cf_spec_context",
6
- "prefix": ["budget"],
7
- "example_args": "--help"
8
- },
9
- "spec impact": {
10
- "module": "cf_spec_context",
11
- "prefix": ["impact"],
12
- "example_args": "--help"
13
- },
14
- "spec optimize": {
15
- "module": "cf_spec_context",
16
- "prefix": ["optimize"],
17
- "example_args": "--help"
18
- },
19
- "spec catalog": {
20
- "module": "cf_spec_context",
21
- "prefix": [
22
- "catalog"
23
- ],
24
- "example_args": "--help"
25
- },
26
- "spec decision": {
27
- "module": "cf_spec_context",
28
- "prefix": [
29
- "decision"
30
- ],
31
- "example_args": "--help"
32
- },
33
- "spec bind": {
34
- "module": "cf_spec_context",
35
- "prefix": [
36
- "bind"
37
- ],
38
- "example_args": "--help"
39
- },
40
- "spec validate": {
41
- "module": "cf_spec_context",
42
- "prefix": [
43
- "validate"
44
- ],
45
- "example_args": "--task-dir \"<需求目录>\" --json"
46
- },
47
- "spec status": {
48
- "module": "cf_spec_context",
49
- "prefix": [
50
- "status"
51
- ],
52
- "example_args": "--task-dir \"<需求目录>\" --root \"$PWD\" --json"
53
- },
54
- "spec doctor": {
55
- "module": "cf_spec_context",
56
- "prefix": [
57
- "doctor"
58
- ],
59
- "example_args": "--task-dir \"<需求目录>\" --root \"$PWD\" --json"
60
- },
61
- "spec refresh": {
62
- "module": "cf_spec_context",
63
- "prefix": [
64
- "refresh"
65
- ],
66
- "example_args": "--task-dir \"<需求目录>\" --root \"$PWD\" --json"
67
- },
68
- "spec refresh-missing": {
69
- "module": "cf_spec_context",
70
- "prefix": [
71
- "refresh-missing"
72
- ],
73
- "example_args": "--help"
74
- },
75
- "spec active": {
76
- "module": "cf_spec_context",
77
- "prefix": [
78
- "active"
79
- ],
80
- "example_args": "--help"
81
- },
82
- "task start": {
83
- "module": "cf_spec_context",
84
- "prefix": [
85
- "start"
86
- ],
87
- "example_args": "--task-dir \"<需求目录>\" --task-file \"<任务文件>\" --task TASK-001 --root \"$PWD\" --json"
88
- },
89
- "task finish": {
90
- "module": "cf_task_workflow",
91
- "prefix": [
92
- "finish"
93
- ],
94
- "example_args": "--task-dir \"<需求目录>\" --task TASK-001 --root \"$PWD\" --json"
95
- },
96
- "task block": {
97
- "module": "cf_task_workflow",
98
- "prefix": [
99
- "block"
100
- ],
101
- "example_args": "--help"
102
- },
103
- "task resume": {
104
- "module": "cf_task_workflow",
105
- "prefix": [
106
- "resume"
107
- ],
108
- "example_args": "--help"
109
- },
110
- "task verify": {
111
- "module": "cf_task_workflow",
112
- "prefix": [
113
- "verify"
114
- ],
115
- "example_args": "--task-dir \"<需求目录>\" --tasks TASK-001,TASK-002 --layers validators,e2e --profile smoke --root \"$PWD\" --json"
116
- },
117
- "task verify-e2e": {
118
- "module": "cf_task_workflow",
119
- "prefix": [
120
- "verify-e2e"
121
- ],
122
- "example_args": "--task-dir \"<需求目录>\" --root \"$PWD\" --json"
123
- },
124
- "task confirm-manual": {
125
- "module": "cf_task_workflow",
126
- "prefix": [
127
- "confirm-manual"
128
- ],
129
- "example_args": "--help"
130
- },
131
- "task cleanup-session": {
132
- "module": "cf_task_workflow",
133
- "prefix": [
134
- "cleanup-session"
135
- ],
136
- "example_args": "--help"
137
- },
138
- "audit": {
139
- "module": "cf_audit",
140
- "prefix": [],
141
- "example_args": "--task-dir \"<需求目录>\" --root \"$PWD\" --json"
142
- },
143
- "spec gate": {
144
- "module": "cf_spec_gate",
145
- "prefix": [],
146
- "example_args": "--help"
147
- },
148
- "spec session": {
149
- "module": "cf_spec_session",
150
- "prefix": [],
151
- "example_args": "--help"
152
- },
153
- "task index": {
154
- "module": "cf_task_index",
155
- "prefix": [],
156
- "example_args": "--help"
157
- },
158
- "task parallel": {
159
- "module": "cf_task_parallel",
160
- "prefix": [],
161
- "example_args": "--help"
162
- },
163
- "acceptance manifest": {
164
- "module": "cf_acceptance_manifest",
165
- "prefix": [],
166
- "example_args": "--task-file \"<任务文件>\" --output \"<需求目录>/.acceptance-manifest.json\""
167
- },
168
- "acceptance project": {
169
- "module": "cf_acceptance_manifest",
170
- "prefix": [
171
- "--project"
172
- ],
173
- "example_args": "--task-file \"<任务文件>\" --output \"<需求目录>/.acceptance-manifest.json\""
174
- },
175
- "acceptance risk": {
176
- "module": "cf_acceptance_manifest",
177
- "prefix": [
178
- "--accept-risk"
179
- ],
180
- "example_args": "--task-file \"<任务文件>\" --output \"<需求目录>/.acceptance-manifest.json\" --check-id CHK-... --risk-owner \"<owner>\" --risk-reason \"<reason>\" --expires-at 2026-12-31 --confirmed-by \"<user>\" --source \"<user reply>\""
181
- },
182
- "acceptance run": {
183
- "module": "cf_acceptance_runner",
184
- "prefix": [],
185
- "example_args": "--manifest \"<需求目录>/.acceptance-manifest.json\" --root \"$PWD\" --write-evidence"
186
- },
187
- "evidence import": {
188
- "module": "cf_evidence_import",
189
- "prefix": [
190
- "import"
191
- ],
192
- "example_args": "--format junit --file \"<report.xml>\" --commit \"$(git rev-parse HEAD)\" --run-url \"<ci-run-url>\" --json"
193
- },
194
- "validate": {
195
- "module": "cf_validation",
196
- "prefix": [],
197
- "example_args": "--root \"$PWD\" --json"
198
- },
199
- "stats": {
200
- "module": "cf_stats",
201
- "prefix": [],
202
- "example_args": "--help"
203
- },
204
- "feedback ignore": {
205
- "module": "cf_feedback",
206
- "prefix": [
207
- "ignore"
208
- ],
209
- "example_args": "--help"
210
- },
211
- "sync check": {
212
- "module": "cf_sync",
213
- "prefix": [
214
- "check"
215
- ],
216
- "example_args": "--help"
217
- },
218
- "sync apply": {
219
- "module": "cf_sync",
220
- "prefix": [
221
- "sync"
222
- ],
223
- "example_args": "--help"
224
- },
225
- "task archive": {
226
- "module": "cf_task_workflow",
227
- "prefix": [
228
- "archive"
229
- ],
230
- "example_args": "--task-dir \"<需求目录>\" --root \"$PWD\" --json"
231
- },
232
- "scenarios parse": {
233
- "module": "cf_scenarios",
234
- "prefix": [
235
- "parse"
236
- ],
237
- "example_args": "--file \"<需求>.scenarios.md\" --quality --json"
238
- },
239
- "scenarios merge": {
240
- "module": "cf_scenarios",
241
- "prefix": [
242
- "merge"
243
- ],
244
- "example_args": "--file a.scenarios.md --file b.scenarios.md --json"
245
- },
246
- "scenarios migrate": {
247
- "module": "cf_scenarios",
248
- "prefix": [
249
- "migrate"
250
- ],
251
- "example_args": "--task-file \"<任务文件>\" --output \"<需求>.scenarios.md\" --json"
252
- },
253
- "design lint": {
254
- "module": "cf_design_lint",
255
- "prefix": [],
256
- "example_args": "--file \"<需求>.design.md\" --scenarios-file \"<需求>.scenarios.md\" --json"
257
- }
258
- }
259
- }
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_acceptance_manifest."""
3
- import sys
4
-
5
- from codeflow.cli import cf_acceptance_manifest as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_acceptance_runner."""
3
- import sys
4
-
5
- from codeflow.cli import cf_acceptance_runner as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_audit."""
3
- import sys
4
-
5
- from codeflow.cli import cf_audit as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.hooks.cf_codex_hook."""
3
- import sys
4
-
5
- from codeflow.hooks import cf_codex_hook as _impl
6
-
7
- if __name__ == "__main__":
8
- _impl.main()
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_design_lint."""
3
- import sys
4
-
5
- from codeflow.cli import cf_design_lint as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_evidence_import."""
3
- import sys
4
-
5
- from codeflow.cli import cf_evidence_import as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_feedback."""
3
- import sys
4
-
5
- from codeflow.cli import cf_feedback as _impl
6
-
7
- if __name__ == "__main__":
8
- sys.exit(_impl.main(sys.argv[1:]))
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.hooks.cf_opencode_event."""
3
- import sys
4
-
5
- from codeflow.hooks import cf_opencode_event as _impl
6
-
7
- if __name__ == "__main__":
8
- _impl.main()
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.hooks.cf_post_hook."""
3
- import sys
4
-
5
- from codeflow.hooks import cf_post_hook as _impl
6
-
7
- if __name__ == "__main__":
8
- _impl.main()
9
- _impl.timing_log("cf_post_hook")
10
- else:
11
- sys.modules[__name__] = _impl
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.hooks.cf_pre_tool_hook."""
3
- import sys
4
-
5
- from codeflow.hooks import cf_pre_tool_hook as _impl
6
-
7
- if __name__ == "__main__":
8
- _impl.main()
9
- _impl.timing_log("cf_pre_tool_hook")
10
- else:
11
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_scenarios."""
3
- import sys
4
-
5
- from codeflow.cli import cf_scenarios as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_spec_context."""
3
- import sys
4
-
5
- from codeflow.cli import cf_spec_context as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_spec_gate."""
3
- import sys
4
-
5
- from codeflow.cli import cf_spec_gate as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_spec_session."""
3
- import sys
4
-
5
- from codeflow.cli import cf_spec_session as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_stats."""
3
- import sys
4
-
5
- from codeflow.cli import cf_stats as _impl
6
-
7
- if __name__ == "__main__":
8
- _impl.main()
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.hooks.cf_stop_hook."""
3
- import sys
4
-
5
- from codeflow.hooks import cf_stop_hook as _impl
6
-
7
- if __name__ == "__main__":
8
- _impl.main()
9
- _impl.timing_log("cf_stop_hook")
10
- else:
11
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_sync."""
3
- import sys
4
-
5
- from codeflow.cli import cf_sync as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_task_index."""
3
- import sys
4
-
5
- from codeflow.cli import cf_task_index as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_task_parallel."""
3
- import sys
4
-
5
- from codeflow.cli import cf_task_parallel as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.cli.cf_task_workflow."""
3
- import sys
4
-
5
- from codeflow.cli import cf_task_workflow as _impl
6
-
7
- if __name__ == "__main__":
8
- raise SystemExit(_impl.main())
9
- else:
10
- sys.modules[__name__] = _impl
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Path-frozen entry shim: implementation lives in codeflow.hooks.cf_user_prompt_hook."""
3
- import sys
4
-
5
- from codeflow.hooks import cf_user_prompt_hook as _impl
6
-
7
- if __name__ == "__main__":
8
- _impl.main()
9
- _impl.timing_log("cf_user_prompt_hook")
10
- else:
11
- sys.modules[__name__] = _impl