cc-devflow 4.2.0 → 4.4.1

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 (559) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +64 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +212 -0
  3. package/.claude/skills/cc-act/SKILL.md +322 -0
  4. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +64 -0
  5. package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +25 -0
  6. package/.claude/skills/cc-act/references/closure-contract.md +49 -0
  7. package/.claude/skills/cc-act/references/git-commit-guidelines.md +83 -0
  8. package/.claude/skills/cc-act/scripts/archive-requirement.sh +49 -0
  9. package/.claude/skills/cc-act/scripts/cc-act-common.sh +240 -0
  10. package/.claude/skills/cc-act/scripts/detect-ship-target.sh +82 -0
  11. package/.claude/skills/cc-act/scripts/generate-status-report.sh +83 -0
  12. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +195 -0
  13. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +315 -0
  14. package/.claude/skills/cc-act/scripts/verify-act-gate.sh +63 -0
  15. package/.claude/skills/cc-check/CHANGELOG.md +73 -0
  16. package/.claude/skills/cc-check/PLAYBOOK.md +153 -0
  17. package/.claude/skills/cc-check/SKILL.md +345 -0
  18. package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +50 -0
  19. package/.claude/skills/cc-check/references/gate-contract.md +29 -0
  20. package/.claude/skills/cc-check/references/review-contract.md +45 -0
  21. package/.claude/skills/cc-check/scripts/render-report-card.js +229 -0
  22. package/.claude/skills/cc-check/scripts/run-quality-gates.sh +86 -0
  23. package/.claude/skills/cc-check/scripts/verify-gate.sh +57 -0
  24. package/.claude/skills/cc-do/CHANGELOG.md +49 -0
  25. package/.claude/skills/cc-do/PLAYBOOK.md +119 -0
  26. package/.claude/skills/cc-do/SKILL.md +216 -0
  27. package/.claude/skills/cc-do/references/execution-recovery.md +86 -0
  28. package/.claude/skills/cc-do/references/parallel-dispatch.md +80 -0
  29. package/.claude/skills/cc-do/scripts/build-task-context.sh +184 -0
  30. package/.claude/skills/cc-do/scripts/cc-do-common.sh +79 -0
  31. package/.claude/skills/cc-do/scripts/check-task-status.sh +92 -0
  32. package/.claude/skills/cc-do/scripts/detect-file-conflicts.sh +87 -0
  33. package/.claude/skills/cc-do/scripts/mark-task-complete.sh +119 -0
  34. package/.claude/skills/cc-do/scripts/record-review-decision.sh +89 -0
  35. package/.claude/skills/cc-do/scripts/recover-workflow.sh +84 -0
  36. package/.claude/skills/cc-do/scripts/run-problem-analysis.sh +70 -0
  37. package/.claude/skills/cc-do/scripts/select-ready-tasks.sh +135 -0
  38. package/.claude/skills/cc-do/scripts/verify-task-gates.sh +94 -0
  39. package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +102 -0
  40. package/.claude/skills/cc-investigate/CHANGELOG.md +26 -0
  41. package/.claude/skills/cc-investigate/PLAYBOOK.md +49 -0
  42. package/.claude/skills/cc-investigate/SKILL.md +221 -0
  43. package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +55 -0
  44. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +52 -0
  45. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +103 -0
  46. package/.claude/skills/cc-investigate/references/investigation-contract.md +28 -0
  47. package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +38 -0
  48. package/.claude/skills/cc-plan/CHANGELOG.md +99 -0
  49. package/.claude/skills/cc-plan/PLAYBOOK.md +106 -0
  50. package/.claude/skills/cc-plan/SKILL.md +325 -0
  51. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +155 -0
  52. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +98 -0
  53. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +108 -0
  54. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +79 -0
  55. package/.claude/skills/cc-plan/references/planning-contract.md +82 -0
  56. package/.claude/skills/cc-plan/scripts/bump-skill-version.sh +103 -0
  57. package/.claude/skills/cc-plan/scripts/parse-task-dependencies.js +75 -0
  58. package/.claude/skills/cc-plan/scripts/validate-scope.sh +78 -0
  59. package/.claude/skills/cc-roadmap/CHANGELOG.md +114 -0
  60. package/.claude/skills/cc-roadmap/PLAYBOOK.md +136 -0
  61. package/.claude/skills/cc-roadmap/SKILL.md +259 -0
  62. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +45 -0
  63. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +153 -0
  64. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +48 -0
  65. package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +37 -0
  66. package/.claude/skills/cc-roadmap/scripts/bump-skill-version.sh +103 -0
  67. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +604 -0
  68. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/query.js +63 -0
  69. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +245 -0
  70. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/store.js +139 -0
  71. package/.claude/skills/cc-roadmap/scripts/locate-roadmap-item.sh +109 -0
  72. package/.claude/skills/cc-roadmap/scripts/roadmap-tracking.js +153 -0
  73. package/.claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh +100 -0
  74. package/.claude/skills/cc-simplify/CHANGELOG.md +10 -0
  75. package/.claude/skills/cc-simplify/SKILL.md +55 -0
  76. package/.claude/skills/cc-spec-init/CHANGELOG.md +7 -0
  77. package/.claude/skills/cc-spec-init/PLAYBOOK.md +55 -0
  78. package/.claude/skills/cc-spec-init/SKILL.md +127 -0
  79. package/.claude/skills/cc-spec-init/assets/CAPABILITY_TEMPLATE.md +63 -0
  80. package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +25 -0
  81. package/.claude/skills/cc-spec-init/assets/INDEX_TEMPLATE.md +34 -0
  82. package/.claude/skills/cc-spec-init/references/spec-contract.md +22 -0
  83. package/.claude/skills/cc-spec-init/scripts/bootstrap-specs.sh +31 -0
  84. package/.claude/skills/cc-spec-init/scripts/validate-spec-links.sh +45 -0
  85. package/CHANGELOG.md +101 -4
  86. package/README.md +120 -755
  87. package/README.zh-CN.md +119 -755
  88. package/bin/adapt.js +2 -6
  89. package/bin/cc-devflow-cli.js +72 -177
  90. package/config/distributable-skills.json +24 -0
  91. package/docs/CLAUDE.md +10 -6
  92. package/docs/commands/README.md +19 -46
  93. package/docs/commands/README.zh-CN.md +25 -48
  94. package/docs/examples/BY-ARTIFACT.md +7 -0
  95. package/docs/examples/README.md +38 -0
  96. package/docs/examples/START-HERE.md +149 -0
  97. package/docs/examples/example-bindings.json +38 -0
  98. package/docs/examples/full-design-blocked/BACKLOG.md +45 -0
  99. package/docs/examples/full-design-blocked/README.md +55 -0
  100. package/docs/examples/full-design-blocked/ROADMAP.md +53 -0
  101. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +154 -0
  102. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +146 -0
  103. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +78 -0
  104. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +52 -0
  105. package/docs/examples/full-design-blocked/roadmap-tracking.json +50 -0
  106. package/docs/examples/local-handoff/BACKLOG.md +45 -0
  107. package/docs/examples/local-handoff/README.md +56 -0
  108. package/docs/examples/local-handoff/ROADMAP.md +45 -0
  109. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +39 -0
  110. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +29 -0
  111. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +71 -0
  112. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +98 -0
  113. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +59 -0
  114. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +44 -0
  115. package/docs/examples/local-handoff/roadmap-tracking.json +48 -0
  116. package/docs/examples/pdca-loop/BACKLOG.md +46 -0
  117. package/docs/examples/pdca-loop/README.md +58 -0
  118. package/docs/examples/pdca-loop/ROADMAP.md +133 -0
  119. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +72 -0
  120. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +29 -0
  121. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +72 -0
  122. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +201 -0
  123. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +73 -0
  124. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +44 -0
  125. package/docs/examples/pdca-loop/roadmap-tracking.json +114 -0
  126. package/docs/examples/scripts/check-example-bindings.sh +116 -0
  127. package/docs/guides/getting-started.md +94 -129
  128. package/docs/guides/getting-started.zh-CN.md +103 -84
  129. package/docs/skill-runtime-migration.md +46 -0
  130. package/docs/v4.3.0-migration-guide.md +111 -0
  131. package/lib/compiler/CLAUDE.md +55 -84
  132. package/lib/compiler/__tests__/drift.test.js +1 -1
  133. package/lib/compiler/__tests__/errors.test.js +0 -1
  134. package/lib/compiler/__tests__/integration.test.js +49 -3
  135. package/lib/compiler/__tests__/manifest.test.js +0 -156
  136. package/lib/compiler/__tests__/parser.test.js +33 -104
  137. package/lib/compiler/__tests__/schemas.test.js +30 -34
  138. package/lib/compiler/__tests__/skills-registry.test.js +114 -0
  139. package/lib/compiler/__tests__/transformer.test.js +5 -9
  140. package/lib/compiler/emitters/antigravity-emitter.js +5 -213
  141. package/lib/compiler/emitters/base-emitter.js +3 -298
  142. package/lib/compiler/emitters/codex-emitter.js +4 -202
  143. package/lib/compiler/emitters/cursor-emitter.js +3 -287
  144. package/lib/compiler/emitters/qwen-emitter.js +4 -176
  145. package/lib/compiler/index.js +65 -345
  146. package/lib/compiler/manifest.js +6 -68
  147. package/lib/compiler/parser.js +31 -63
  148. package/lib/compiler/platforms.js +32 -277
  149. package/lib/compiler/resource-copier.js +176 -6
  150. package/lib/compiler/rules-emitters/__tests__/antigravity-rules-emitter.test.js +3 -3
  151. package/lib/compiler/rules-emitters/__tests__/cursor-rules-emitter.test.js +14 -4
  152. package/lib/compiler/rules-emitters/__tests__/qwen-rules-emitter.test.js +16 -7
  153. package/lib/compiler/rules-emitters/antigravity-rules-emitter.js +10 -15
  154. package/lib/compiler/rules-emitters/base-rules-emitter.js +5 -5
  155. package/lib/compiler/rules-emitters/cursor-rules-emitter.js +7 -12
  156. package/lib/compiler/rules-emitters/index.js +6 -3
  157. package/lib/compiler/rules-emitters/qwen-rules-emitter.js +7 -7
  158. package/lib/compiler/schemas.js +8 -4
  159. package/lib/compiler/skills-registry.js +213 -15
  160. package/lib/compiler/transformer.js +1 -1
  161. package/lib/skill-runtime/CLAUDE.md +19 -0
  162. package/lib/skill-runtime/__tests__/autopilot.test.js +210 -0
  163. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +181 -0
  164. package/lib/skill-runtime/__tests__/delegation.test.js +97 -0
  165. package/lib/skill-runtime/__tests__/dispatch.test.js +267 -0
  166. package/lib/skill-runtime/__tests__/intent.test.js +219 -0
  167. package/lib/skill-runtime/__tests__/lifecycle.test.js +169 -0
  168. package/lib/skill-runtime/__tests__/paths.test.js +42 -0
  169. package/lib/skill-runtime/__tests__/planner.tdd.test.js +250 -0
  170. package/lib/skill-runtime/__tests__/prepare-pr.test.js +139 -0
  171. package/lib/skill-runtime/__tests__/query.test.js +284 -0
  172. package/lib/skill-runtime/__tests__/runtime.integration.test.js +279 -0
  173. package/lib/skill-runtime/__tests__/schemas.test.js +207 -0
  174. package/lib/skill-runtime/__tests__/team-state.test.js +51 -0
  175. package/lib/skill-runtime/__tests__/worker-run.test.js +253 -0
  176. package/lib/skill-runtime/__tests__/worker.test.js +56 -0
  177. package/lib/skill-runtime/artifacts.js +93 -0
  178. package/lib/skill-runtime/delegation.js +533 -0
  179. package/lib/skill-runtime/index.js +34 -0
  180. package/lib/skill-runtime/intent.js +333 -0
  181. package/lib/skill-runtime/lifecycle.js +294 -0
  182. package/lib/skill-runtime/operations/CLAUDE.md +19 -0
  183. package/lib/skill-runtime/operations/approve.js +66 -0
  184. package/lib/skill-runtime/operations/autopilot-core.js +337 -0
  185. package/lib/skill-runtime/operations/autopilot-execution.js +307 -0
  186. package/lib/skill-runtime/operations/autopilot-shared.js +48 -0
  187. package/lib/skill-runtime/operations/autopilot.js +163 -0
  188. package/lib/skill-runtime/operations/dispatch.js +454 -0
  189. package/lib/skill-runtime/operations/init.js +64 -0
  190. package/lib/{harness → skill-runtime}/operations/janitor.js +9 -6
  191. package/lib/skill-runtime/operations/plan.js +59 -0
  192. package/lib/skill-runtime/operations/prepare-pr.js +25 -0
  193. package/lib/{harness → skill-runtime}/operations/release.js +18 -5
  194. package/lib/skill-runtime/operations/resume.js +143 -0
  195. package/lib/skill-runtime/operations/snapshot.js +45 -0
  196. package/lib/skill-runtime/operations/verify.js +170 -0
  197. package/lib/skill-runtime/operations/worker-run.js +529 -0
  198. package/lib/skill-runtime/operations/worker.js +33 -0
  199. package/lib/skill-runtime/paths.js +213 -0
  200. package/lib/skill-runtime/planner.js +519 -0
  201. package/lib/skill-runtime/query.js +157 -0
  202. package/lib/skill-runtime/review.js +557 -0
  203. package/lib/skill-runtime/schemas.js +400 -0
  204. package/lib/{harness → skill-runtime}/store.js +45 -30
  205. package/lib/skill-runtime/team-state.js +122 -0
  206. package/package.json +13 -11
  207. package/.claude/CLAUDE.md +0 -125
  208. package/.claude/agents/architecture-designer.md +0 -443
  209. package/.claude/agents/bug-analyzer.md +0 -381
  210. package/.claude/agents/checklist-agent.md +0 -175
  211. package/.claude/agents/clarify-analyst.md +0 -50
  212. package/.claude/agents/code-quality-reviewer.md +0 -205
  213. package/.claude/agents/code-reviewer.md +0 -71
  214. package/.claude/agents/codex-analyzer.md +0 -39
  215. package/.claude/agents/compatibility-checker.md +0 -579
  216. package/.claude/agents/consistency-checker.md +0 -532
  217. package/.claude/agents/dev-implementer.md +0 -195
  218. package/.claude/agents/flow-researcher.md +0 -132
  219. package/.claude/agents/impact-analyzer.md +0 -440
  220. package/.claude/agents/planner.md +0 -230
  221. package/.claude/agents/prd-writer.md +0 -320
  222. package/.claude/agents/project-guidelines-generator.md +0 -1329
  223. package/.claude/agents/qa-tester.md +0 -313
  224. package/.claude/agents/release-manager.md +0 -295
  225. package/.claude/agents/security-reviewer.md +0 -314
  226. package/.claude/agents/spec-reviewer.md +0 -221
  227. package/.claude/agents/style-guide-generator.md +0 -458
  228. package/.claude/agents/tech-architect.md +0 -516
  229. package/.claude/agents/ui-designer.md +0 -485
  230. package/.claude/commands/core/architecture.md +0 -459
  231. package/.claude/commands/core/guidelines.md +0 -511
  232. package/.claude/commands/core/roadmap.md +0 -468
  233. package/.claude/commands/core/style.md +0 -83
  234. package/.claude/commands/flow/CLAUDE.md +0 -28
  235. package/.claude/commands/flow/archive.md +0 -280
  236. package/.claude/commands/flow/checklist.md +0 -18
  237. package/.claude/commands/flow/clarify.md +0 -18
  238. package/.claude/commands/flow/constitution.md +0 -82
  239. package/.claude/commands/flow/context.md +0 -150
  240. package/.claude/commands/flow/delta.md +0 -245
  241. package/.claude/commands/flow/dev.md +0 -40
  242. package/.claude/commands/flow/fix.md +0 -217
  243. package/.claude/commands/flow/ideate.md +0 -214
  244. package/.claude/commands/flow/init.md +0 -38
  245. package/.claude/commands/flow/new.md +0 -23
  246. package/.claude/commands/flow/quality.md +0 -21
  247. package/.claude/commands/flow/release.md +0 -36
  248. package/.claude/commands/flow/restart.md +0 -97
  249. package/.claude/commands/flow/spec.md +0 -36
  250. package/.claude/commands/flow/status.md +0 -64
  251. package/.claude/commands/flow/update.md +0 -111
  252. package/.claude/commands/flow/upgrade.md +0 -115
  253. package/.claude/commands/flow/verify.md +0 -37
  254. package/.claude/commands/flow/workspace.md +0 -155
  255. package/.claude/commands/util/cancel-ralph.md +0 -60
  256. package/.claude/commands/util/code-review.md +0 -58
  257. package/.claude/commands/util/git-commit.md +0 -422
  258. package/.claude/commands/util/problem-analyzer.md +0 -60
  259. package/.claude/config/quality-gates.yml +0 -305
  260. package/.claude/config/quality-rules.yml +0 -161
  261. package/.claude/docs/SPEC_KIT_CONSTITUTION_ANALYSIS.md +0 -426
  262. package/.claude/docs/design/consistency-conflict-detection-algorithms.md +0 -658
  263. package/.claude/docs/design/intent-driven-input-design.md +0 -380
  264. package/.claude/docs/design/prd-version-management-design.md +0 -437
  265. package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +0 -117
  266. package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +0 -99
  267. package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +0 -188
  268. package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +0 -338
  269. package/.claude/docs/guides/TEAM_MODE_GUIDE.md +0 -312
  270. package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +0 -633
  271. package/.claude/docs/templates/ATTEMPT_TEMPLATE.md +0 -156
  272. package/.claude/docs/templates/BACKLOG_TEMPLATE.md +0 -261
  273. package/.claude/docs/templates/BRAINSTORM_TEMPLATE.md +0 -148
  274. package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +0 -52
  275. package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +0 -206
  276. package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +0 -71
  277. package/.claude/docs/templates/DELTA_SPEC_TEMPLATE.md +0 -91
  278. package/.claude/docs/templates/DESIGN_DECISIONS_TEMPLATE.md +0 -151
  279. package/.claude/docs/templates/EPIC_TEMPLATE.md +0 -805
  280. package/.claude/docs/templates/ERROR_LOG_TEMPLATE.md +0 -80
  281. package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +0 -198
  282. package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +0 -57
  283. package/.claude/docs/templates/JOURNAL_TEMPLATE.md +0 -75
  284. package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +0 -76
  285. package/.claude/docs/templates/PRD_TEMPLATE.md +0 -562
  286. package/.claude/docs/templates/RESEARCH_TEMPLATE.md +0 -276
  287. package/.claude/docs/templates/REVIEW-HIGH.md +0 -57
  288. package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +0 -198
  289. package/.claude/docs/templates/ROADMAP_TEMPLATE.md +0 -310
  290. package/.claude/docs/templates/STYLE_TEMPLATE.md +0 -1266
  291. package/.claude/docs/templates/TASKS_TEMPLATE.md +0 -523
  292. package/.claude/docs/templates/TECH_DESIGN_TEMPLATE.md +0 -1019
  293. package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +0 -1435
  294. package/.claude/docs/templates/_shared/CLAUDE.md +0 -36
  295. package/.claude/docs/templates/_shared/CONSTITUTION_CHECK.md +0 -125
  296. package/.claude/docs/templates/_shared/VALIDATION_CHECKLIST.md +0 -187
  297. package/.claude/docs/templates/_shared/YAML_FRONTMATTER.md +0 -164
  298. package/.claude/docs/templates/context/dev.jsonl.template +0 -6
  299. package/.claude/docs/templates/context/epic.jsonl.template +0 -5
  300. package/.claude/docs/templates/context/prd.jsonl.template +0 -4
  301. package/.claude/docs/templates/context/research.jsonl.template +0 -4
  302. package/.claude/docs/templates/context/review.jsonl.template +0 -5
  303. package/.claude/docs/templates/context/tech.jsonl.template +0 -5
  304. package/.claude/guides/agent-guides/agent-coordination-guide.md +0 -459
  305. package/.claude/guides/project-guidelines-system.md +0 -463
  306. package/.claude/guides/technical-guides/datetime-handling-guide.md +0 -563
  307. package/.claude/guides/technical-guides/git-github-guide.md +0 -642
  308. package/.claude/guides/technical-guides/test-execution-guide.md +0 -618
  309. package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +0 -217
  310. package/.claude/guides/workflow-guides/flow-orchestrator.md +0 -48
  311. package/.claude/hooks/CLAUDE.md +0 -342
  312. package/.claude/hooks/checklist-gate.js +0 -397
  313. package/.claude/hooks/error-handling-reminder.sh +0 -12
  314. package/.claude/hooks/error-handling-reminder.ts +0 -459
  315. package/.claude/hooks/hooks.json +0 -15
  316. package/.claude/hooks/inject-agent-context.ts +0 -480
  317. package/.claude/hooks/inject-skill-context.ts +0 -359
  318. package/.claude/hooks/post-tool-use-tracker.sh +0 -280
  319. package/.claude/hooks/pre-tool-use-guardrail.sh +0 -36
  320. package/.claude/hooks/pre-tool-use-guardrail.ts +0 -342
  321. package/.claude/hooks/ralph-loop.ts +0 -931
  322. package/.claude/hooks/ralph-stop-hook.sh +0 -190
  323. package/.claude/hooks/skill-activation-prompt.sh +0 -36
  324. package/.claude/hooks/skill-activation-prompt.ts +0 -214
  325. package/.claude/hooks/state/skills-used-test-guard.json +0 -3
  326. package/.claude/hooks/task-completed-hook.ts +0 -593
  327. package/.claude/hooks/teammate-idle-hook.ts +0 -690
  328. package/.claude/hooks/types/team-types.d.ts +0 -238
  329. package/.claude/rules/devflow-conventions.md +0 -286
  330. package/.claude/rules/project-constitution.md +0 -1002
  331. package/.claude/rules/rationalization-library.md +0 -282
  332. package/.claude/schemas/constitution.schema.json +0 -43
  333. package/.claude/scripts/CLAUDE.md +0 -76
  334. package/.claude/scripts/analyze-upgrade-impact.sh +0 -200
  335. package/.claude/scripts/archive-requirement.sh +0 -394
  336. package/.claude/scripts/calculate-checklist-completion.sh +0 -243
  337. package/.claude/scripts/calculate-quarter.sh +0 -206
  338. package/.claude/scripts/check-dependencies.sh +0 -409
  339. package/.claude/scripts/check-prerequisites.sh +0 -232
  340. package/.claude/scripts/check-task-status.sh +0 -288
  341. package/.claude/scripts/checklist-errors.sh +0 -131
  342. package/.claude/scripts/common.sh +0 -1102
  343. package/.claude/scripts/consolidate-research.sh +0 -182
  344. package/.claude/scripts/create-requirement.sh +0 -451
  345. package/.claude/scripts/delta-parser.ts +0 -527
  346. package/.claude/scripts/detect-file-conflicts.sh +0 -151
  347. package/.claude/scripts/export-contracts.sh +0 -117
  348. package/.claude/scripts/extract-data-model.sh +0 -78
  349. package/.claude/scripts/flow-context-add.sh +0 -134
  350. package/.claude/scripts/flow-context-init.sh +0 -133
  351. package/.claude/scripts/flow-context-validate.sh +0 -144
  352. package/.claude/scripts/flow-delta-apply.sh +0 -297
  353. package/.claude/scripts/flow-delta-archive.sh +0 -71
  354. package/.claude/scripts/flow-delta-create.sh +0 -202
  355. package/.claude/scripts/flow-delta-list.sh +0 -142
  356. package/.claude/scripts/flow-delta-status.sh +0 -235
  357. package/.claude/scripts/flow-quality-full.sh +0 -215
  358. package/.claude/scripts/flow-quality-quick.sh +0 -119
  359. package/.claude/scripts/flow-workspace-init.sh +0 -117
  360. package/.claude/scripts/flow-workspace-record.sh +0 -164
  361. package/.claude/scripts/generate-clarification-questions.sh +0 -377
  362. package/.claude/scripts/generate-clarification-report.sh +0 -463
  363. package/.claude/scripts/generate-quickstart.sh +0 -146
  364. package/.claude/scripts/generate-research-tasks.sh +0 -157
  365. package/.claude/scripts/generate-status-report.sh +0 -523
  366. package/.claude/scripts/generate-tech-analysis.sh +0 -46
  367. package/.claude/scripts/get-workflow-status.sh +0 -415
  368. package/.claude/scripts/locate-requirement-in-roadmap.sh +0 -233
  369. package/.claude/scripts/manage-constitution.sh +0 -602
  370. package/.claude/scripts/mark-task-complete.sh +0 -198
  371. package/.claude/scripts/parse-task-dependencies.js +0 -334
  372. package/.claude/scripts/populate-research-tasks.sh +0 -284
  373. package/.claude/scripts/record-quality-error.sh +0 -165
  374. package/.claude/scripts/recover-workflow.sh +0 -463
  375. package/.claude/scripts/run-clarify-scan.sh +0 -601
  376. package/.claude/scripts/run-high-review.sh +0 -62
  377. package/.claude/scripts/run-problem-analysis.sh +0 -68
  378. package/.claude/scripts/run-quality-gates.sh +0 -242
  379. package/.claude/scripts/setup-epic.sh +0 -173
  380. package/.claude/scripts/setup-ralph-loop.sh +0 -155
  381. package/.claude/scripts/sync-roadmap-progress.sh +0 -300
  382. package/.claude/scripts/sync-task-marks.sh +0 -199
  383. package/.claude/scripts/team-dev-init.sh +0 -319
  384. package/.claude/scripts/team-state-recovery.sh +0 -229
  385. package/.claude/scripts/test-clarify-scan.sh +0 -515
  386. package/.claude/scripts/update-agent-context.sh +0 -806
  387. package/.claude/scripts/validate-constitution.sh +0 -567
  388. package/.claude/scripts/validate-hooks.sh +0 -487
  389. package/.claude/scripts/validate-research.sh +0 -332
  390. package/.claude/scripts/validate-scope-boundary.sh +0 -493
  391. package/.claude/scripts/verify-gate.sh +0 -269
  392. package/.claude/scripts/verify-setup.sh +0 -37
  393. package/.claude/scripts/workflow-status.ts +0 -433
  394. package/.claude/settings.json +0 -95
  395. package/.claude/skills/_reference-implementations/README.md +0 -96
  396. package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +0 -302
  397. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +0 -451
  398. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +0 -307
  399. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +0 -638
  400. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +0 -275
  401. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +0 -224
  402. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +0 -213
  403. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +0 -756
  404. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +0 -336
  405. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +0 -789
  406. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +0 -235
  407. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +0 -754
  408. package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +0 -399
  409. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +0 -331
  410. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +0 -872
  411. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +0 -502
  412. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +0 -767
  413. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +0 -502
  414. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +0 -501
  415. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +0 -406
  416. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +0 -364
  417. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +0 -428
  418. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +0 -418
  419. package/.claude/skills/cc-devflow-orchestrator/SKILL.md +0 -169
  420. package/.claude/skills/domain/attention-refresh/SKILL.md +0 -170
  421. package/.claude/skills/domain/brainstorming/SKILL.md +0 -161
  422. package/.claude/skills/domain/debugging/SKILL.md +0 -221
  423. package/.claude/skills/domain/finishing-branch/SKILL.md +0 -189
  424. package/.claude/skills/domain/receiving-review/SKILL.md +0 -153
  425. package/.claude/skills/domain/tdd/SKILL.md +0 -218
  426. package/.claude/skills/domain/verification/SKILL.md +0 -158
  427. package/.claude/skills/guardrail/constitution-guardian/SKILL.md +0 -306
  428. package/.claude/skills/guardrail/tdd-enforcer/SKILL.md +0 -192
  429. package/.claude/skills/skill-rules.json +0 -359
  430. package/.claude/skills/utility/constitution-quick-ref/SKILL.md +0 -374
  431. package/.claude/skills/utility/file-standards/SKILL.md +0 -353
  432. package/.claude/skills/utility/fractal-docs/SKILL.md +0 -45
  433. package/.claude/skills/utility/journey-checker/SKILL.md +0 -199
  434. package/.claude/skills/utility/journey-checker/pressure-scenarios.md +0 -164
  435. package/.claude/skills/utility/npm-release/SKILL.md +0 -314
  436. package/.claude/skills/utility/skill-creator/LICENSE.txt +0 -202
  437. package/.claude/skills/utility/skill-creator/SKILL.md +0 -356
  438. package/.claude/skills/utility/skill-creator/references/output-patterns.md +0 -82
  439. package/.claude/skills/utility/skill-creator/references/workflows.md +0 -28
  440. package/.claude/skills/utility/skill-creator/scripts/init_skill.py +0 -303
  441. package/.claude/skills/utility/skill-creator/scripts/package_skill.py +0 -110
  442. package/.claude/skills/utility/skill-creator/scripts/quick_validate.py +0 -95
  443. package/.claude/skills/workflow/CLAUDE.md +0 -24
  444. package/.claude/skills/workflow/flow-dev/CLAUDE.md +0 -16
  445. package/.claude/skills/workflow/flow-dev/SKILL.md +0 -94
  446. package/.claude/skills/workflow/flow-dev/assets/IMPLEMENTATION_PLAN_TEMPLATE.md +0 -71
  447. package/.claude/skills/workflow/flow-dev/context.jsonl +0 -4
  448. package/.claude/skills/workflow/flow-dev/dev-implementer.jsonl +0 -8
  449. package/.claude/skills/workflow/flow-dev/scripts/entry-gate.sh +0 -116
  450. package/.claude/skills/workflow/flow-dev/scripts/exit-gate.sh +0 -101
  451. package/.claude/skills/workflow/flow-dev/scripts/task-orchestrator.sh +0 -106
  452. package/.claude/skills/workflow/flow-fix/SKILL.md +0 -105
  453. package/.claude/skills/workflow/flow-fix/context.jsonl +0 -6
  454. package/.claude/skills/workflow/flow-fix/references/bug-analyzer.md +0 -381
  455. package/.claude/skills/workflow/flow-init/SKILL.md +0 -84
  456. package/.claude/skills/workflow/flow-init/assets/BRAINSTORM_TEMPLATE.md +0 -148
  457. package/.claude/skills/workflow/flow-init/assets/INIT_FLOW_TEMPLATE.md +0 -198
  458. package/.claude/skills/workflow/flow-init/assets/RESEARCH_TEMPLATE.md +0 -276
  459. package/.claude/skills/workflow/flow-init/context.jsonl +0 -5
  460. package/.claude/skills/workflow/flow-init/references/flow-researcher.md +0 -132
  461. package/.claude/skills/workflow/flow-init/scripts/check-prerequisites.sh +0 -240
  462. package/.claude/skills/workflow/flow-init/scripts/consolidate-research.sh +0 -182
  463. package/.claude/skills/workflow/flow-init/scripts/create-requirement.sh +0 -404
  464. package/.claude/skills/workflow/flow-init/scripts/generate-research-tasks.sh +0 -157
  465. package/.claude/skills/workflow/flow-init/scripts/populate-research-tasks.sh +0 -284
  466. package/.claude/skills/workflow/flow-init/scripts/validate-research.sh +0 -340
  467. package/.claude/skills/workflow/flow-quality/SKILL.md +0 -98
  468. package/.claude/skills/workflow/flow-quality/context.jsonl +0 -6
  469. package/.claude/skills/workflow/flow-quality/references/code-quality-reviewer.md +0 -205
  470. package/.claude/skills/workflow/flow-quality/references/qa-tester.md +0 -313
  471. package/.claude/skills/workflow/flow-quality/references/security-reviewer.md +0 -314
  472. package/.claude/skills/workflow/flow-quality/references/spec-reviewer.md +0 -221
  473. package/.claude/skills/workflow/flow-release/SKILL.md +0 -49
  474. package/.claude/skills/workflow/flow-release/context.jsonl +0 -5
  475. package/.claude/skills/workflow/flow-release/references/release-manager.md +0 -295
  476. package/.claude/skills/workflow/flow-spec/CLAUDE.md +0 -17
  477. package/.claude/skills/workflow/flow-spec/SKILL.md +0 -74
  478. package/.claude/skills/workflow/flow-spec/context.jsonl +0 -5
  479. package/.claude/skills/workflow/flow-spec/scripts/entry-gate.sh +0 -194
  480. package/.claude/skills/workflow/flow-spec/scripts/exit-gate.sh +0 -244
  481. package/.claude/skills/workflow/flow-spec/scripts/parallel-orchestrator.sh +0 -205
  482. package/.claude/skills/workflow/flow-spec/scripts/team-communication.sh +0 -353
  483. package/.claude/skills/workflow/flow-spec/scripts/team-init.sh +0 -195
  484. package/.claude/skills/workflow/flow-spec/scripts/test-team-mode.sh +0 -496
  485. package/.claude/skills/workflow/flow-spec/team-config.json +0 -165
  486. package/.claude/skills/workflow/flow-verify/CLAUDE.md +0 -10
  487. package/.claude/skills/workflow/flow-verify/SKILL.md +0 -53
  488. package/.claude/skills/workflow/flow-verify/context.jsonl +0 -5
  489. package/.claude/skills/workflow.yaml +0 -219
  490. package/.claude/tests/README.md +0 -300
  491. package/.claude/tests/TODO.md +0 -69
  492. package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
  493. package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
  494. package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
  495. package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
  496. package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
  497. package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
  498. package/.claude/tests/constitution/run_all_constitution_tests.sh +0 -111
  499. package/.claude/tests/constitution/test_agent_assignment.sh +0 -207
  500. package/.claude/tests/constitution/test_article_coverage.sh +0 -201
  501. package/.claude/tests/constitution/test_template_completeness.sh +0 -150
  502. package/.claude/tests/constitution/test_version_consistency.sh +0 -120
  503. package/.claude/tests/fixtures/spec_delta_full.md +0 -16
  504. package/.claude/tests/fixtures/tasks_progress_sample.md +0 -5
  505. package/.claude/tests/run-all-tests.sh +0 -229
  506. package/.claude/tests/scripts/run.sh +0 -30
  507. package/.claude/tests/scripts/test-framework.sh +0 -128
  508. package/.claude/tests/scripts/test_check_prerequisites.sh +0 -511
  509. package/.claude/tests/scripts/test_check_prerequisites.sh.bak +0 -504
  510. package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +0 -505
  511. package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +0 -506
  512. package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +0 -507
  513. package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +0 -508
  514. package/.claude/tests/scripts/test_check_task_status.sh +0 -499
  515. package/.claude/tests/scripts/test_common.sh +0 -244
  516. package/.claude/tests/scripts/test_generate_status_report.sh +0 -71
  517. package/.claude/tests/scripts/test_mark_task_complete.sh +0 -441
  518. package/.claude/tests/scripts/test_mark_task_complete.sh.backup +0 -410
  519. package/.claude/tests/scripts/test_recover_workflow.sh +0 -304
  520. package/.claude/tests/scripts/test_setup_epic.sh +0 -437
  521. package/.claude/tests/scripts/test_sync_task_marks.sh +0 -196
  522. package/.claude/tests/scripts/test_validate_constitution.sh +0 -74
  523. package/.claude/tests/scripts/test_validate_research.sh +0 -462
  524. package/.claude/tests/slugify.bats +0 -82
  525. package/.claude/tests/test-framework.sh +0 -732
  526. package/.claude/tests/test_analyze_upgrade_impact.py +0 -34
  527. package/.claude/tests/test_consolidate_research.py +0 -48
  528. package/.claude/tests/test_export_contracts.py +0 -43
  529. package/.claude/tests/test_extract_data_model.py +0 -33
  530. package/.claude/tests/test_generate_quickstart.py +0 -50
  531. package/.claude/tests/test_generate_research_tasks.py +0 -52
  532. package/bin/harness.js +0 -22
  533. package/docs/commands/core-roadmap.md +0 -106
  534. package/docs/commands/core-roadmap.zh-CN.md +0 -102
  535. package/docs/commands/core-style.md +0 -53
  536. package/docs/commands/core-style.zh-CN.md +0 -53
  537. package/docs/commands/flow-init.md +0 -140
  538. package/docs/commands/flow-init.zh-CN.md +0 -169
  539. package/docs/commands/flow-new.md +0 -39
  540. package/docs/commands/flow-new.zh-CN.md +0 -39
  541. package/lib/compiler/__tests__/compile-regression.test.js +0 -103
  542. package/lib/compiler/__tests__/multi-module-emitters.test.js +0 -534
  543. package/lib/compiler/__tests__/resource-copier.test.js +0 -26
  544. package/lib/compiler/__tests__/skill-discovery.test.js +0 -72
  545. package/lib/compiler/context-expander.js +0 -179
  546. package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +0 -109
  547. package/lib/compiler/rules-emitters/codex-rules-emitter.js +0 -116
  548. package/lib/compiler/skill-discovery.js +0 -68
  549. package/lib/harness/CLAUDE.md +0 -21
  550. package/lib/harness/cli.js +0 -208
  551. package/lib/harness/index.js +0 -16
  552. package/lib/harness/operations/dispatch.js +0 -285
  553. package/lib/harness/operations/init.js +0 -48
  554. package/lib/harness/operations/pack.js +0 -100
  555. package/lib/harness/operations/plan.js +0 -29
  556. package/lib/harness/operations/resume.js +0 -44
  557. package/lib/harness/operations/verify.js +0 -163
  558. package/lib/harness/planner.js +0 -141
  559. package/lib/harness/schemas.js +0 -108
