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,92 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 查询 manifest / TASKS 的任务状态
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage:
12
+ check-task-status.sh --manifest task-manifest.json [--task T001]
13
+ check-task-status.sh --tasks tasks.md [--task T001]
14
+ EOF
15
+ }
16
+
17
+ TASKS=""
18
+ MANIFEST=""
19
+ TASK_ID=""
20
+
21
+ while [[ $# -gt 0 ]]; do
22
+ case "$1" in
23
+ --manifest) MANIFEST="$2"; shift 2 ;;
24
+ --tasks) TASKS="$2"; shift 2 ;;
25
+ --task) TASK_ID="$(echo "$2" | tr '[:lower:]' '[:upper:]')"; shift 2 ;;
26
+ -h|--help) usage; exit 0 ;;
27
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
28
+ esac
29
+ done
30
+
31
+ if [[ -n "$MANIFEST" ]]; then
32
+ if [[ ! -f "$MANIFEST" ]]; then
33
+ usage
34
+ exit 1
35
+ fi
36
+
37
+ if [[ -n "$TASK_ID" ]]; then
38
+ output="$(jq -r --arg task "$TASK_ID" '
39
+ def normalized_status:
40
+ .status // (if (.completed // false) then "passed" else "pending" end);
41
+ def review_status($gate):
42
+ (.reviews[$gate].status // .reviews[$gate] // "pending");
43
+ [.tasks[] | select(.id == $task) | "id=\(.id) status=\(normalized_status) phase=\(.phase // 0) dependsOn=\((.dependsOn // []) | join(",")) parallel=\(.parallel // false) spec=\(review_status("spec")) code=\(review_status("code"))"] | .[0] // empty
44
+ ' "$MANIFEST")"
45
+
46
+ if [[ -z "$output" ]]; then
47
+ echo "$TASK_ID not_found"
48
+ exit 1
49
+ fi
50
+
51
+ echo "$output"
52
+ exit 0
53
+ fi
54
+
55
+ jq -r '
56
+ def normalized_status:
57
+ .status // (if (.completed // false) then "passed" else "pending" end);
58
+ {
59
+ currentTaskId: (.currentTaskId // "none"),
60
+ passed: ([.tasks[] | select((normalized_status == "passed") or (normalized_status == "completed") or (normalized_status == "done") or (normalized_status == "verified"))] | length),
61
+ running: ([.tasks[] | select(normalized_status == "running")] | length),
62
+ pending: ([.tasks[] | select(normalized_status == "pending")] | length),
63
+ blocked: ([.tasks[] | select((normalized_status == "blocked") or (normalized_status == "failed") or (normalized_status == "skipped"))] | length),
64
+ total: (.tasks | length)
65
+ }
66
+ | "current=\(.currentTaskId) passed=\(.passed) running=\(.running) pending=\(.pending) blocked=\(.blocked) total=\(.total)"
67
+ ' "$MANIFEST"
68
+ exit 0
69
+ fi
70
+
71
+ if [[ -z "$TASKS" || ! -f "$TASKS" ]]; then
72
+ usage
73
+ exit 1
74
+ fi
75
+
76
+ if [[ -n "$TASK_ID" ]]; then
77
+ if rg -n "^- \\[x\\].*$TASK_ID" "$TASKS" >/dev/null 2>&1; then
78
+ echo "$TASK_ID complete"
79
+ exit 0
80
+ fi
81
+ if rg -n "^- \\[ \\].*$TASK_ID" "$TASKS" >/dev/null 2>&1; then
82
+ echo "$TASK_ID pending"
83
+ exit 0
84
+ fi
85
+ echo "$TASK_ID not_found"
86
+ exit 1
87
+ fi
88
+
89
+ done_count="$(grep -c '^- \[x\]' "$TASKS" 2>/dev/null || echo 0)"
90
+ todo_count="$(grep -c '^- \[ \]' "$TASKS" 2>/dev/null || echo 0)"
91
+ total=$((done_count + todo_count))
92
+ echo "done=$done_count todo=$todo_count total=$total"
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 读取 JSON 任务列表,检查并行触点 / 依赖冲突
7
+ # ------------------------------------------------------------
8
+
9
+ input="$(cat)"
10
+
11
+ node - "$input" <<'NODE'
12
+ const raw = process.argv[2] || '';
13
+
14
+ function fail(message) {
15
+ process.stdout.write(JSON.stringify({ hasConflicts: false, error: message }) + '\n');
16
+ process.exit(1);
17
+ }
18
+
19
+ let parsed;
20
+ try {
21
+ parsed = JSON.parse(raw);
22
+ } catch (error) {
23
+ fail('invalid json');
24
+ }
25
+
26
+ const sourceTasks = Array.isArray(parsed)
27
+ ? parsed
28
+ : parsed.parallelCandidates || parsed.readyTasks || parsed.tasks || [];
29
+
30
+ const tasks = sourceTasks.filter((task) => task && task.parallel !== false);
31
+ const fileConflicts = [];
32
+ const dependencyConflicts = [];
33
+ const conflictedTaskIds = new Set();
34
+
35
+ function touchesOf(task) {
36
+ return [...new Set([...(task.touches || []), ...(task.files || [])].filter(Boolean))];
37
+ }
38
+
39
+ for (let index = 0; index < tasks.length; index += 1) {
40
+ for (let offset = index + 1; offset < tasks.length; offset += 1) {
41
+ const left = tasks[index];
42
+ const right = tasks[offset];
43
+ const leftTouches = new Set(touchesOf(left));
44
+ const sharedTouches = touchesOf(right).filter((touch) => leftTouches.has(touch));
45
+
46
+ if (sharedTouches.length > 0) {
47
+ conflictedTaskIds.add(left.id);
48
+ conflictedTaskIds.add(right.id);
49
+ fileConflicts.push({
50
+ tasks: [left.id, right.id],
51
+ sharedTouches
52
+ });
53
+ }
54
+
55
+ const leftDeps = new Set(left.dependsOn || []);
56
+ const rightDeps = new Set(right.dependsOn || []);
57
+
58
+ if (leftDeps.has(right.id) || rightDeps.has(left.id)) {
59
+ conflictedTaskIds.add(left.id);
60
+ conflictedTaskIds.add(right.id);
61
+ dependencyConflicts.push({
62
+ tasks: [left.id, right.id],
63
+ reason: leftDeps.has(right.id)
64
+ ? `${left.id} dependsOn ${right.id}`
65
+ : `${right.id} dependsOn ${left.id}`
66
+ });
67
+ }
68
+ }
69
+ }
70
+
71
+ const safeTaskIds = tasks
72
+ .map((task) => task.id)
73
+ .filter((taskId) => !conflictedTaskIds.has(taskId));
74
+
75
+ process.stdout.write(
76
+ JSON.stringify(
77
+ {
78
+ hasConflicts: fileConflicts.length > 0 || dependencyConflicts.length > 0,
79
+ fileConflicts,
80
+ dependencyConflicts,
81
+ safeTaskIds
82
+ },
83
+ null,
84
+ 2
85
+ ) + '\n'
86
+ );
87
+ NODE
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 把任务标记为完成,并同步 manifest / TASKS
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage:
12
+ mark-task-complete.sh --manifest task-manifest.json [--tasks tasks.md] --task T001
13
+ EOF
14
+ }
15
+
16
+ mark_first_task_complete() {
17
+ local tasks_path="$1"
18
+ local task_id="$2"
19
+
20
+ awk -v task="$task_id" '
21
+ function task_matches(rest, prefix, next_char) {
22
+ prefix = task
23
+ if (substr(rest, 1, length(prefix)) == prefix) {
24
+ next_char = substr(rest, length(prefix) + 1, 1)
25
+ return next_char == "" || next_char ~ /[^[:alnum:]_-]/
26
+ }
27
+
28
+ prefix = "**" task "**"
29
+ if (substr(rest, 1, length(prefix)) == prefix) {
30
+ next_char = substr(rest, length(prefix) + 1, 1)
31
+ return next_char == "" || next_char ~ /[^[:alnum:]_-]/
32
+ }
33
+
34
+ return 0
35
+ }
36
+
37
+ {
38
+ rest = $0
39
+ if (!replaced && sub(/^- \[ \] /, "", rest) && task_matches(rest)) {
40
+ sub(/^- \[ \] /, "- [x] ")
41
+ replaced = 1
42
+ }
43
+
44
+ print
45
+ }
46
+ ' "$tasks_path"
47
+ }
48
+
49
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
50
+ MANIFEST=""
51
+ TASKS=""
52
+ TASK_ID=""
53
+
54
+ while [[ $# -gt 0 ]]; do
55
+ case "$1" in
56
+ --manifest) MANIFEST="$2"; shift 2 ;;
57
+ --tasks) TASKS="$2"; shift 2 ;;
58
+ --task) TASK_ID="$(echo "$2" | tr '[:lower:]' '[:upper:]')"; shift 2 ;;
59
+ -h|--help) usage; exit 0 ;;
60
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
61
+ esac
62
+ done
63
+
64
+ if [[ -z "$TASK_ID" || (-z "$MANIFEST" && -z "$TASKS") ]]; then
65
+ usage
66
+ exit 1
67
+ fi
68
+
69
+ if [[ -n "$MANIFEST" ]]; then
70
+ if [[ ! -f "$MANIFEST" ]]; then
71
+ usage
72
+ exit 1
73
+ fi
74
+
75
+ req_dir="$(cd "$(dirname "$MANIFEST")" && pwd)"
76
+ "$SCRIPT_DIR/verify-task-gates.sh" --dir "$req_dir" --task "$TASK_ID" >/dev/null
77
+
78
+ tmp_manifest="$(mktemp)"
79
+ jq --arg task "$TASK_ID" '
80
+ .tasks |= map(
81
+ if .id == $task then
82
+ . + {
83
+ status: "passed",
84
+ reviews: ((.reviews // {}) + {spec: ((.reviews.spec // "pass") | tostring), code: ((.reviews.code // "pass") | tostring)})
85
+ }
86
+ else
87
+ .
88
+ end
89
+ )
90
+ ' "$MANIFEST" > "$tmp_manifest"
91
+ mv "$tmp_manifest" "$MANIFEST"
92
+
93
+ next_task="$("$SCRIPT_DIR/select-ready-tasks.sh" --manifest "$MANIFEST" | jq -r '.readyTasks[0].id // empty')"
94
+
95
+ tmp_manifest="$(mktemp)"
96
+ jq --arg next "$next_task" '
97
+ .currentTaskId = (if $next == "" then null else $next end)
98
+ | .status = (
99
+ if ([.tasks[] | select((.status // "pending") != "passed" and (.status // "pending") != "completed" and (.status // "pending") != "done" and (.status // "pending") != "verified")] | length) == 0
100
+ then "implemented"
101
+ else "in_progress"
102
+ end
103
+ )
104
+ ' "$MANIFEST" > "$tmp_manifest"
105
+ mv "$tmp_manifest" "$MANIFEST"
106
+ fi
107
+
108
+ if [[ -n "$TASKS" ]]; then
109
+ if [[ ! -f "$TASKS" ]]; then
110
+ usage
111
+ exit 1
112
+ fi
113
+
114
+ tmp_tasks="$(mktemp)"
115
+ mark_first_task_complete "$TASKS" "$TASK_ID" > "$tmp_tasks"
116
+ mv "$tmp_tasks" "$TASKS"
117
+ fi
118
+
119
+ echo "Marked $TASK_ID complete"
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 记录 spec / code review 结论,并同步 runtime / manifest
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage:
12
+ record-review-decision.sh --dir path/to/change --task T001 --gate spec|code --verdict pass|fail|blocked --summary "..."
13
+ EOF
14
+ }
15
+
16
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
17
+ source "$SCRIPT_DIR/cc-do-common.sh"
18
+ REQ_DIR=""
19
+ TASK_ID=""
20
+ GATE=""
21
+ VERDICT=""
22
+ SUMMARY=""
23
+
24
+ while [[ $# -gt 0 ]]; do
25
+ case "$1" in
26
+ --dir) REQ_DIR="$2"; shift 2 ;;
27
+ --task) TASK_ID="$(echo "$2" | tr '[:lower:]' '[:upper:]')"; shift 2 ;;
28
+ --gate) GATE="$2"; shift 2 ;;
29
+ --verdict) VERDICT="$2"; shift 2 ;;
30
+ --summary) SUMMARY="$2"; shift 2 ;;
31
+ -h|--help) usage; exit 0 ;;
32
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
33
+ esac
34
+ done
35
+
36
+ if [[ -z "$REQ_DIR" || -z "$TASK_ID" || -z "$GATE" || -z "$VERDICT" || -z "$SUMMARY" ]]; then
37
+ usage
38
+ exit 1
39
+ fi
40
+
41
+ if [[ "$GATE" != "spec" && "$GATE" != "code" ]]; then
42
+ echo "Gate must be spec or code" >&2
43
+ exit 1
44
+ fi
45
+
46
+ CHANGE_DIR="$(req_do_resolve_change_dir "$REQ_DIR")"
47
+ manifest="$(req_do_manifest_path "$CHANGE_DIR")"
48
+ change_id="$(jq -r '.changeId // .requirementId // "REQ-UNKNOWN"' "$manifest" 2>/dev/null || basename "$CHANGE_DIR")"
49
+ runtime_task_dir="$(req_do_task_runtime_dir "$CHANGE_DIR" "$TASK_ID")"
50
+ timestamp="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
51
+ event_name="${GATE}_review_${VERDICT}"
52
+
53
+ mkdir -p "$runtime_task_dir"
54
+
55
+ if [[ -f "$manifest" ]]; then
56
+ tmp_manifest="$(mktemp)"
57
+ jq --arg task "$TASK_ID" --arg gate "$GATE" --arg verdict "$VERDICT" '
58
+ .tasks |= map(
59
+ if .id == $task then
60
+ . + { reviews: ((.reviews // {}) + {($gate): $verdict}) }
61
+ else
62
+ .
63
+ end
64
+ )
65
+ ' "$manifest" > "$tmp_manifest"
66
+ mv "$tmp_manifest" "$manifest"
67
+ fi
68
+
69
+ if [[ -f "$runtime_task_dir/events.jsonl" || "$VERDICT" != "pass" ]]; then
70
+ jq -nc \
71
+ --arg type "$event_name" \
72
+ --arg changeId "$change_id" \
73
+ --arg taskId "$TASK_ID" \
74
+ --arg gate "$GATE" \
75
+ --arg verdict "$VERDICT" \
76
+ --arg summary "$SUMMARY" \
77
+ --arg timestamp "$timestamp" \
78
+ '{
79
+ type: $type,
80
+ changeId: $changeId,
81
+ taskId: $taskId,
82
+ gate: $gate,
83
+ verdict: $verdict,
84
+ summary: $summary,
85
+ timestamp: $timestamp
86
+ }' >> "$runtime_task_dir/events.jsonl"
87
+ fi
88
+
89
+ echo "Recorded $event_name for $TASK_ID"
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 从 requirement 目录恢复当前工作位置
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage: recover-workflow.sh --dir path/to/change
12
+ EOF
13
+ }
14
+
15
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
16
+ source "$SCRIPT_DIR/cc-do-common.sh"
17
+ REQ_DIR=""
18
+
19
+ while [[ $# -gt 0 ]]; do
20
+ case "$1" in
21
+ --dir) REQ_DIR="$2"; shift 2 ;;
22
+ -h|--help) usage; exit 0 ;;
23
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
24
+ esac
25
+ done
26
+
27
+ if [[ -z "$REQ_DIR" || ! -d "$REQ_DIR" ]]; then
28
+ usage
29
+ exit 1
30
+ fi
31
+
32
+ CHANGE_DIR="$(req_do_resolve_change_dir "$REQ_DIR")"
33
+ manifest="$(req_do_manifest_path "$CHANGE_DIR")"
34
+ tasks="$(req_do_tasks_path "$CHANGE_DIR")"
35
+ report="$(req_do_report_card_path "$CHANGE_DIR")"
36
+ change_id=""
37
+
38
+ echo "# Recovery Snapshot"
39
+ echo
40
+ echo "- Change dir: $CHANGE_DIR"
41
+
42
+ if [[ -f "$manifest" ]]; then
43
+ current="$(jq -r '.currentTaskId // "unknown"' "$manifest" 2>/dev/null || echo unknown)"
44
+ status="$(jq -r '.status // "unknown"' "$manifest" 2>/dev/null || echo unknown)"
45
+ change_id="$(jq -r '.changeId // .requirementId // "unknown"' "$manifest" 2>/dev/null || echo unknown)"
46
+ echo "- Manifest status: $status"
47
+ echo "- Change ID: $change_id"
48
+ echo "- Current task: $current"
49
+
50
+ ready_json="$("$SCRIPT_DIR/select-ready-tasks.sh" --manifest "$manifest" 2>/dev/null || echo '{}')"
51
+ ready_tasks="$(echo "$ready_json" | jq -r '[.readyTasks[]?.id] | if length == 0 then "none" else join(", ") end')"
52
+ active_phase="$(echo "$ready_json" | jq -r '.activePhase // "unknown"')"
53
+ echo "- Active phase: $active_phase"
54
+ echo "- Ready tasks: $ready_tasks"
55
+ fi
56
+
57
+ if [[ -f "$tasks" ]]; then
58
+ next_task="$(grep '^- \[ \]' "$tasks" | head -1 || true)"
59
+ done_count="$(grep -c '^- \[x\]' "$tasks" 2>/dev/null || echo 0)"
60
+ todo_count="$(grep -c '^- \[ \]' "$tasks" 2>/dev/null || echo 0)"
61
+ echo "- TASKS done: $done_count"
62
+ echo "- TASKS todo: $todo_count"
63
+ [[ -n "$next_task" ]] && echo "- Next visible task: $next_task"
64
+ fi
65
+
66
+ if [[ -f "$report" ]]; then
67
+ verdict="$(jq -r '.verdict // .overall // "unknown"' "$report" 2>/dev/null || echo unknown)"
68
+ echo "- Latest check verdict: $verdict"
69
+ fi
70
+
71
+ if [[ -n "$change_id" ]]; then
72
+ runtime_dir="$(req_do_execution_dir "$CHANGE_DIR")/tasks"
73
+ fi
74
+
75
+ if [[ -n "${runtime_dir:-}" && -d "$runtime_dir" ]]; then
76
+ echo "- Runtime dir: $runtime_dir"
77
+
78
+ while IFS= read -r checkpoint_path; do
79
+ task_id="$(jq -r '.taskId // "unknown"' "$checkpoint_path" 2>/dev/null || echo unknown)"
80
+ checkpoint_status="$(jq -r '.status // "unknown"' "$checkpoint_path" 2>/dev/null || echo unknown)"
81
+ checkpoint_summary="$(jq -r '.summary // ""' "$checkpoint_path" 2>/dev/null || echo "")"
82
+ echo "- Checkpoint $task_id: $checkpoint_status ${checkpoint_summary:+- $checkpoint_summary}"
83
+ done < <(find "$runtime_dir" -name checkpoint.json | sort)
84
+ fi
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 生成根因分析骨架
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage: run-problem-analysis.sh --dir path/to/change --input "symptom"
12
+ EOF
13
+ }
14
+
15
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
16
+ source "$SCRIPT_DIR/cc-do-common.sh"
17
+ REQ_DIR=""
18
+ INPUT=""
19
+
20
+ while [[ $# -gt 0 ]]; do
21
+ case "$1" in
22
+ --dir) REQ_DIR="$2"; shift 2 ;;
23
+ --input) INPUT="$2"; shift 2 ;;
24
+ -h|--help) usage; exit 0 ;;
25
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
26
+ esac
27
+ done
28
+
29
+ if [[ -z "$REQ_DIR" || -z "$INPUT" || ! -d "$REQ_DIR" ]]; then
30
+ usage
31
+ exit 1
32
+ fi
33
+
34
+ CHANGE_DIR="$(req_do_resolve_change_dir "$REQ_DIR")"
35
+ analysis_file="$(req_do_planning_dir "$CHANGE_DIR")/analysis.md"
36
+ mkdir -p "$(dirname "$analysis_file")"
37
+
38
+ cat > "$analysis_file" <<EOF
39
+ # analysis
40
+
41
+ ## Symptom
42
+
43
+ $INPUT
44
+
45
+ ## Failing Test To Add First
46
+
47
+ -
48
+
49
+ ## Reproduction
50
+
51
+ -
52
+
53
+ ## Evidence
54
+
55
+ -
56
+
57
+ ## Root Cause Hypothesis
58
+
59
+ -
60
+
61
+ ## Fix Direction
62
+
63
+ -
64
+
65
+ ## Guardrail Test After Fix
66
+
67
+ -
68
+ EOF
69
+
70
+ echo "Wrote $analysis_file"
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # ------------------------------------------------------------
6
+ # 根据 manifest 选出当前 ready tasks / 并行候选
7
+ # ------------------------------------------------------------
8
+
9
+ usage() {
10
+ cat <<'EOF'
11
+ Usage: select-ready-tasks.sh --manifest task-manifest.json [--task T001]
12
+ EOF
13
+ }
14
+
15
+ MANIFEST=""
16
+ TASK_ID=""
17
+
18
+ while [[ $# -gt 0 ]]; do
19
+ case "$1" in
20
+ --manifest) MANIFEST="$2"; shift 2 ;;
21
+ --task) TASK_ID="$(echo "$2" | tr '[:lower:]' '[:upper:]')"; shift 2 ;;
22
+ -h|--help) usage; exit 0 ;;
23
+ *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
24
+ esac
25
+ done
26
+
27
+ if [[ -z "$MANIFEST" || ! -f "$MANIFEST" ]]; then
28
+ usage
29
+ exit 1
30
+ fi
31
+
32
+ node - "$MANIFEST" "$TASK_ID" <<'NODE'
33
+ const fs = require('fs');
34
+
35
+ const manifestPath = process.argv[2];
36
+ const taskId = process.argv[3] || '';
37
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
38
+ const tasks = Array.isArray(manifest.tasks) ? manifest.tasks : [];
39
+ const doneStates = new Set(['passed', 'completed', 'done', 'verified']);
40
+ const blockedStates = new Set(['failed', 'skipped', 'blocked']);
41
+
42
+ function statusOf(task) {
43
+ if (task.status) return task.status;
44
+ return task.completed ? 'passed' : 'pending';
45
+ }
46
+
47
+ const taskMap = new Map(tasks.map((task) => [task.id, task]));
48
+ const unfinished = tasks.filter((task) => !doneStates.has(statusOf(task)));
49
+ const phases = unfinished.map((task) => Number.isFinite(task.phase) ? task.phase : 0);
50
+ const activePhase = phases.length > 0 ? Math.min(...phases) : null;
51
+
52
+ function unmetDependencies(task) {
53
+ return (task.dependsOn || []).filter((depId) => {
54
+ const depTask = taskMap.get(depId);
55
+ return !depTask || !doneStates.has(statusOf(depTask));
56
+ });
57
+ }
58
+
59
+ function summarize(task) {
60
+ return {
61
+ id: task.id,
62
+ title: task.title,
63
+ phase: task.phase || 0,
64
+ status: statusOf(task),
65
+ dependsOn: task.dependsOn || [],
66
+ parallel: Boolean(task.parallel),
67
+ touches: task.touches || task.files || [],
68
+ waitingOn: unmetDependencies(task)
69
+ };
70
+ }
71
+
72
+ const runningTasks = unfinished
73
+ .filter((task) => (activePhase === null || (task.phase || 0) === activePhase) && statusOf(task) === 'running')
74
+ .map(summarize);
75
+
76
+ const readyTasks = unfinished
77
+ .filter((task) => {
78
+ const taskPhase = task.phase || 0;
79
+ const status = statusOf(task);
80
+ return (
81
+ (activePhase === null || taskPhase === activePhase) &&
82
+ status === 'pending' &&
83
+ unmetDependencies(task).length === 0
84
+ );
85
+ })
86
+ .map(summarize);
87
+
88
+ const blockedTasks = unfinished
89
+ .filter((task) => {
90
+ const taskPhase = task.phase || 0;
91
+ const status = statusOf(task);
92
+ return (
93
+ (activePhase === null || taskPhase === activePhase) &&
94
+ (unmetDependencies(task).length > 0 || blockedStates.has(status))
95
+ );
96
+ })
97
+ .map(summarize);
98
+
99
+ const deferredTasks = unfinished
100
+ .filter((task) => activePhase !== null && (task.phase || 0) !== activePhase)
101
+ .map(summarize);
102
+
103
+ const payload = {
104
+ changeId: manifest.changeId || manifest.requirementId || 'unknown',
105
+ currentTaskId: manifest.currentTaskId || null,
106
+ activePhase,
107
+ runningTasks,
108
+ readyTasks,
109
+ parallelCandidates: readyTasks.filter((task) => task.parallel),
110
+ blockedTasks,
111
+ deferredTasks
112
+ };
113
+
114
+ if (taskId) {
115
+ const task = tasks.find((item) => item.id === taskId);
116
+ if (!task) {
117
+ process.stderr.write(`${taskId} not found\n`);
118
+ process.exit(1);
119
+ }
120
+
121
+ const summary = summarize(task);
122
+ process.stdout.write(JSON.stringify({
123
+ changeId: payload.changeId,
124
+ activePhase,
125
+ task: {
126
+ ...summary,
127
+ ready: readyTasks.some((item) => item.id === taskId),
128
+ running: runningTasks.some((item) => item.id === taskId)
129
+ }
130
+ }, null, 2) + '\n');
131
+ process.exit(0);
132
+ }
133
+
134
+ process.stdout.write(JSON.stringify(payload, null, 2) + '\n');
135
+ NODE