cc-devflow 4.3.0 → 4.5.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 (579) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +70 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +212 -0
  3. package/.claude/skills/cc-act/SKILL.md +330 -0
  4. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +68 -0
  5. package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +29 -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 +245 -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 +200 -0
  13. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +328 -0
  14. package/.claude/skills/cc-act/scripts/verify-act-gate.sh +63 -0
  15. package/.claude/skills/cc-check/CHANGELOG.md +78 -0
  16. package/.claude/skills/cc-check/PLAYBOOK.md +153 -0
  17. package/.claude/skills/cc-check/SKILL.md +353 -0
  18. package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +53 -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 +54 -0
  25. package/.claude/skills/cc-do/PLAYBOOK.md +119 -0
  26. package/.claude/skills/cc-do/SKILL.md +224 -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 +31 -0
  41. package/.claude/skills/cc-investigate/PLAYBOOK.md +49 -0
  42. package/.claude/skills/cc-investigate/SKILL.md +229 -0
  43. package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +56 -0
  44. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +53 -0
  45. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +106 -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 +104 -0
  49. package/.claude/skills/cc-plan/PLAYBOOK.md +106 -0
  50. package/.claude/skills/cc-plan/SKILL.md +333 -0
  51. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +156 -0
  52. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +99 -0
  53. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +111 -0
  54. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +80 -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 +119 -0
  60. package/.claude/skills/cc-roadmap/PLAYBOOK.md +136 -0
  61. package/.claude/skills/cc-roadmap/SKILL.md +267 -0
  62. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +46 -0
  63. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +154 -0
  64. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +51 -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 +12 -0
  77. package/.claude/skills/cc-spec-init/PLAYBOOK.md +55 -0
  78. package/.claude/skills/cc-spec-init/SKILL.md +135 -0
  79. package/.claude/skills/cc-spec-init/assets/CAPABILITY_TEMPLATE.md +64 -0
  80. package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +28 -0
  81. package/.claude/skills/cc-spec-init/assets/INDEX_TEMPLATE.md +35 -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 +80 -4
  86. package/README.md +148 -741
  87. package/README.zh-CN.md +146 -740
  88. package/bin/adapt.js +2 -6
  89. package/bin/cc-devflow-cli.js +287 -166
  90. package/config/distributable-skills.json +24 -0
  91. package/config/schema/cc-devflow-config.schema.json +45 -0
  92. package/config/user-config.template.yml +16 -0
  93. package/docs/CLAUDE.md +10 -6
  94. package/docs/commands/README.md +19 -46
  95. package/docs/commands/README.zh-CN.md +25 -48
  96. package/docs/examples/BY-ARTIFACT.md +7 -0
  97. package/docs/examples/README.md +38 -0
  98. package/docs/examples/START-HERE.md +149 -0
  99. package/docs/examples/example-bindings.json +38 -0
  100. package/docs/examples/full-design-blocked/BACKLOG.md +45 -0
  101. package/docs/examples/full-design-blocked/README.md +55 -0
  102. package/docs/examples/full-design-blocked/ROADMAP.md +53 -0
  103. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +154 -0
  104. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +146 -0
  105. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +78 -0
  106. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +52 -0
  107. package/docs/examples/full-design-blocked/roadmap-tracking.json +50 -0
  108. package/docs/examples/local-handoff/BACKLOG.md +45 -0
  109. package/docs/examples/local-handoff/README.md +56 -0
  110. package/docs/examples/local-handoff/ROADMAP.md +45 -0
  111. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +39 -0
  112. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +29 -0
  113. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +71 -0
  114. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +98 -0
  115. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +59 -0
  116. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +44 -0
  117. package/docs/examples/local-handoff/roadmap-tracking.json +48 -0
  118. package/docs/examples/pdca-loop/BACKLOG.md +46 -0
  119. package/docs/examples/pdca-loop/README.md +58 -0
  120. package/docs/examples/pdca-loop/ROADMAP.md +133 -0
  121. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +72 -0
  122. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +29 -0
  123. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +72 -0
  124. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +201 -0
  125. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +73 -0
  126. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +44 -0
  127. package/docs/examples/pdca-loop/roadmap-tracking.json +114 -0
  128. package/docs/examples/scripts/check-example-bindings.sh +116 -0
  129. package/docs/guides/getting-started.md +94 -129
  130. package/docs/guides/getting-started.zh-CN.md +103 -84
  131. package/docs/skill-runtime-migration.md +46 -0
  132. package/docs/v4.3.0-migration-guide.md +60 -225
  133. package/lib/compiler/CLAUDE.md +55 -84
  134. package/lib/compiler/__tests__/drift.test.js +1 -1
  135. package/lib/compiler/__tests__/errors.test.js +0 -1
  136. package/lib/compiler/__tests__/integration.test.js +49 -3
  137. package/lib/compiler/__tests__/manifest.test.js +0 -156
  138. package/lib/compiler/__tests__/parser.test.js +33 -104
  139. package/lib/compiler/__tests__/schemas.test.js +30 -34
  140. package/lib/compiler/__tests__/skills-registry.test.js +114 -0
  141. package/lib/compiler/__tests__/transformer.test.js +5 -9
  142. package/lib/compiler/emitters/antigravity-emitter.js +5 -213
  143. package/lib/compiler/emitters/base-emitter.js +3 -298
  144. package/lib/compiler/emitters/codex-emitter.js +4 -202
  145. package/lib/compiler/emitters/cursor-emitter.js +3 -287
  146. package/lib/compiler/emitters/qwen-emitter.js +4 -176
  147. package/lib/compiler/index.js +65 -345
  148. package/lib/compiler/manifest.js +6 -68
  149. package/lib/compiler/parser.js +31 -63
  150. package/lib/compiler/platforms.js +32 -277
  151. package/lib/compiler/resource-copier.js +176 -6
  152. package/lib/compiler/rules-emitters/__tests__/antigravity-rules-emitter.test.js +3 -3
  153. package/lib/compiler/rules-emitters/__tests__/cursor-rules-emitter.test.js +14 -4
  154. package/lib/compiler/rules-emitters/__tests__/qwen-rules-emitter.test.js +16 -7
  155. package/lib/compiler/rules-emitters/antigravity-rules-emitter.js +10 -15
  156. package/lib/compiler/rules-emitters/base-rules-emitter.js +5 -5
  157. package/lib/compiler/rules-emitters/cursor-rules-emitter.js +7 -12
  158. package/lib/compiler/rules-emitters/index.js +6 -3
  159. package/lib/compiler/rules-emitters/qwen-rules-emitter.js +7 -7
  160. package/lib/compiler/schemas.js +8 -4
  161. package/lib/compiler/skills-registry.js +213 -15
  162. package/lib/compiler/transformer.js +1 -1
  163. package/lib/skill-runtime/CLAUDE.md +19 -0
  164. package/lib/skill-runtime/__tests__/autopilot.test.js +210 -0
  165. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +291 -0
  166. package/lib/skill-runtime/__tests__/config.test.js +161 -0
  167. package/lib/skill-runtime/__tests__/delegation.test.js +97 -0
  168. package/lib/skill-runtime/__tests__/dispatch.test.js +267 -0
  169. package/lib/skill-runtime/__tests__/intent.test.js +219 -0
  170. package/lib/skill-runtime/__tests__/lifecycle.test.js +169 -0
  171. package/lib/skill-runtime/__tests__/paths.test.js +42 -0
  172. package/lib/skill-runtime/__tests__/planner.tdd.test.js +250 -0
  173. package/lib/skill-runtime/__tests__/prepare-pr.test.js +139 -0
  174. package/lib/skill-runtime/__tests__/query.test.js +284 -0
  175. package/lib/skill-runtime/__tests__/runtime.integration.test.js +281 -0
  176. package/lib/skill-runtime/__tests__/schemas.test.js +207 -0
  177. package/lib/skill-runtime/__tests__/team-state.test.js +51 -0
  178. package/lib/skill-runtime/__tests__/worker-run.test.js +253 -0
  179. package/lib/skill-runtime/__tests__/worker.test.js +56 -0
  180. package/lib/skill-runtime/artifacts.js +93 -0
  181. package/lib/skill-runtime/config.js +379 -0
  182. package/lib/skill-runtime/delegation.js +533 -0
  183. package/lib/skill-runtime/index.js +36 -0
  184. package/lib/skill-runtime/intent.js +333 -0
  185. package/lib/skill-runtime/lifecycle.js +294 -0
  186. package/lib/skill-runtime/operations/CLAUDE.md +19 -0
  187. package/lib/skill-runtime/operations/approve.js +66 -0
  188. package/lib/skill-runtime/operations/autopilot-core.js +337 -0
  189. package/lib/skill-runtime/operations/autopilot-execution.js +307 -0
  190. package/lib/skill-runtime/operations/autopilot-shared.js +48 -0
  191. package/lib/skill-runtime/operations/autopilot.js +163 -0
  192. package/lib/skill-runtime/operations/dispatch.js +454 -0
  193. package/lib/skill-runtime/operations/init.js +64 -0
  194. package/lib/{harness → skill-runtime}/operations/janitor.js +9 -6
  195. package/lib/skill-runtime/operations/plan.js +59 -0
  196. package/lib/skill-runtime/operations/prepare-pr.js +25 -0
  197. package/lib/skill-runtime/operations/release.js +96 -0
  198. package/lib/skill-runtime/operations/resume.js +143 -0
  199. package/lib/skill-runtime/operations/snapshot.js +45 -0
  200. package/lib/skill-runtime/operations/verify.js +170 -0
  201. package/lib/skill-runtime/operations/worker-run.js +529 -0
  202. package/lib/skill-runtime/operations/worker.js +33 -0
  203. package/lib/skill-runtime/paths.js +213 -0
  204. package/lib/skill-runtime/planner.js +519 -0
  205. package/lib/skill-runtime/query.js +157 -0
  206. package/lib/skill-runtime/review.js +557 -0
  207. package/lib/skill-runtime/schemas.js +400 -0
  208. package/lib/{harness → skill-runtime}/store.js +45 -30
  209. package/lib/skill-runtime/team-state.js +122 -0
  210. package/package.json +13 -11
  211. package/.claude/CLAUDE.md +0 -125
  212. package/.claude/agents/architecture-designer.md +0 -443
  213. package/.claude/agents/bug-analyzer.md +0 -381
  214. package/.claude/agents/checklist-agent.md +0 -175
  215. package/.claude/agents/clarify-analyst.md +0 -50
  216. package/.claude/agents/code-quality-reviewer.md +0 -205
  217. package/.claude/agents/code-reviewer.md +0 -71
  218. package/.claude/agents/codex-analyzer.md +0 -39
  219. package/.claude/agents/compatibility-checker.md +0 -579
  220. package/.claude/agents/consistency-checker.md +0 -532
  221. package/.claude/agents/dev-implementer.md +0 -195
  222. package/.claude/agents/flow-researcher.md +0 -132
  223. package/.claude/agents/impact-analyzer.md +0 -440
  224. package/.claude/agents/planner.md +0 -230
  225. package/.claude/agents/prd-writer.md +0 -320
  226. package/.claude/agents/project-guidelines-generator.md +0 -1329
  227. package/.claude/agents/qa-tester.md +0 -313
  228. package/.claude/agents/release-manager.md +0 -295
  229. package/.claude/agents/security-reviewer.md +0 -314
  230. package/.claude/agents/spec-reviewer.md +0 -221
  231. package/.claude/agents/style-guide-generator.md +0 -458
  232. package/.claude/agents/tech-architect.md +0 -516
  233. package/.claude/agents/ui-designer.md +0 -485
  234. package/.claude/commands/core/architecture.md +0 -459
  235. package/.claude/commands/core/guidelines.md +0 -511
  236. package/.claude/commands/core/roadmap.md +0 -468
  237. package/.claude/commands/core/style.md +0 -83
  238. package/.claude/commands/flow/CLAUDE.md +0 -24
  239. package/.claude/commands/flow/archive.md +0 -280
  240. package/.claude/commands/flow/constitution.md +0 -82
  241. package/.claude/commands/flow/context.md +0 -150
  242. package/.claude/commands/flow/delta.md +0 -245
  243. package/.claude/commands/flow/dev.md +0 -40
  244. package/.claude/commands/flow/fix.md +0 -217
  245. package/.claude/commands/flow/ideate.md +0 -214
  246. package/.claude/commands/flow/init.md +0 -38
  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/examples/design-inspiration-pool.md +0 -59
  266. package/.claude/docs/examples/ui-prototype-constitution-checklist.md +0 -75
  267. package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +0 -117
  268. package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +0 -99
  269. package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +0 -188
  270. package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +0 -338
  271. package/.claude/docs/guides/TEAM_MODE_GUIDE.md +0 -312
  272. package/.claude/docs/implementation-summary-v7.md +0 -449
  273. package/.claude/docs/spec-format-guide.md +0 -349
  274. package/.claude/docs/state-consolidation-design.md +0 -323
  275. package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +0 -332
  276. package/.claude/docs/templates/ATTEMPT_TEMPLATE.md +0 -156
  277. package/.claude/docs/templates/BACKLOG_TEMPLATE.md +0 -261
  278. package/.claude/docs/templates/BRAINSTORM_TEMPLATE.md +0 -148
  279. package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +0 -52
  280. package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +0 -206
  281. package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +0 -71
  282. package/.claude/docs/templates/DELTA_SPEC_TEMPLATE.md +0 -91
  283. package/.claude/docs/templates/DESIGN_DECISIONS_TEMPLATE.md +0 -151
  284. package/.claude/docs/templates/DESIGN_TEMPLATE.md +0 -157
  285. package/.claude/docs/templates/ERROR_LOG_TEMPLATE.md +0 -80
  286. package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +0 -198
  287. package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +0 -57
  288. package/.claude/docs/templates/JOURNAL_TEMPLATE.md +0 -75
  289. package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +0 -76
  290. package/.claude/docs/templates/PROPOSAL_TEMPLATE.md +0 -91
  291. package/.claude/docs/templates/RESEARCH_TEMPLATE.md +0 -276
  292. package/.claude/docs/templates/REVIEW-HIGH.md +0 -57
  293. package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +0 -198
  294. package/.claude/docs/templates/ROADMAP_TEMPLATE.md +0 -310
  295. package/.claude/docs/templates/SPEC_TEMPLATE_DELTA.md +0 -139
  296. package/.claude/docs/templates/SPEC_TEMPLATE_PROJECT.md +0 -93
  297. package/.claude/docs/templates/STYLE_TEMPLATE.md +0 -479
  298. package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +0 -373
  299. package/.claude/docs/templates/_shared/CLAUDE.md +0 -36
  300. package/.claude/docs/templates/_shared/CONSTITUTION_CHECK.md +0 -125
  301. package/.claude/docs/templates/_shared/VALIDATION_CHECKLIST.md +0 -187
  302. package/.claude/docs/templates/_shared/YAML_FRONTMATTER.md +0 -164
  303. package/.claude/docs/templates/context/dev.jsonl.template +0 -6
  304. package/.claude/docs/templates/context/epic.jsonl.template +0 -5
  305. package/.claude/docs/templates/context/prd.jsonl.template +0 -4
  306. package/.claude/docs/templates/context/research.jsonl.template +0 -4
  307. package/.claude/docs/templates/context/review.jsonl.template +0 -5
  308. package/.claude/docs/templates/context/tech.jsonl.template +0 -5
  309. package/.claude/guides/agent-guides/agent-coordination-guide.md +0 -459
  310. package/.claude/guides/project-guidelines-system.md +0 -463
  311. package/.claude/guides/technical-guides/datetime-handling-guide.md +0 -563
  312. package/.claude/guides/technical-guides/git-github-guide.md +0 -642
  313. package/.claude/guides/technical-guides/test-execution-guide.md +0 -618
  314. package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +0 -217
  315. package/.claude/guides/workflow-guides/flow-orchestrator.md +0 -48
  316. package/.claude/hooks/CLAUDE.md +0 -342
  317. package/.claude/hooks/checklist-gate.js +0 -397
  318. package/.claude/hooks/error-handling-reminder.sh +0 -12
  319. package/.claude/hooks/error-handling-reminder.ts +0 -459
  320. package/.claude/hooks/hooks.json +0 -15
  321. package/.claude/hooks/inject-agent-context.ts +0 -480
  322. package/.claude/hooks/inject-skill-context.ts +0 -359
  323. package/.claude/hooks/post-tool-use-tracker.sh +0 -280
  324. package/.claude/hooks/pre-tool-use-guardrail.sh +0 -36
  325. package/.claude/hooks/pre-tool-use-guardrail.ts +0 -342
  326. package/.claude/hooks/ralph-loop.ts +0 -931
  327. package/.claude/hooks/ralph-stop-hook.sh +0 -190
  328. package/.claude/hooks/skill-activation-prompt.sh +0 -36
  329. package/.claude/hooks/skill-activation-prompt.ts +0 -214
  330. package/.claude/hooks/state/skills-used-test-guard.json +0 -3
  331. package/.claude/hooks/task-completed-hook.ts +0 -593
  332. package/.claude/hooks/teammate-idle-hook.ts +0 -690
  333. package/.claude/hooks/types/team-types.d.ts +0 -238
  334. package/.claude/rules/devflow-conventions.md +0 -286
  335. package/.claude/rules/project-constitution.md +0 -1002
  336. package/.claude/rules/rationalization-library.md +0 -282
  337. package/.claude/schemas/constitution.schema.json +0 -43
  338. package/.claude/scripts/.claude/commands/flow/export-openspec.md +0 -221
  339. package/.claude/scripts/.claude/commands/flow/import-openspec.md +0 -171
  340. package/.claude/scripts/CLAUDE.md +0 -76
  341. package/.claude/scripts/__tests__/openspec.test.js +0 -212
  342. package/.claude/scripts/analyze-upgrade-impact.sh +0 -200
  343. package/.claude/scripts/archive-requirement.sh +0 -394
  344. package/.claude/scripts/calculate-checklist-completion.sh +0 -243
  345. package/.claude/scripts/calculate-quarter.sh +0 -206
  346. package/.claude/scripts/check-dependencies.sh +0 -409
  347. package/.claude/scripts/check-prerequisites.sh +0 -232
  348. package/.claude/scripts/check-task-status.sh +0 -288
  349. package/.claude/scripts/checklist-errors.sh +0 -131
  350. package/.claude/scripts/common.sh +0 -1102
  351. package/.claude/scripts/consolidate-research.sh +0 -182
  352. package/.claude/scripts/create-requirement.sh +0 -451
  353. package/.claude/scripts/delta-parser.ts +0 -637
  354. package/.claude/scripts/detect-file-conflicts.sh +0 -151
  355. package/.claude/scripts/export-contracts.sh +0 -117
  356. package/.claude/scripts/export-openspec.js +0 -222
  357. package/.claude/scripts/extract-data-model.sh +0 -78
  358. package/.claude/scripts/flow-context-add.sh +0 -134
  359. package/.claude/scripts/flow-context-init.sh +0 -133
  360. package/.claude/scripts/flow-context-validate.sh +0 -144
  361. package/.claude/scripts/flow-delta-apply.sh +0 -297
  362. package/.claude/scripts/flow-delta-archive.sh +0 -71
  363. package/.claude/scripts/flow-delta-create.sh +0 -202
  364. package/.claude/scripts/flow-delta-list.sh +0 -142
  365. package/.claude/scripts/flow-delta-status.sh +0 -235
  366. package/.claude/scripts/flow-quality-full.sh +0 -215
  367. package/.claude/scripts/flow-quality-quick.sh +0 -119
  368. package/.claude/scripts/flow-workspace-init.sh +0 -117
  369. package/.claude/scripts/flow-workspace-record.sh +0 -164
  370. package/.claude/scripts/generate-clarification-questions.sh +0 -377
  371. package/.claude/scripts/generate-clarification-report.sh +0 -463
  372. package/.claude/scripts/generate-quickstart.sh +0 -146
  373. package/.claude/scripts/generate-research-tasks.sh +0 -157
  374. package/.claude/scripts/generate-status-report.sh +0 -523
  375. package/.claude/scripts/generate-tech-analysis.sh +0 -46
  376. package/.claude/scripts/get-workflow-status.sh +0 -415
  377. package/.claude/scripts/import-openspec.js +0 -272
  378. package/.claude/scripts/locate-requirement-in-roadmap.sh +0 -233
  379. package/.claude/scripts/manage-constitution.sh +0 -602
  380. package/.claude/scripts/mark-task-complete.sh +0 -198
  381. package/.claude/scripts/parse-task-dependencies.js +0 -334
  382. package/.claude/scripts/populate-research-tasks.sh +0 -284
  383. package/.claude/scripts/record-quality-error.sh +0 -165
  384. package/.claude/scripts/recover-workflow.sh +0 -463
  385. package/.claude/scripts/run-clarify-scan.sh +0 -601
  386. package/.claude/scripts/run-high-review.sh +0 -62
  387. package/.claude/scripts/run-problem-analysis.sh +0 -68
  388. package/.claude/scripts/run-quality-gates.sh +0 -242
  389. package/.claude/scripts/setup-epic.sh +0 -173
  390. package/.claude/scripts/setup-ralph-loop.sh +0 -155
  391. package/.claude/scripts/sync-roadmap-progress.sh +0 -300
  392. package/.claude/scripts/sync-task-marks.sh +0 -199
  393. package/.claude/scripts/team-dev-init.sh +0 -319
  394. package/.claude/scripts/team-state-recovery.sh +0 -229
  395. package/.claude/scripts/test-clarify-scan.sh +0 -515
  396. package/.claude/scripts/update-agent-context.sh +0 -806
  397. package/.claude/scripts/validate-constitution.sh +0 -567
  398. package/.claude/scripts/validate-hooks.sh +0 -487
  399. package/.claude/scripts/validate-research.sh +0 -332
  400. package/.claude/scripts/validate-scope-boundary.sh +0 -493
  401. package/.claude/scripts/validate-scope.sh +0 -200
  402. package/.claude/scripts/verify-gate.sh +0 -269
  403. package/.claude/scripts/verify-setup.sh +0 -37
  404. package/.claude/scripts/workflow-status.ts +0 -433
  405. package/.claude/settings.json +0 -95
  406. package/.claude/skills/_reference-implementations/README.md +0 -96
  407. package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +0 -302
  408. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +0 -451
  409. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +0 -307
  410. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +0 -638
  411. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +0 -275
  412. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +0 -224
  413. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +0 -213
  414. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +0 -756
  415. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +0 -336
  416. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +0 -789
  417. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +0 -235
  418. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +0 -754
  419. package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +0 -399
  420. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +0 -331
  421. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +0 -872
  422. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +0 -502
  423. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +0 -767
  424. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +0 -502
  425. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +0 -501
  426. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +0 -406
  427. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +0 -364
  428. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +0 -428
  429. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +0 -418
  430. package/.claude/skills/attention-refresh/SKILL.md +0 -170
  431. package/.claude/skills/brainstorming/SKILL.md +0 -161
  432. package/.claude/skills/cc-devflow-orchestrator/SKILL.md +0 -169
  433. package/.claude/skills/constitution-guardian/SKILL.md +0 -306
  434. package/.claude/skills/constitution-quick-ref/SKILL.md +0 -374
  435. package/.claude/skills/debugging/SKILL.md +0 -221
  436. package/.claude/skills/file-standards/SKILL.md +0 -353
  437. package/.claude/skills/finishing-branch/SKILL.md +0 -189
  438. package/.claude/skills/flow-dev/CLAUDE.md +0 -16
  439. package/.claude/skills/flow-dev/SKILL.md +0 -94
  440. package/.claude/skills/flow-dev/assets/IMPLEMENTATION_PLAN_TEMPLATE.md +0 -71
  441. package/.claude/skills/flow-dev/context.jsonl +0 -4
  442. package/.claude/skills/flow-dev/dev-implementer.jsonl +0 -8
  443. package/.claude/skills/flow-dev/scripts/entry-gate.sh +0 -116
  444. package/.claude/skills/flow-dev/scripts/exit-gate.sh +0 -101
  445. package/.claude/skills/flow-dev/scripts/task-orchestrator.sh +0 -106
  446. package/.claude/skills/flow-fix/SKILL.md +0 -105
  447. package/.claude/skills/flow-fix/context.jsonl +0 -6
  448. package/.claude/skills/flow-fix/references/bug-analyzer.md +0 -381
  449. package/.claude/skills/flow-init/SKILL.md +0 -105
  450. package/.claude/skills/flow-init/assets/BRAINSTORM_TEMPLATE.md +0 -148
  451. package/.claude/skills/flow-init/assets/INIT_FLOW_TEMPLATE.md +0 -198
  452. package/.claude/skills/flow-init/assets/RESEARCH_TEMPLATE.md +0 -276
  453. package/.claude/skills/flow-init/context.jsonl +0 -5
  454. package/.claude/skills/flow-init/references/flow-researcher.md +0 -132
  455. package/.claude/skills/flow-init/scripts/check-prerequisites.sh +0 -240
  456. package/.claude/skills/flow-init/scripts/consolidate-research.sh +0 -182
  457. package/.claude/skills/flow-init/scripts/create-requirement.sh +0 -404
  458. package/.claude/skills/flow-init/scripts/generate-research-tasks.sh +0 -157
  459. package/.claude/skills/flow-init/scripts/populate-research-tasks.sh +0 -284
  460. package/.claude/skills/flow-init/scripts/validate-research.sh +0 -340
  461. package/.claude/skills/flow-quality/SKILL.md +0 -98
  462. package/.claude/skills/flow-quality/context.jsonl +0 -6
  463. package/.claude/skills/flow-quality/references/code-quality-reviewer.md +0 -205
  464. package/.claude/skills/flow-quality/references/qa-tester.md +0 -313
  465. package/.claude/skills/flow-quality/references/security-reviewer.md +0 -314
  466. package/.claude/skills/flow-quality/references/spec-reviewer.md +0 -221
  467. package/.claude/skills/flow-release/SKILL.md +0 -60
  468. package/.claude/skills/flow-release/context.jsonl +0 -5
  469. package/.claude/skills/flow-release/references/release-manager.md +0 -295
  470. package/.claude/skills/flow-spec/CLAUDE.md +0 -17
  471. package/.claude/skills/flow-spec/SKILL.md +0 -102
  472. package/.claude/skills/flow-spec/context.jsonl +0 -5
  473. package/.claude/skills/flow-spec/scripts/entry-gate.sh +0 -194
  474. package/.claude/skills/flow-spec/scripts/exit-gate.sh +0 -244
  475. package/.claude/skills/flow-spec/scripts/parallel-orchestrator.sh +0 -205
  476. package/.claude/skills/flow-spec/scripts/team-communication.sh +0 -353
  477. package/.claude/skills/flow-spec/scripts/team-init.sh +0 -195
  478. package/.claude/skills/flow-spec/scripts/test-team-mode.sh +0 -496
  479. package/.claude/skills/flow-spec/team-config.json +0 -165
  480. package/.claude/skills/flow-verify/CLAUDE.md +0 -10
  481. package/.claude/skills/flow-verify/SKILL.md +0 -53
  482. package/.claude/skills/flow-verify/context.jsonl +0 -5
  483. package/.claude/skills/fractal-docs/SKILL.md +0 -45
  484. package/.claude/skills/journey-checker/SKILL.md +0 -199
  485. package/.claude/skills/journey-checker/pressure-scenarios.md +0 -164
  486. package/.claude/skills/receiving-review/SKILL.md +0 -153
  487. package/.claude/skills/skill-creator/LICENSE.txt +0 -202
  488. package/.claude/skills/skill-creator/SKILL.md +0 -356
  489. package/.claude/skills/skill-creator/references/output-patterns.md +0 -82
  490. package/.claude/skills/skill-creator/references/workflows.md +0 -28
  491. package/.claude/skills/skill-creator/scripts/init_skill.py +0 -303
  492. package/.claude/skills/skill-creator/scripts/package_skill.py +0 -110
  493. package/.claude/skills/skill-creator/scripts/quick_validate.py +0 -95
  494. package/.claude/skills/skill-rules.json +0 -359
  495. package/.claude/skills/tdd/SKILL.md +0 -218
  496. package/.claude/skills/tdd-enforcer/SKILL.md +0 -192
  497. package/.claude/skills/utility/npm-release/CLAUDE.md +0 -55
  498. package/.claude/skills/utility/npm-release/SKILL.md +0 -379
  499. package/.claude/skills/utility/npm-release/references/version-decision-guide.md +0 -134
  500. package/.claude/skills/utility/npm-release/scripts/atomic-version-bump.sh +0 -95
  501. package/.claude/skills/utility/npm-release/scripts/validate-version-sync.sh +0 -82
  502. package/.claude/skills/utility/npm-release/scripts/version-decision-tree.sh +0 -44
  503. package/.claude/skills/verification/SKILL.md +0 -158
  504. package/.claude/skills/workflow.yaml +0 -219
  505. package/.claude/tests/README.md +0 -300
  506. package/.claude/tests/TODO.md +0 -69
  507. package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
  508. package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
  509. package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
  510. package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
  511. package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
  512. package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
  513. package/.claude/tests/constitution/run_all_constitution_tests.sh +0 -111
  514. package/.claude/tests/constitution/test_agent_assignment.sh +0 -207
  515. package/.claude/tests/constitution/test_article_coverage.sh +0 -201
  516. package/.claude/tests/constitution/test_template_completeness.sh +0 -150
  517. package/.claude/tests/constitution/test_version_consistency.sh +0 -120
  518. package/.claude/tests/fixtures/spec_delta_full.md +0 -16
  519. package/.claude/tests/fixtures/tasks_progress_sample.md +0 -5
  520. package/.claude/tests/run-all-tests.sh +0 -229
  521. package/.claude/tests/scripts/run.sh +0 -30
  522. package/.claude/tests/scripts/test-framework.sh +0 -128
  523. package/.claude/tests/scripts/test_check_prerequisites.sh +0 -511
  524. package/.claude/tests/scripts/test_check_prerequisites.sh.bak +0 -504
  525. package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +0 -505
  526. package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +0 -506
  527. package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +0 -507
  528. package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +0 -508
  529. package/.claude/tests/scripts/test_check_task_status.sh +0 -499
  530. package/.claude/tests/scripts/test_common.sh +0 -244
  531. package/.claude/tests/scripts/test_generate_status_report.sh +0 -71
  532. package/.claude/tests/scripts/test_mark_task_complete.sh +0 -441
  533. package/.claude/tests/scripts/test_mark_task_complete.sh.backup +0 -410
  534. package/.claude/tests/scripts/test_recover_workflow.sh +0 -304
  535. package/.claude/tests/scripts/test_setup_epic.sh +0 -437
  536. package/.claude/tests/scripts/test_sync_task_marks.sh +0 -196
  537. package/.claude/tests/scripts/test_validate_constitution.sh +0 -74
  538. package/.claude/tests/scripts/test_validate_research.sh +0 -462
  539. package/.claude/tests/slugify.bats +0 -82
  540. package/.claude/tests/test-framework.sh +0 -732
  541. package/.claude/tests/test_analyze_upgrade_impact.py +0 -34
  542. package/.claude/tests/test_consolidate_research.py +0 -48
  543. package/.claude/tests/test_export_contracts.py +0 -43
  544. package/.claude/tests/test_extract_data_model.py +0 -33
  545. package/.claude/tests/test_generate_quickstart.py +0 -50
  546. package/.claude/tests/test_generate_research_tasks.py +0 -52
  547. package/.claude/tsc-cache/70d2fc6d-2936-429b-b529-429f1aae8c88/affected-repos.txt +0 -1
  548. package/.claude/tsc-cache/70d2fc6d-2936-429b-b529-429f1aae8c88/edited-files.log +0 -2
  549. package/bin/harness.js +0 -22
  550. package/docs/commands/core-roadmap.md +0 -106
  551. package/docs/commands/core-roadmap.zh-CN.md +0 -102
  552. package/docs/commands/core-style.md +0 -53
  553. package/docs/commands/core-style.zh-CN.md +0 -53
  554. package/docs/commands/flow-init.md +0 -140
  555. package/docs/commands/flow-init.zh-CN.md +0 -169
  556. package/docs/commands/flow-new.md +0 -39
  557. package/docs/commands/flow-new.zh-CN.md +0 -39
  558. package/lib/compiler/__tests__/compile-regression.test.js +0 -103
  559. package/lib/compiler/__tests__/multi-module-emitters.test.js +0 -534
  560. package/lib/compiler/__tests__/resource-copier.test.js +0 -26
  561. package/lib/compiler/__tests__/skill-discovery.test.js +0 -72
  562. package/lib/compiler/context-expander.js +0 -179
  563. package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +0 -109
  564. package/lib/compiler/rules-emitters/codex-rules-emitter.js +0 -116
  565. package/lib/compiler/skill-discovery.js +0 -68
  566. package/lib/harness/CLAUDE.md +0 -22
  567. package/lib/harness/__tests__/planner.tdd.test.js +0 -125
  568. package/lib/harness/cli.js +0 -208
  569. package/lib/harness/index.js +0 -18
  570. package/lib/harness/operations/dispatch.js +0 -298
  571. package/lib/harness/operations/init.js +0 -48
  572. package/lib/harness/operations/pack.js +0 -100
  573. package/lib/harness/operations/plan.js +0 -83
  574. package/lib/harness/operations/release.js +0 -170
  575. package/lib/harness/operations/resume.js +0 -44
  576. package/lib/harness/operations/verify.js +0 -177
  577. package/lib/harness/planner.js +0 -272
  578. package/lib/harness/query.js +0 -126
  579. package/lib/harness/schemas.js +0 -129
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 本地回写器:更新路线图跟踪表中的状态/REQ/进度
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage: sync-roadmap-progress.sh --rm RM-001 [--status Planned] [--req REQ-001] [--progress 50%] [--file devflow/ROADMAP.md]
12
+ [--item "Add copy action"] [--stage "Stage 1"] [--priority P1] [--depends-on "RM-000"]
13
+ [--primary-capability cap-example] [--secondary-capabilities "cap-a,cap-b"] [--spec-delta "tighten truth"]
14
+ [--tracking-file devflow/roadmap-tracking.json] [--backlog-file devflow/BACKLOG.md]
15
+ EOF
16
+ }
17
+
18
+ RM_ID=""
19
+ ITEM=""
20
+ STAGE=""
21
+ PRIORITY=""
22
+ STATUS=""
23
+ REQ_ID=""
24
+ PROGRESS=""
25
+ DEPENDS_ON=""
26
+ PRIMARY_CAPABILITY=""
27
+ SECONDARY_CAPABILITIES=""
28
+ SPEC_DELTA=""
29
+ REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
30
+ DEFAULT_FILE="$REPO_ROOT/devflow/ROADMAP.md"
31
+ ROOT_FILE="$REPO_ROOT/ROADMAP.md"
32
+ LEGACY_FILE="$REPO_ROOT/devflow/roadmap/roadmap.md"
33
+ FILE="$DEFAULT_FILE"
34
+ TRACKING_FILE=""
35
+ BACKLOG_FILE=""
36
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
37
+
38
+ while [[ $# -gt 0 ]]; do
39
+ case "$1" in
40
+ --rm) RM_ID="$2"; shift 2 ;;
41
+ --item) ITEM="$2"; shift 2 ;;
42
+ --stage) STAGE="$2"; shift 2 ;;
43
+ --priority) PRIORITY="$2"; shift 2 ;;
44
+ --status) STATUS="$2"; shift 2 ;;
45
+ --req) REQ_ID="$2"; shift 2 ;;
46
+ --progress) PROGRESS="$2"; shift 2 ;;
47
+ --depends-on) DEPENDS_ON="$2"; shift 2 ;;
48
+ --primary-capability) PRIMARY_CAPABILITY="$2"; shift 2 ;;
49
+ --secondary-capabilities) SECONDARY_CAPABILITIES="$2"; shift 2 ;;
50
+ --spec-delta) SPEC_DELTA="$2"; shift 2 ;;
51
+ --file) FILE="$2"; shift 2 ;;
52
+ --tracking-file) TRACKING_FILE="$2"; shift 2 ;;
53
+ --backlog-file) BACKLOG_FILE="$2"; shift 2 ;;
54
+ -h|--help) usage; exit 0 ;;
55
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
56
+ esac
57
+ done
58
+
59
+ if [[ "$FILE" == "$DEFAULT_FILE" && ! -f "$FILE" ]]; then
60
+ if [[ -f "$ROOT_FILE" ]]; then
61
+ FILE="$ROOT_FILE"
62
+ elif [[ -f "$LEGACY_FILE" ]]; then
63
+ FILE="$LEGACY_FILE"
64
+ fi
65
+ fi
66
+
67
+ if [[ -z "$RM_ID" || ! -f "$FILE" ]]; then
68
+ usage
69
+ exit 1
70
+ fi
71
+
72
+ if [[ -z "$TRACKING_FILE" ]]; then
73
+ TRACKING_FILE="$(cd "$(dirname "$FILE")" && pwd)/roadmap-tracking.json"
74
+ fi
75
+
76
+ if [[ -z "$BACKLOG_FILE" ]]; then
77
+ BACKLOG_FILE="$(cd "$(dirname "$FILE")" && pwd)/BACKLOG.md"
78
+ fi
79
+
80
+ args=(
81
+ sync
82
+ --roadmap "$FILE"
83
+ --backlog "$BACKLOG_FILE"
84
+ --tracking "$TRACKING_FILE"
85
+ --rm "$RM_ID"
86
+ )
87
+
88
+ [[ -n "$ITEM" ]] && args+=(--item "$ITEM")
89
+ [[ -n "$STAGE" ]] && args+=(--stage "$STAGE")
90
+ [[ -n "$PRIORITY" ]] && args+=(--priority "$PRIORITY")
91
+ [[ -n "$STATUS" ]] && args+=(--status "$STATUS")
92
+ [[ -n "$REQ_ID" ]] && args+=(--req "$REQ_ID")
93
+ [[ -n "$PROGRESS" ]] && args+=(--progress "$PROGRESS")
94
+ [[ -n "$DEPENDS_ON" ]] && args+=(--depends-on "$DEPENDS_ON")
95
+ [[ -n "$PRIMARY_CAPABILITY" ]] && args+=(--primary-capability "$PRIMARY_CAPABILITY")
96
+ [[ -n "$SECONDARY_CAPABILITIES" ]] && args+=(--secondary-capabilities "$SECONDARY_CAPABILITIES")
97
+ [[ -n "$SPEC_DELTA" ]] && args+=(--spec-delta "$SPEC_DELTA")
98
+
99
+ node "$SCRIPT_DIR/roadmap-tracking.js" "${args[@]}"
100
+ echo "Updated $RM_ID in $FILE and $BACKLOG_FILE via $TRACKING_FILE"
@@ -0,0 +1,10 @@
1
+ # CC-Simplify Skill Changelog
2
+
3
+ ## v1.1.0 - 2026-04-19
4
+
5
+ - expand `cc-simplify` review scope to catch spec drift alongside reuse, quality, and efficiency issues
6
+ - require the cleanup pass to flag missing `change-meta.json` or capability spec sync when behavior changes outrun the spec chain
7
+
8
+ ## v1.0.0 - 2026-04-17
9
+
10
+ - initial distributed `cc-simplify` maintenance skill for pre-ship cleanup
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: cc-simplify
3
+ version: 1.1.0
4
+ description: Review changed code for reuse, quality, efficiency, and spec drift, then fix any issues found or flag the drift for the user.
5
+ ---
6
+ Simplify: Code Review and Cleanup
7
+
8
+ Review all changed files for reuse, quality, and efficiency. Fix any issues found.
9
+
10
+ ## Phase 1: Identify Changes
11
+
12
+ Run \`git diff\` (or \`git diff HEAD\` if there are staged changes) to see what changed. If there are no git changes, review the most recently modified files that the user mentioned or that you edited earlier in this conversation.
13
+
14
+ ## Phase 2: Launch Three Review Agents in Parallel
15
+
16
+ Use the ${AGENT_TOOL_NAME} tool to launch all three agents concurrently in a single message. Pass each agent the full diff so it has the complete context.
17
+
18
+ ### Agent 1: Code Reuse Review
19
+
20
+ For each change:
21
+
22
+ 1. **Search for existing utilities and helpers** that could replace newly written code. Look for similar patterns elsewhere in the codebase — common locations are utility directories, shared modules, and files adjacent to the changed ones.
23
+ 2. **Flag any new function that duplicates existing functionality.** Suggest the existing function to use instead.
24
+ 3. **Flag any inline logic that could use an existing utility** — hand-rolled string manipulation, manual path handling, custom environment checks, ad-hoc type guards, and similar patterns are common candidates.
25
+
26
+ ### Agent 2: Code Quality Review
27
+
28
+ Review the same changes for hacky patterns:
29
+
30
+ 1. **Redundant state**: state that duplicates existing state, cached values that could be derived, observers/effects that could be direct calls
31
+ 2. **Parameter sprawl**: adding new parameters to a function instead of generalizing or restructuring existing ones
32
+ 3. **Copy-paste with slight variation**: near-duplicate code blocks that should be unified with a shared abstraction
33
+ 4. **Leaky abstractions**: exposing internal details that should be encapsulated, or breaking existing abstraction boundaries
34
+ 5. **Stringly-typed code**: using raw strings where constants, enums (string unions), or branded types already exist in the codebase
35
+ 6. **Unnecessary JSX nesting**: wrapper Boxes/elements that add no layout value — check if inner component props (flexShrink, alignItems, etc.) already provide the needed behavior
36
+ 7. **Unnecessary comments**: comments explaining WHAT the code does (well-named identifiers already do that), narrating the change, or referencing the task/caller — delete; keep only non-obvious WHY (hidden constraints, subtle invariants, workarounds)
37
+ 8. **Spec drift**: behavior, boundary, or invariant changed but no matching `change-meta.json` / capability spec delta was updated — flag it explicitly and propose the missing spec sync
38
+
39
+ ### Agent 3: Efficiency Review
40
+
41
+ Review the same changes for efficiency:
42
+
43
+ 1. **Unnecessary work**: redundant computations, repeated file reads, duplicate network/API calls, N+1 patterns
44
+ 2. **Missed concurrency**: independent operations run sequentially when they could run in parallel
45
+ 3. **Hot-path bloat**: new blocking work added to startup or per-request/per-render hot paths
46
+ 4. **Recurring no-op updates**: state/store updates inside polling loops, intervals, or event handlers that fire unconditionally — add a change-detection guard so downstream consumers aren't notified when nothing changed. Also: if a wrapper function takes an updater/reducer callback, verify it honors same-reference returns (or whatever the "no change" signal is) — otherwise callers' early-return no-ops are silently defeated
47
+ 5. **Unnecessary existence checks**: pre-checking file/resource existence before operating (TOCTOU anti-pattern) — operate directly and handle the error
48
+ 6. **Memory**: unbounded data structures, missing cleanup, event listener leaks
49
+ 7. **Overly broad operations**: reading entire files when only a portion is needed, loading all items when filtering for one
50
+
51
+ ## Phase 3: Fix Issues
52
+
53
+ Wait for all three agents to complete. Aggregate their findings and fix each issue directly. If a finding is a false positive or not worth addressing, note it and move on — do not argue with the finding, just skip it.
54
+
55
+ When done, briefly summarize what was fixed (or confirm the code was already clean).
@@ -0,0 +1,12 @@
1
+ # CC-Spec-Init Skill Changelog
2
+
3
+ ## v1.0.1 - 2026-04-27
4
+
5
+ - require capability specs, spec indexes, and change metadata to resolve the runtime output policy before writing durable artifacts
6
+ - record `Output language` as the machine-enforced language contract while treating `agent_preferences` as advisory style input
7
+
8
+ ## v1.0.0 - 2026-04-19
9
+
10
+ - 初始版 `cc-spec-init`,用于 capability-centered spec 初始化、能力真相源维护和 `change-meta.json` 链路收口。
11
+ - 新增 `INDEX.md`、capability spec、`change-meta.json` 三类模板。
12
+ - 新增 bootstrap 与链接校验脚本,供 `cc-roadmap`、`cc-plan`、`cc-act` 前后复用。
@@ -0,0 +1,55 @@
1
+ # CC-Spec-Init Playbook
2
+
3
+ ## Core Rules
4
+
5
+ 1. 先定 capability 边界,再写 spec 文本。
6
+ 2. `spec` 记录现状,`roadmap` 记录未来,`change-meta` 记录桥接。
7
+ 3. 同一个 change 可以多挂 capability,但只能有一个 primary capability。
8
+ 4. 正常演化优先 `deprecated` / `merged` / `split`,不要直接物理删除。
9
+ 5. 每次变更结束都跑链接校验,别把断链留到下轮执行。
10
+
11
+ ## Standard Modes
12
+
13
+ ### Bootstrap
14
+
15
+ - 建 `devflow/specs/INDEX.md`
16
+ - 建 `devflow/specs/capabilities/`
17
+ - 为当前最重要的 capability 建最小 truth source
18
+
19
+ ### Create
20
+
21
+ - 新 capability spec
22
+ - 回写 `INDEX.md`
23
+ - 为当前 change 生成 `change-meta.json`
24
+
25
+ ### Update Links
26
+
27
+ - 修 roadmap / backlog / change / spec 的 capability 引用
28
+ - 重建 `INDEX.md`
29
+
30
+ ### Split / Merge / Deprecate
31
+
32
+ - 在原 capability spec 标明状态变化
33
+ - 补 `splitInto` / `mergedInto` / `supersededBy`
34
+ - 确认历史 change 仍然可追踪
35
+
36
+ ## Command Kit
37
+
38
+ ```bash
39
+ # 初始化 specs 目录
40
+ bash .claude/skills/cc-spec-init/scripts/bootstrap-specs.sh
41
+
42
+ # 校验 spec 链路
43
+ bash .claude/skills/cc-spec-init/scripts/validate-spec-links.sh
44
+
45
+ # 看哪些 change 已缺 change-meta
46
+ find devflow/changes -maxdepth 2 -name change-meta.json | sort
47
+ ```
48
+
49
+ ## Review Questions
50
+
51
+ 1. capability 的边界是否清楚到 AI 不会把别的系统能力写进来?
52
+ 2. `Current Truth` 是否只写当前成立的承诺?
53
+ 3. `Missing` 和 `Intentional Gaps` 是否被保留下来?
54
+ 4. roadmap item 和 change 是否都能指向 capability?
55
+ 5. 这次是该 `update`,还是其实应该 `split` / `merge`?
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: cc-spec-init
3
+ version: 1.0.1
4
+ description: Use when you need to initialize capability specs under `devflow/specs/`, create or evolve capability truth sources, generate `change-meta.json`, or validate roadmap/change/spec links before roadmap, planning, or closeout work continues.
5
+ ---
6
+
7
+ # CC-Spec-Init
8
+
9
+ > [PROTOCOL]: 变更时同步更新 `version`、`CHANGELOG.md`、相关模板/脚本引用,然后检查 `CLAUDE.md`
10
+
11
+ ## Role
12
+
13
+ `cc-spec-init` 是 capability-centered spec 的收口器。
14
+
15
+ 它只做一件事:把系统“当前承诺什么”收成稳定 truth source,并把 `roadmap -> change -> spec` 的链接补齐。
16
+
17
+ 它不是主 workflow 的一环。
18
+
19
+ 主 workflow 仍然是:
20
+
21
+ - `cc-roadmap`
22
+ - `cc-plan` 或 `cc-investigate`
23
+ - `cc-do`
24
+ - `cc-check`
25
+ - `cc-act`
26
+
27
+ `cc-spec-init` 负责这些动作:
28
+
29
+ - 初始化 `devflow/specs/`
30
+ - 新建 capability spec
31
+ - 对 capability 做 `split` / `merge` / `deprecate`
32
+ - 生成或修复 `devflow/changes/<change-key>/change-meta.json`
33
+ - 重建 `devflow/specs/INDEX.md`
34
+ - 校验 capability、roadmap item、change 之间的链接完整性
35
+
36
+ ## Runtime Output Policy
37
+
38
+ 写入任何 durable Markdown 或 JSON metadata 前,先运行 `cc-devflow config resolve --format policy`。
39
+
40
+ - `Output language` 是机器约束,capability spec、`devflow/specs/INDEX.md` 和 `change-meta.json` 必须记录并遵守它。
41
+ - `agent_preferences` 是用户偏好建议,只影响表达方式和结构选择,不覆盖本 Skill 的工作流边界。
42
+ - 如果配置解析失败,先修配置或向用户说明阻塞,不要用默认语言继续生成正式文档。
43
+
44
+ ## Read First
45
+
46
+ 1. `PLAYBOOK.md`
47
+ 2. `CHANGELOG.md`
48
+ 3. `references/spec-contract.md`
49
+ 4. `assets/INDEX_TEMPLATE.md`
50
+ 5. `assets/CAPABILITY_TEMPLATE.md`
51
+ 6. `assets/CHANGE_META_TEMPLATE.json`
52
+
53
+ ## Use This Skill When
54
+
55
+ - 你第一次把仓库升级到 capability-centered spec 模型
56
+ - 需要创建新 capability spec
57
+ - 需要把 change 绑定到 primary / secondary capability
58
+ - 需要做 capability 的 `split` / `merge` / `deprecate`
59
+ - `cc-roadmap`、`cc-plan`、`cc-act` 发现 spec 链路断了
60
+ - 需要在 closeout 前确认 spec/roadmap/change 仍然同构
61
+
62
+ 如果当前工作只是执行一个已冻结任务,不要停在这里,回主 workflow。
63
+
64
+ ## Entry Gate
65
+
66
+ 1. 先读现有 `devflow/specs/INDEX.md`、相关 capability spec、相关 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`、相关 `change-meta.json`。
67
+ 2. 先判断你是在做 `bootstrap`、`create`、`update-links`、`split`、`merge` 还是 `deprecate`。
68
+ 3. 先锁定 capability 边界,再写模板;不要先写 prose 再猜结构。
69
+ 4. 先明确 primary capability,再允许 secondary capabilities 存在。
70
+
71
+ ## Session Protocol
72
+
73
+ 1. 先判断现状:
74
+ - `devflow/specs/` 是否已存在
75
+ - capability 是否已存在
76
+ - 相关 change 是否已有 `change-meta.json`
77
+ 2. 如果是首次初始化:
78
+ - 创建 `devflow/specs/INDEX.md`
79
+ - 创建 `devflow/specs/capabilities/`
80
+ - 为当前已知 capability 写最小 spec
81
+ 3. 如果是新 capability:
82
+ - 先写 capability 边界、约束、当前 truth、gaps
83
+ - 再登记到 `INDEX.md`
84
+ 4. 如果是 change 绑定:
85
+ - 生成或更新 `change-meta.json`
86
+ - 填入 `primaryCapability`、`secondaryCapabilities`、`expectedDelta`、`affectedInvariants`、`gapsClosed`、`newGaps`
87
+ 5. 如果是 capability 结构调整:
88
+ - 优先 `deprecated` / `mergedInto` / `splitInto`
89
+ - 不要直接物理删除,除非确认没有 roadmap/change 仍在引用
90
+ 6. 结束前运行链接校验,确认:
91
+ - `INDEX.md` 引到的 capability 文件都存在
92
+ - `change-meta.json` 里的 capability 都能落到 spec
93
+ - roadmap / backlog 里的 capability 引用仍可追踪
94
+
95
+ ## Output
96
+
97
+ - `devflow/specs/INDEX.md`
98
+ - `devflow/specs/capabilities/<capability>.md`
99
+ - `devflow/changes/<change-key>/change-meta.json`
100
+ - 链接校验结果
101
+
102
+ ## Working Rules
103
+
104
+ 1. `spec` 写现状,不写一次性推导过程。
105
+ 2. `roadmap` 写未来推进,不写当前 truth。
106
+ 3. `change-meta.json` 是机器真相源;capability markdown 是人机共读的长期约束源。
107
+ 4. 一个 change 可以挂多个 capability,但必须有一个 `primaryCapability`。
108
+ 5. capability 不直接硬删除;优先用状态表达历史连续性。
109
+ 6. `INDEX.md` 只做目录和状态总览,不复制各 spec 正文。
110
+
111
+ ## Bundled Resources
112
+
113
+ - 变更记录:`CHANGELOG.md`
114
+ - 使用剧本:`PLAYBOOK.md`
115
+ - 契约:`references/spec-contract.md`
116
+ - 模板:`assets/INDEX_TEMPLATE.md`
117
+ - 模板:`assets/CAPABILITY_TEMPLATE.md`
118
+ - 模板:`assets/CHANGE_META_TEMPLATE.json`
119
+ - 初始化:`scripts/bootstrap-specs.sh`
120
+ - 校验:`scripts/validate-spec-links.sh`
121
+
122
+ ## Exit Criteria
123
+
124
+ - `devflow/specs/` 已建立或已修复
125
+ - 相关 capability spec 有明确边界、约束、truth、gaps
126
+ - 相关 change 已有 `change-meta.json`
127
+ - `INDEX.md`、roadmap、change、spec 之间的链接可追踪
128
+ - 下一步可以安心回到 `cc-roadmap`、`cc-plan` 或 `cc-act`
129
+
130
+ ## Do Not
131
+
132
+ - 不把 roadmap 写回 spec
133
+ - 不把执行细节写成 capability truth
134
+ - 不允许没有 primary capability 的多 capability change
135
+ - 不直接删 capability 文件导致链路断裂
@@ -0,0 +1,64 @@
1
+ ---
2
+ id: cap-example
3
+ title: Example Capability
4
+ type: user-visible
5
+ status: partial
6
+ primary_owner: ""
7
+ output_language: ""
8
+ last_verified_at: 2026-04-19
9
+ roadmap_links:
10
+ - RM-001
11
+ related_changes:
12
+ - REQ-001-example
13
+ superseded_by: []
14
+ split_into: []
15
+ merged_into: ""
16
+ ---
17
+
18
+ # Purpose
19
+
20
+ 一句话说明这个 capability 为谁解决什么问题。
21
+
22
+ # Boundary
23
+
24
+ In:
25
+ - 属于这个 capability 的行为
26
+
27
+ Out:
28
+ - 明确不属于这个 capability 的行为
29
+
30
+ # Invariants
31
+
32
+ - 后续 change 不能破坏的约束
33
+ - AI 改代码前必须先满足这些约束
34
+
35
+ # Current Truth
36
+
37
+ - 当前已成立的用户可见行为
38
+ - 当前已成立的系统承诺
39
+ - 当前异常与失败边界
40
+
41
+ # Completion
42
+
43
+ Delivered:
44
+ - 已完成部分
45
+
46
+ Missing:
47
+ - 尚未完成但预期要做的部分
48
+
49
+ Intentional Gaps:
50
+ - 有意不做、暂时不做的部分
51
+
52
+ # Roadmap Links
53
+
54
+ - RM-001: 未来推进什么
55
+
56
+ # Change Ledger
57
+
58
+ - REQ-001-example: 这次 change 对 capability 做了什么
59
+
60
+ # Evidence
61
+
62
+ - Code:
63
+ - Tests:
64
+ - Docs:
@@ -0,0 +1,28 @@
1
+ {
2
+ "changeId": "REQ-001",
3
+ "requirementId": "REQ-001",
4
+ "outputPolicy": {
5
+ "documentLanguage": ""
6
+ },
7
+ "sourceRoadmap": {
8
+ "itemId": "RM-001",
9
+ "roadmapVersion": "roadmap.v1",
10
+ "roadmapSkillVersion": "4.1.0"
11
+ },
12
+ "spec": {
13
+ "primaryCapability": "cap-example",
14
+ "secondaryCapabilities": [],
15
+ "changeType": "update",
16
+ "specFiles": [
17
+ "devflow/specs/capabilities/cap-example.md"
18
+ ],
19
+ "expectedDelta": [
20
+ "Describe the new truth the change should add or tighten"
21
+ ],
22
+ "affectedInvariants": [],
23
+ "gapsClosed": [],
24
+ "newGaps": [],
25
+ "syncStatus": "planned",
26
+ "notes": []
27
+ }
28
+ }
@@ -0,0 +1,35 @@
1
+ # Capability Index
2
+
3
+ ## Index Meta
4
+
5
+ - Spec system version: `spec.v1`
6
+ - Output language:
7
+ - Last updated:
8
+ - Maintainer:
9
+ - Notes:
10
+
11
+ ## Capability Map
12
+
13
+ | Capability ID | Title | Type | Status | Primary Owner | Roadmap Links | Open Gaps | Last Verified |
14
+ |---------------|-------|------|--------|---------------|---------------|-----------|---------------|
15
+ | cap-example | Example Capability | user-visible | partial | team | RM-001 | 2 | 2026-04-19 |
16
+
17
+ ## Active Change Links
18
+
19
+ | Change | Primary Capability | Secondary Capabilities | Expected Delta | Sync Status |
20
+ |--------|--------------------|------------------------|----------------|-------------|
21
+ | REQ-001-example | cap-example | - | Add copy action | planned |
22
+
23
+ ## Status Legend
24
+
25
+ - `proposed`: capability exists as a planned truth source but current truth is not yet verified
26
+ - `partial`: some truth is delivered, gaps remain
27
+ - `stable`: current truth is verified and considered reliable
28
+ - `deprecated`: do not build net-new work here; follow `Superseded By`
29
+
30
+ ## Index Review
31
+
32
+ - Missing capability files:
33
+ - Dangling roadmap links:
34
+ - Dangling change links:
35
+ - Next cleanup:
@@ -0,0 +1,22 @@
1
+ # Spec Contract
2
+
3
+ ## Truth Layers
4
+
5
+ - `devflow/ROADMAP.md` / `devflow/BACKLOG.md`: 未来推进什么 capability
6
+ - `devflow/specs/INDEX.md`: capability 总目录与当前状态快照
7
+ - `devflow/specs/capabilities/*.md`: 某个 capability 当前承诺什么
8
+ - `devflow/changes/<change>/change-meta.json`: 某次 change 如何影响 capability
9
+
10
+ ## Capability Rules
11
+
12
+ 1. 以用户可感知能力为主,内部系统能力为辅。
13
+ 2. `Boundary`、`Invariants`、`Current Truth` 是核心,不要被 narrative 淹没。
14
+ 3. `Missing` 与 `Intentional Gaps` 必须长期保留。
15
+ 4. capability 名称要稳定、可重用,不要按一次需求命名。
16
+
17
+ ## Change Meta Rules
18
+
19
+ 1. `primaryCapability` 必填。
20
+ 2. `secondaryCapabilities` 可空,但必须有明确原因。
21
+ 3. `changeType` 只使用:`create`、`update`、`split`、`merge`、`deprecate`。
22
+ 4. `syncStatus` 生命周期:`planned -> verified -> synced`。
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 初始化 capability-centered spec 目录骨架
7
+ # ------------------------------------------------------------
8
+
9
+ ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
10
+ BASE="$ROOT/devflow/specs"
11
+ CAP_DIR="$BASE/capabilities"
12
+ SKILL_DIR="$ROOT/.claude/skills/cc-spec-init"
13
+
14
+ mkdir -p "$CAP_DIR"
15
+
16
+ copy_if_missing() {
17
+ local src="$1"
18
+ local dest="$2"
19
+
20
+ if [[ ! -f "$dest" ]]; then
21
+ cp "$src" "$dest"
22
+ echo "Created ${dest#$ROOT/}"
23
+ else
24
+ echo "Kept ${dest#$ROOT/}"
25
+ fi
26
+ }
27
+
28
+ copy_if_missing "$SKILL_DIR/assets/INDEX_TEMPLATE.md" "$BASE/INDEX.md"
29
+ copy_if_missing "$SKILL_DIR/assets/CAPABILITY_TEMPLATE.md" "$CAP_DIR/cap-example.md"
30
+
31
+ echo "Spec bootstrap complete"
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 校验 spec / roadmap / change 链路是否断裂
7
+ # ------------------------------------------------------------
8
+
9
+ ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
10
+ INDEX_FILE="$ROOT/devflow/specs/INDEX.md"
11
+ CAP_DIR="$ROOT/devflow/specs/capabilities"
12
+ FAILED=0
13
+
14
+ if [[ ! -f "$INDEX_FILE" ]]; then
15
+ echo "Missing devflow/specs/INDEX.md" >&2
16
+ exit 1
17
+ fi
18
+
19
+ if [[ ! -d "$CAP_DIR" ]]; then
20
+ echo "Missing devflow/specs/capabilities/" >&2
21
+ exit 1
22
+ fi
23
+
24
+ while IFS= read -r capability; do
25
+ [[ -z "$capability" ]] && continue
26
+ if [[ ! -f "$CAP_DIR/$capability.md" ]]; then
27
+ echo "Dangling capability in INDEX.md: $capability" >&2
28
+ FAILED=1
29
+ fi
30
+ done < <(awk -F'|' '/^\|/ {id=$2; gsub(/^[[:space:]]+|[[:space:]]+$/, "", id); if (id != "" && id != "Capability ID" && id !~ /^-+$/) print id}' "$INDEX_FILE")
31
+
32
+ while IFS= read -r meta; do
33
+ primary="$(jq -r '.spec.primaryCapability // empty' "$meta" 2>/dev/null || true)"
34
+ [[ -z "$primary" ]] && continue
35
+ if [[ ! -f "$CAP_DIR/$primary.md" ]]; then
36
+ echo "Dangling primary capability in ${meta#$ROOT/}: $primary" >&2
37
+ FAILED=1
38
+ fi
39
+ done < <(find "$ROOT/devflow/changes" -maxdepth 2 -name change-meta.json -type f 2>/dev/null | sort)
40
+
41
+ if [[ "$FAILED" -ne 0 ]]; then
42
+ exit 1
43
+ fi
44
+
45
+ echo "Spec links are valid"