@@ -0,0 +1,245 @@
1
+ const ROADMAP_COLUMNS = [
2
+ ['RM-ID', 'rmId'],
3
+ ['Item', 'item'],
4
+ ['Stage', 'stage'],
5
+ ['Priority', 'priority'],
6
+ ['Primary Capability', 'primaryCapability'],
7
+ ['Secondary Capabilities', 'secondaryCapabilities'],
8
+ ['Expected Spec Delta', 'expectedSpecDelta'],
9
+ ['Depends On', 'dependsOn'],
10
+ ['Status', 'status'],
11
+ ['REQ', 'req'],
12
+ ['Progress', 'progress']
13
+ ];
14
+
15
+ const BACKLOG_QUEUE_COLUMNS = [
16
+ ['RM-ID', 'rmId'],
17
+ ['Title', 'item'],
18
+ ['Source Stage', 'stage'],
19
+ ['Priority', 'priority'],
20
+ ['Primary Capability', 'primaryCapability'],
21
+ ['Secondary Capabilities', 'secondaryCapabilities'],
22
+ ['Capability Gap', 'capabilityGap'],
23
+ ['Expected Spec Delta', 'expectedSpecDelta'],
24
+ ['Evidence', 'evidence'],
25
+ ['Depends On', 'dependsOn'],
26
+ ['Parallel With', 'parallelWith'],
27
+ ['Unknowns', 'unknowns'],
28
+ ['Next Decision', 'nextDecision'],
29
+ ['Ready', 'ready']
30
+ ];
31
+
32
+ const DEFAULT_BACKLOG = {
33
+ capabilityGap: '',
34
+ evidence: '',
35
+ parallelWith: [],
36
+ unknowns: '',
37
+ nextDecision: '',
38
+ ready: false,
39
+ whyNow: '',
40
+ successSignal: '',
41
+ entryConstraints: '',
42
+ openRisks: '',
43
+ firstPlanningQuestion: '',
44
+ requiredContextToLoad: '',
45
+ whyReadyNow: '',
46
+ parked: false,
47
+ parkedReason: '',
48
+ triggerToReopen: '',
49
+ missingEvidence: ''
50
+ };
51
+
52
+ const DEFAULT_TRACKING = {
53
+ version: 2,
54
+ lastSyncedAt: '',
55
+ backlogMeta: {
56
+ roadmapVersion: '',
57
+ skillVersion: '',
58
+ currentFocusStage: ''
59
+ },
60
+ dependencyHandoff: {
61
+ serialSpine: '',
62
+ parallelReadyNextWave: '',
63
+ notesOnBlockers: ''
64
+ },
65
+ items: []
66
+ };
67
+
68
+ function normalizeHeader(value) {
69
+ return String(value || '')
70
+ .trim()
71
+ .toLowerCase()
72
+ .replace(/[^a-z0-9]+/g, ' ');
73
+ }
74
+
75
+ function normalizeCell(value) {
76
+ const trimmed = String(value || '').trim();
77
+ return trimmed === '-' ? '' : trimmed;
78
+ }
79
+
80
+ function parseList(value) {
81
+ const cleaned = normalizeCell(value);
82
+ if (!cleaned) {
83
+ return [];
84
+ }
85
+
86
+ return cleaned
87
+ .split(',')
88
+ .map((entry) => entry.trim())
89
+ .filter(Boolean);
90
+ }
91
+
92
+ function formatList(items) {
93
+ return items.length ? items.join(', ') : '-';
94
+ }
95
+
96
+ function formatCell(value) {
97
+ const cleaned = String(value || '').trim();
98
+ return cleaned || '-';
99
+ }
100
+
101
+ function formatBacklogValue(value) {
102
+ return formatCell(value);
103
+ }
104
+
105
+ function formatBoolean(value) {
106
+ return value ? 'Yes' : 'No';
107
+ }
108
+
109
+ function formatInlineCode(value) {
110
+ const cleaned = String(value || '').trim();
111
+ return cleaned ? `\`${cleaned}\`` : '';
112
+ }
113
+
114
+ function normalizeBoolean(value) {
115
+ const normalized = normalizeCell(value).toLowerCase();
116
+ return normalized === 'yes' || normalized === 'true';
117
+ }
118
+
119
+ function emptyBacklog() {
120
+ return {
121
+ ...DEFAULT_BACKLOG,
122
+ parallelWith: []
123
+ };
124
+ }
125
+
126
+ function normalizeItem(raw) {
127
+ const backlog = raw.backlog || {};
128
+
129
+ return {
130
+ rmId: String(raw.rmId || '').trim(),
131
+ item: String(raw.item || '').trim(),
132
+ stage: String(raw.stage || '').trim(),
133
+ priority: String(raw.priority || '').trim(),
134
+ primaryCapability: String(raw.primaryCapability || '').trim(),
135
+ secondaryCapabilities: Array.isArray(raw.secondaryCapabilities)
136
+ ? raw.secondaryCapabilities.map((entry) => String(entry).trim()).filter(Boolean)
137
+ : parseList(raw.secondaryCapabilities),
138
+ expectedSpecDelta: String(raw.expectedSpecDelta || '').trim(),
139
+ dependsOn: Array.isArray(raw.dependsOn)
140
+ ? raw.dependsOn.map((entry) => String(entry).trim()).filter(Boolean)
141
+ : parseList(raw.dependsOn),
142
+ status: String(raw.status || '').trim(),
143
+ req: String(raw.req || '').trim(),
144
+ progress: String(raw.progress || '').trim(),
145
+ backlog: {
146
+ capabilityGap: String(backlog.capabilityGap || '').trim(),
147
+ evidence: String(backlog.evidence || '').trim(),
148
+ parallelWith: Array.isArray(backlog.parallelWith)
149
+ ? backlog.parallelWith.map((entry) => String(entry).trim()).filter(Boolean)
150
+ : parseList(backlog.parallelWith),
151
+ unknowns: String(backlog.unknowns || '').trim(),
152
+ nextDecision: String(backlog.nextDecision || '').trim(),
153
+ ready: Boolean(backlog.ready),
154
+ whyNow: String(backlog.whyNow || '').trim(),
155
+ successSignal: String(backlog.successSignal || '').trim(),
156
+ entryConstraints: String(backlog.entryConstraints || '').trim(),
157
+ openRisks: String(backlog.openRisks || '').trim(),
158
+ firstPlanningQuestion: String(backlog.firstPlanningQuestion || '').trim(),
159
+ requiredContextToLoad: String(backlog.requiredContextToLoad || '').trim(),
160
+ whyReadyNow: String(backlog.whyReadyNow || '').trim(),
161
+ parked: Boolean(backlog.parked),
162
+ parkedReason: String(backlog.parkedReason || '').trim(),
163
+ triggerToReopen: String(backlog.triggerToReopen || '').trim(),
164
+ missingEvidence: String(backlog.missingEvidence || '').trim()
165
+ }
166
+ };
167
+ }
168
+
169
+ function normalizeTracking(raw) {
170
+ const backlogMeta = raw.backlogMeta || {};
171
+ const dependencyHandoff = raw.dependencyHandoff || {};
172
+ const items = Array.isArray(raw.items) ? raw.items.map(normalizeItem) : [];
173
+
174
+ return {
175
+ version: 2,
176
+ lastSyncedAt: String(raw.lastSyncedAt || '').trim(),
177
+ backlogMeta: {
178
+ roadmapVersion: String(backlogMeta.roadmapVersion || '').trim(),
179
+ skillVersion: String(backlogMeta.skillVersion || '').trim(),
180
+ currentFocusStage: String(backlogMeta.currentFocusStage || '').trim()
181
+ },
182
+ dependencyHandoff: {
183
+ serialSpine: String(dependencyHandoff.serialSpine || '').trim(),
184
+ parallelReadyNextWave: String(dependencyHandoff.parallelReadyNextWave || '').trim(),
185
+ notesOnBlockers: String(dependencyHandoff.notesOnBlockers || '').trim()
186
+ },
187
+ items
188
+ };
189
+ }
190
+
191
+ const ROADMAP_HEADER_TO_KEY = new Map(
192
+ ROADMAP_COLUMNS.map(([header, key]) => [normalizeHeader(header), key])
193
+ );
194
+
195
+ const BACKLOG_QUEUE_HEADER_TO_KEY = new Map(
196
+ BACKLOG_QUEUE_COLUMNS.map(([header, key]) => [normalizeHeader(header), key])
197
+ );
198
+
199
+ const READY_FIELD_MAP = new Map(
200
+ [
201
+ ['Primary Capability', 'primaryCapability'],
202
+ ['Secondary Capabilities', 'secondaryCapabilities'],
203
+ ['Why now', 'whyNow'],
204
+ ['Success signal', 'successSignal'],
205
+ ['Entry constraints', 'entryConstraints'],
206
+ ['Capability gap', 'capabilityGap'],
207
+ ['Expected spec delta', 'expectedSpecDelta'],
208
+ ['Open risks', 'openRisks'],
209
+ ['First planning question', 'firstPlanningQuestion'],
210
+ ['Required context to load', 'requiredContextToLoad'],
211
+ ['Depends On', 'dependsOn'],
212
+ ['Parallel With', 'parallelWith'],
213
+ ['Why this is ready now', 'whyReadyNow']
214
+ ].map(([label, key]) => [normalizeHeader(label), key])
215
+ );
216
+
217
+ const PARKED_FIELD_MAP = new Map(
218
+ [
219
+ ['Reason parked', 'parkedReason'],
220
+ ['Trigger to reopen', 'triggerToReopen'],
221
+ ['Missing evidence', 'missingEvidence']
222
+ ].map(([label, key]) => [normalizeHeader(label), key])
223
+ );
224
+
225
+ module.exports = {
226
+ BACKLOG_QUEUE_COLUMNS,
227
+ BACKLOG_QUEUE_HEADER_TO_KEY,
228
+ DEFAULT_TRACKING,
229
+ PARKED_FIELD_MAP,
230
+ READY_FIELD_MAP,
231
+ ROADMAP_COLUMNS,
232
+ ROADMAP_HEADER_TO_KEY,
233
+ emptyBacklog,
234
+ formatBacklogValue,
235
+ formatBoolean,
236
+ formatCell,
237
+ formatInlineCode,
238
+ formatList,
239
+ normalizeBoolean,
240
+ normalizeCell,
241
+ normalizeHeader,
242
+ normalizeItem,
243
+ normalizeTracking,
244
+ parseList
245
+ };
@@ -0,0 +1,139 @@
1
+ const fs = require('fs');
2
+
3
+ const {
4
+ emptyBacklog,
5
+ normalizeItem,
6
+ normalizeTracking,
7
+ parseList
8
+ } = require('./schema');
9
+ const {
10
+ renderBacklogDocument,
11
+ renderRoadmapDocument,
12
+ trackingFromMarkdown
13
+ } = require('./markdown');
14
+
15
+ function ensureDir(filePath) {
16
+ fs.mkdirSync(require('path').dirname(filePath), { recursive: true });
17
+ }
18
+
19
+ function readJson(filePath) {
20
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
21
+ }
22
+
23
+ function writeJson(filePath, data) {
24
+ ensureDir(filePath);
25
+ fs.writeFileSync(filePath, `${JSON.stringify(data, null, 2)}\n`);
26
+ }
27
+
28
+ function readFileIfExists(filePath) {
29
+ if (!filePath || !fs.existsSync(filePath)) {
30
+ return '';
31
+ }
32
+
33
+ return fs.readFileSync(filePath, 'utf8');
34
+ }
35
+
36
+ function upgradeLegacyTracking(parsed) {
37
+ if (parsed.version === 2 || parsed.backlogMeta || parsed.dependencyHandoff) {
38
+ return normalizeTracking(parsed);
39
+ }
40
+
41
+ return normalizeTracking({
42
+ version: 2,
43
+ lastSyncedAt: parsed.lastSyncedAt || '',
44
+ backlogMeta: {
45
+ roadmapVersion: '',
46
+ skillVersion: '',
47
+ currentFocusStage: ''
48
+ },
49
+ dependencyHandoff: {
50
+ serialSpine: '',
51
+ parallelReadyNextWave: '',
52
+ notesOnBlockers: ''
53
+ },
54
+ items: Array.isArray(parsed.items)
55
+ ? parsed.items.map((item) => ({
56
+ ...item,
57
+ backlog: {
58
+ ...emptyBacklog(),
59
+ ...(item.backlog || {})
60
+ }
61
+ }))
62
+ : []
63
+ });
64
+ }
65
+
66
+ function loadTracking({ trackingFile, roadmapFile = '', backlogFile = '' }) {
67
+ if (trackingFile && fs.existsSync(trackingFile)) {
68
+ return upgradeLegacyTracking(readJson(trackingFile));
69
+ }
70
+
71
+ return trackingFromMarkdown(readFileIfExists(roadmapFile), readFileIfExists(backlogFile));
72
+ }
73
+
74
+ function applySyncArgs(tracking, args) {
75
+ const index = tracking.items.findIndex((item) => item.rmId === args.rm);
76
+ const item = index === -1 ? normalizeItem({ rmId: args.rm }) : tracking.items[index];
77
+
78
+ const scalarUpdates = [
79
+ ['item', 'item'],
80
+ ['stage', 'stage'],
81
+ ['priority', 'priority'],
82
+ ['primary-capability', 'primaryCapability'],
83
+ ['spec-delta', 'expectedSpecDelta'],
84
+ ['status', 'status'],
85
+ ['req', 'req'],
86
+ ['progress', 'progress']
87
+ ];
88
+
89
+ scalarUpdates.forEach(([argName, key]) => {
90
+ if (args[argName] != null) {
91
+ item[key] = String(args[argName]).trim();
92
+ }
93
+ });
94
+
95
+ if (args['secondary-capabilities'] != null) {
96
+ item.secondaryCapabilities = parseList(args['secondary-capabilities']);
97
+ }
98
+
99
+ if (args['depends-on'] != null) {
100
+ item.dependsOn = parseList(args['depends-on']);
101
+ }
102
+
103
+ const normalized = normalizeItem(item);
104
+ if (index === -1) {
105
+ tracking.items.push(normalized);
106
+ } else {
107
+ tracking.items[index] = normalized;
108
+ }
109
+
110
+ tracking.lastSyncedAt = new Date().toISOString().slice(0, 10);
111
+ return tracking;
112
+ }
113
+
114
+ function persistTrackingFiles({ trackingFile, roadmapFile, backlogFile, tracking }) {
115
+ writeJson(trackingFile, tracking);
116
+
117
+ const roadmapOutput = renderRoadmapDocument({
118
+ original: readFileIfExists(roadmapFile) || '# ROADMAP\n',
119
+ roadmapFile,
120
+ trackingFile,
121
+ tracking
122
+ });
123
+ const backlogOutput = renderBacklogDocument({
124
+ backlogFile,
125
+ trackingFile,
126
+ tracking
127
+ });
128
+
129
+ ensureDir(roadmapFile);
130
+ fs.writeFileSync(roadmapFile, roadmapOutput);
131
+ ensureDir(backlogFile);
132
+ fs.writeFileSync(backlogFile, backlogOutput);
133
+ }
134
+
135
+ module.exports = {
136
+ applySyncArgs,
137
+ loadTracking,
138
+ persistTrackingFiles
139
+ };
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 本地定位器:优先从 tracking 真相源定位 RM / REQ
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage: locate-roadmap-item.sh <ID> [--roadmap devflow/ROADMAP.md] [--backlog devflow/BACKLOG.md] [--tracking-file devflow/roadmap-tracking.json]
12
+
13
+ ID can be RM-xxx or REQ-xxx.
14
+ EOF
15
+ }
16
+
17
+ TARGET="${1:-}"
18
+ REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
19
+ DEFAULT_ROADMAP_FILE="$REPO_ROOT/devflow/ROADMAP.md"
20
+ ROOT_ROADMAP_FILE="$REPO_ROOT/ROADMAP.md"
21
+ LEGACY_ROADMAP_FILE="$REPO_ROOT/devflow/roadmap/roadmap.md"
22
+ DEFAULT_BACKLOG_FILE="$REPO_ROOT/devflow/BACKLOG.md"
23
+ ROOT_BACKLOG_FILE="$REPO_ROOT/BACKLOG.md"
24
+ LEGACY_BACKLOG_FILE="$REPO_ROOT/devflow/roadmap/backlog.md"
25
+ DEFAULT_TRACKING_FILE="$REPO_ROOT/devflow/roadmap-tracking.json"
26
+ ROOT_TRACKING_FILE="$REPO_ROOT/roadmap-tracking.json"
27
+ LEGACY_TRACKING_FILE="$REPO_ROOT/devflow/roadmap/roadmap-tracking.json"
28
+ ROADMAP_FILE="$DEFAULT_ROADMAP_FILE"
29
+ BACKLOG_FILE="$DEFAULT_BACKLOG_FILE"
30
+ TRACKING_FILE="$DEFAULT_TRACKING_FILE"
31
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
32
+
33
+ if [[ -z "$TARGET" ]]; then
34
+ usage
35
+ exit 1
36
+ fi
37
+ shift || true
38
+
39
+ while [[ $# -gt 0 ]]; do
40
+ case "$1" in
41
+ --roadmap) ROADMAP_FILE="$2"; shift 2 ;;
42
+ --backlog) BACKLOG_FILE="$2"; shift 2 ;;
43
+ --tracking-file) TRACKING_FILE="$2"; shift 2 ;;
44
+ -h|--help) usage; exit 0 ;;
45
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
46
+ esac
47
+ done
48
+
49
+ if [[ "$ROADMAP_FILE" == "$DEFAULT_ROADMAP_FILE" && ! -f "$ROADMAP_FILE" ]]; then
50
+ if [[ -f "$ROOT_ROADMAP_FILE" ]]; then
51
+ ROADMAP_FILE="$ROOT_ROADMAP_FILE"
52
+ elif [[ -f "$LEGACY_ROADMAP_FILE" ]]; then
53
+ ROADMAP_FILE="$LEGACY_ROADMAP_FILE"
54
+ fi
55
+ fi
56
+
57
+ if [[ "$BACKLOG_FILE" == "$DEFAULT_BACKLOG_FILE" && ! -f "$BACKLOG_FILE" ]]; then
58
+ if [[ -f "$ROOT_BACKLOG_FILE" ]]; then
59
+ BACKLOG_FILE="$ROOT_BACKLOG_FILE"
60
+ elif [[ -f "$LEGACY_BACKLOG_FILE" ]]; then
61
+ BACKLOG_FILE="$LEGACY_BACKLOG_FILE"
62
+ fi
63
+ fi
64
+
65
+ if [[ "$TRACKING_FILE" == "$DEFAULT_TRACKING_FILE" && ! -f "$TRACKING_FILE" ]]; then
66
+ roadmap_dir="$(cd "$(dirname "$ROADMAP_FILE")" 2>/dev/null && pwd || true)"
67
+ if [[ -n "$roadmap_dir" && -f "$roadmap_dir/roadmap-tracking.json" ]]; then
68
+ TRACKING_FILE="$roadmap_dir/roadmap-tracking.json"
69
+ elif [[ -f "$ROOT_TRACKING_FILE" ]]; then
70
+ TRACKING_FILE="$ROOT_TRACKING_FILE"
71
+ elif [[ -f "$LEGACY_TRACKING_FILE" ]]; then
72
+ TRACKING_FILE="$LEGACY_TRACKING_FILE"
73
+ fi
74
+ fi
75
+
76
+ found=false
77
+
78
+ print_tracking_matches() {
79
+ local tracking_file="$1"
80
+ local target="$2"
81
+ node "$SCRIPT_DIR/roadmap-tracking.js" find --tracking "$tracking_file" --id "$target"
82
+ }
83
+
84
+ if [[ -f "$TRACKING_FILE" ]]; then
85
+ if print_tracking_matches "$TRACKING_FILE" "$TARGET"; then
86
+ found=true
87
+ fi
88
+ fi
89
+
90
+ if [[ -f "$ROADMAP_FILE" ]]; then
91
+ if rg -n --fixed-strings "$TARGET" "$ROADMAP_FILE" >/dev/null 2>&1; then
92
+ echo "[ROADMAP]"
93
+ rg -n --fixed-strings "$TARGET" "$ROADMAP_FILE"
94
+ found=true
95
+ fi
96
+ fi
97
+
98
+ if [[ -f "$BACKLOG_FILE" ]]; then
99
+ if rg -n --fixed-strings "$TARGET" "$BACKLOG_FILE" >/dev/null 2>&1; then
100
+ echo "[BACKLOG]"
101
+ rg -n --fixed-strings "$TARGET" "$BACKLOG_FILE"
102
+ found=true
103
+ fi
104
+ fi
105
+
106
+ if [[ "$found" == false ]]; then
107
+ echo "Not found: $TARGET" >&2
108
+ exit 1
109
+ fi
@@ -0,0 +1,153 @@
1
+ #!/usr/bin/env node
2
+
3
+ const path = require('path');
4
+
5
+ const { loadTracking, applySyncArgs, persistTrackingFiles } = require('./lib/roadmap-tracking/store');
6
+ const { findTrackingMatches, formatTrackingMatches } = require('./lib/roadmap-tracking/query');
7
+
8
+ function usage() {
9
+ process.stderr.write(
10
+ [
11
+ 'Usage:',
12
+ ' roadmap-tracking.js sync --roadmap <ROADMAP.md> --backlog <BACKLOG.md> --tracking <roadmap-tracking.json> --rm <RM-ID> [field updates]',
13
+ ' roadmap-tracking.js render --roadmap <ROADMAP.md> --backlog <BACKLOG.md> --tracking <roadmap-tracking.json>',
14
+ ' roadmap-tracking.js find --tracking <roadmap-tracking.json> --id <RM-ID|REQ-ID>',
15
+ '',
16
+ 'Fields:',
17
+ ' --item <title>',
18
+ ' --stage <Stage 1>',
19
+ ' --priority <P1>',
20
+ ' --primary-capability <cap-id>',
21
+ ' --secondary-capabilities "cap-a,cap-b"',
22
+ ' --spec-delta "delta summary"',
23
+ ' --depends-on "RM-001,RM-002"',
24
+ ' --status <Planned>',
25
+ ' --req <REQ-001>',
26
+ ' --progress <50%>'
27
+ ].join('\n')
28
+ );
29
+ }
30
+
31
+ function parseArgs(argv) {
32
+ const [command, ...rest] = argv;
33
+ const args = { command };
34
+
35
+ for (let index = 0; index < rest.length; index += 1) {
36
+ const key = rest[index];
37
+ const value = rest[index + 1];
38
+
39
+ if (!key.startsWith('--')) {
40
+ throw createError(`Unknown arg: ${key}`);
41
+ }
42
+
43
+ if (value == null || value.startsWith('--')) {
44
+ throw createError(`Missing value for ${key}`);
45
+ }
46
+
47
+ args[key.slice(2)] = value;
48
+ index += 1;
49
+ }
50
+
51
+ return args;
52
+ }
53
+
54
+ function createError(message, showUsage = true) {
55
+ const error = new Error(message);
56
+ error.showUsage = showUsage;
57
+ return error;
58
+ }
59
+
60
+ function normalizePathArg(filePath) {
61
+ return path.resolve(filePath);
62
+ }
63
+
64
+ function requireArgs(args, names, message) {
65
+ const missing = names.filter((name) => !args[name]);
66
+ if (missing.length) {
67
+ throw createError(message);
68
+ }
69
+ }
70
+
71
+ function syncTracking(args) {
72
+ requireArgs(
73
+ args,
74
+ ['roadmap', 'backlog', 'tracking', 'rm'],
75
+ 'sync requires --roadmap, --backlog, --tracking, and --rm'
76
+ );
77
+
78
+ const files = {
79
+ roadmapFile: normalizePathArg(args.roadmap),
80
+ backlogFile: normalizePathArg(args.backlog),
81
+ trackingFile: normalizePathArg(args.tracking)
82
+ };
83
+ const tracking = loadTracking(files);
84
+ applySyncArgs(tracking, args);
85
+ persistTrackingFiles({
86
+ ...files,
87
+ tracking
88
+ });
89
+ }
90
+
91
+ function renderOnly(args) {
92
+ requireArgs(
93
+ args,
94
+ ['roadmap', 'backlog', 'tracking'],
95
+ 'render requires --roadmap, --backlog, and --tracking'
96
+ );
97
+
98
+ const files = {
99
+ roadmapFile: normalizePathArg(args.roadmap),
100
+ backlogFile: normalizePathArg(args.backlog),
101
+ trackingFile: normalizePathArg(args.tracking)
102
+ };
103
+ const tracking = loadTracking(files);
104
+ persistTrackingFiles({
105
+ ...files,
106
+ tracking
107
+ });
108
+ }
109
+
110
+ function findTracking(args) {
111
+ requireArgs(args, ['tracking', 'id'], 'find requires --tracking and --id');
112
+
113
+ const tracking = loadTracking({
114
+ trackingFile: normalizePathArg(args.tracking)
115
+ });
116
+ const matches = findTrackingMatches(tracking, args.id);
117
+ if (!matches.length) {
118
+ throw createError(`Not found in tracking: ${args.id}`, false);
119
+ }
120
+
121
+ process.stdout.write(formatTrackingMatches(matches));
122
+ }
123
+
124
+ function main() {
125
+ try {
126
+ const args = parseArgs(process.argv.slice(2));
127
+
128
+ if (args.command === 'sync') {
129
+ syncTracking(args);
130
+ return;
131
+ }
132
+
133
+ if (args.command === 'render') {
134
+ renderOnly(args);
135
+ return;
136
+ }
137
+
138
+ if (args.command === 'find') {
139
+ findTracking(args);
140
+ return;
141
+ }
142
+
143
+ throw createError(`Unknown command: ${args.command || '<missing>'}`);
144
+ } catch (error) {
145
+ process.stderr.write(`${error.message}\n`);
146
+ if (error.showUsage !== false) {
147
+ usage();
148
+ }
149
+ process.exitCode = 1;
150
+ }
151
+ }
152
+
153
+ main();