cc-devflow 4.3.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 (575) 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 +61 -4
  86. package/README.md +120 -756
  87. package/README.zh-CN.md +119 -756
  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 +60 -225
  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/skill-runtime/operations/release.js +96 -0
  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 -24
  235. package/.claude/commands/flow/archive.md +0 -280
  236. package/.claude/commands/flow/constitution.md +0 -82
  237. package/.claude/commands/flow/context.md +0 -150
  238. package/.claude/commands/flow/delta.md +0 -245
  239. package/.claude/commands/flow/dev.md +0 -40
  240. package/.claude/commands/flow/fix.md +0 -217
  241. package/.claude/commands/flow/ideate.md +0 -214
  242. package/.claude/commands/flow/init.md +0 -38
  243. package/.claude/commands/flow/release.md +0 -36
  244. package/.claude/commands/flow/restart.md +0 -97
  245. package/.claude/commands/flow/spec.md +0 -36
  246. package/.claude/commands/flow/status.md +0 -64
  247. package/.claude/commands/flow/update.md +0 -111
  248. package/.claude/commands/flow/upgrade.md +0 -115
  249. package/.claude/commands/flow/verify.md +0 -37
  250. package/.claude/commands/flow/workspace.md +0 -155
  251. package/.claude/commands/util/cancel-ralph.md +0 -60
  252. package/.claude/commands/util/code-review.md +0 -58
  253. package/.claude/commands/util/git-commit.md +0 -422
  254. package/.claude/commands/util/problem-analyzer.md +0 -60
  255. package/.claude/config/quality-gates.yml +0 -305
  256. package/.claude/config/quality-rules.yml +0 -161
  257. package/.claude/docs/SPEC_KIT_CONSTITUTION_ANALYSIS.md +0 -426
  258. package/.claude/docs/design/consistency-conflict-detection-algorithms.md +0 -658
  259. package/.claude/docs/design/intent-driven-input-design.md +0 -380
  260. package/.claude/docs/design/prd-version-management-design.md +0 -437
  261. package/.claude/docs/examples/design-inspiration-pool.md +0 -59
  262. package/.claude/docs/examples/ui-prototype-constitution-checklist.md +0 -75
  263. package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +0 -117
  264. package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +0 -99
  265. package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +0 -188
  266. package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +0 -338
  267. package/.claude/docs/guides/TEAM_MODE_GUIDE.md +0 -312
  268. package/.claude/docs/implementation-summary-v7.md +0 -449
  269. package/.claude/docs/spec-format-guide.md +0 -349
  270. package/.claude/docs/state-consolidation-design.md +0 -323
  271. package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +0 -332
  272. package/.claude/docs/templates/ATTEMPT_TEMPLATE.md +0 -156
  273. package/.claude/docs/templates/BACKLOG_TEMPLATE.md +0 -261
  274. package/.claude/docs/templates/BRAINSTORM_TEMPLATE.md +0 -148
  275. package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +0 -52
  276. package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +0 -206
  277. package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +0 -71
  278. package/.claude/docs/templates/DELTA_SPEC_TEMPLATE.md +0 -91
  279. package/.claude/docs/templates/DESIGN_DECISIONS_TEMPLATE.md +0 -151
  280. package/.claude/docs/templates/DESIGN_TEMPLATE.md +0 -157
  281. package/.claude/docs/templates/ERROR_LOG_TEMPLATE.md +0 -80
  282. package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +0 -198
  283. package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +0 -57
  284. package/.claude/docs/templates/JOURNAL_TEMPLATE.md +0 -75
  285. package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +0 -76
  286. package/.claude/docs/templates/PROPOSAL_TEMPLATE.md +0 -91
  287. package/.claude/docs/templates/RESEARCH_TEMPLATE.md +0 -276
  288. package/.claude/docs/templates/REVIEW-HIGH.md +0 -57
  289. package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +0 -198
  290. package/.claude/docs/templates/ROADMAP_TEMPLATE.md +0 -310
  291. package/.claude/docs/templates/SPEC_TEMPLATE_DELTA.md +0 -139
  292. package/.claude/docs/templates/SPEC_TEMPLATE_PROJECT.md +0 -93
  293. package/.claude/docs/templates/STYLE_TEMPLATE.md +0 -479
  294. package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +0 -373
  295. package/.claude/docs/templates/_shared/CLAUDE.md +0 -36
  296. package/.claude/docs/templates/_shared/CONSTITUTION_CHECK.md +0 -125
  297. package/.claude/docs/templates/_shared/VALIDATION_CHECKLIST.md +0 -187
  298. package/.claude/docs/templates/_shared/YAML_FRONTMATTER.md +0 -164
  299. package/.claude/docs/templates/context/dev.jsonl.template +0 -6
  300. package/.claude/docs/templates/context/epic.jsonl.template +0 -5
  301. package/.claude/docs/templates/context/prd.jsonl.template +0 -4
  302. package/.claude/docs/templates/context/research.jsonl.template +0 -4
  303. package/.claude/docs/templates/context/review.jsonl.template +0 -5
  304. package/.claude/docs/templates/context/tech.jsonl.template +0 -5
  305. package/.claude/guides/agent-guides/agent-coordination-guide.md +0 -459
  306. package/.claude/guides/project-guidelines-system.md +0 -463
  307. package/.claude/guides/technical-guides/datetime-handling-guide.md +0 -563
  308. package/.claude/guides/technical-guides/git-github-guide.md +0 -642
  309. package/.claude/guides/technical-guides/test-execution-guide.md +0 -618
  310. package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +0 -217
  311. package/.claude/guides/workflow-guides/flow-orchestrator.md +0 -48
  312. package/.claude/hooks/CLAUDE.md +0 -342
  313. package/.claude/hooks/checklist-gate.js +0 -397
  314. package/.claude/hooks/error-handling-reminder.sh +0 -12
  315. package/.claude/hooks/error-handling-reminder.ts +0 -459
  316. package/.claude/hooks/hooks.json +0 -15
  317. package/.claude/hooks/inject-agent-context.ts +0 -480
  318. package/.claude/hooks/inject-skill-context.ts +0 -359
  319. package/.claude/hooks/post-tool-use-tracker.sh +0 -280
  320. package/.claude/hooks/pre-tool-use-guardrail.sh +0 -36
  321. package/.claude/hooks/pre-tool-use-guardrail.ts +0 -342
  322. package/.claude/hooks/ralph-loop.ts +0 -931
  323. package/.claude/hooks/ralph-stop-hook.sh +0 -190
  324. package/.claude/hooks/skill-activation-prompt.sh +0 -36
  325. package/.claude/hooks/skill-activation-prompt.ts +0 -214
  326. package/.claude/hooks/state/skills-used-test-guard.json +0 -3
  327. package/.claude/hooks/task-completed-hook.ts +0 -593
  328. package/.claude/hooks/teammate-idle-hook.ts +0 -690
  329. package/.claude/hooks/types/team-types.d.ts +0 -238
  330. package/.claude/rules/devflow-conventions.md +0 -286
  331. package/.claude/rules/project-constitution.md +0 -1002
  332. package/.claude/rules/rationalization-library.md +0 -282
  333. package/.claude/schemas/constitution.schema.json +0 -43
  334. package/.claude/scripts/.claude/commands/flow/export-openspec.md +0 -221
  335. package/.claude/scripts/.claude/commands/flow/import-openspec.md +0 -171
  336. package/.claude/scripts/CLAUDE.md +0 -76
  337. package/.claude/scripts/__tests__/openspec.test.js +0 -212
  338. package/.claude/scripts/analyze-upgrade-impact.sh +0 -200
  339. package/.claude/scripts/archive-requirement.sh +0 -394
  340. package/.claude/scripts/calculate-checklist-completion.sh +0 -243
  341. package/.claude/scripts/calculate-quarter.sh +0 -206
  342. package/.claude/scripts/check-dependencies.sh +0 -409
  343. package/.claude/scripts/check-prerequisites.sh +0 -232
  344. package/.claude/scripts/check-task-status.sh +0 -288
  345. package/.claude/scripts/checklist-errors.sh +0 -131
  346. package/.claude/scripts/common.sh +0 -1102
  347. package/.claude/scripts/consolidate-research.sh +0 -182
  348. package/.claude/scripts/create-requirement.sh +0 -451
  349. package/.claude/scripts/delta-parser.ts +0 -637
  350. package/.claude/scripts/detect-file-conflicts.sh +0 -151
  351. package/.claude/scripts/export-contracts.sh +0 -117
  352. package/.claude/scripts/export-openspec.js +0 -222
  353. package/.claude/scripts/extract-data-model.sh +0 -78
  354. package/.claude/scripts/flow-context-add.sh +0 -134
  355. package/.claude/scripts/flow-context-init.sh +0 -133
  356. package/.claude/scripts/flow-context-validate.sh +0 -144
  357. package/.claude/scripts/flow-delta-apply.sh +0 -297
  358. package/.claude/scripts/flow-delta-archive.sh +0 -71
  359. package/.claude/scripts/flow-delta-create.sh +0 -202
  360. package/.claude/scripts/flow-delta-list.sh +0 -142
  361. package/.claude/scripts/flow-delta-status.sh +0 -235
  362. package/.claude/scripts/flow-quality-full.sh +0 -215
  363. package/.claude/scripts/flow-quality-quick.sh +0 -119
  364. package/.claude/scripts/flow-workspace-init.sh +0 -117
  365. package/.claude/scripts/flow-workspace-record.sh +0 -164
  366. package/.claude/scripts/generate-clarification-questions.sh +0 -377
  367. package/.claude/scripts/generate-clarification-report.sh +0 -463
  368. package/.claude/scripts/generate-quickstart.sh +0 -146
  369. package/.claude/scripts/generate-research-tasks.sh +0 -157
  370. package/.claude/scripts/generate-status-report.sh +0 -523
  371. package/.claude/scripts/generate-tech-analysis.sh +0 -46
  372. package/.claude/scripts/get-workflow-status.sh +0 -415
  373. package/.claude/scripts/import-openspec.js +0 -272
  374. package/.claude/scripts/locate-requirement-in-roadmap.sh +0 -233
  375. package/.claude/scripts/manage-constitution.sh +0 -602
  376. package/.claude/scripts/mark-task-complete.sh +0 -198
  377. package/.claude/scripts/parse-task-dependencies.js +0 -334
  378. package/.claude/scripts/populate-research-tasks.sh +0 -284
  379. package/.claude/scripts/record-quality-error.sh +0 -165
  380. package/.claude/scripts/recover-workflow.sh +0 -463
  381. package/.claude/scripts/run-clarify-scan.sh +0 -601
  382. package/.claude/scripts/run-high-review.sh +0 -62
  383. package/.claude/scripts/run-problem-analysis.sh +0 -68
  384. package/.claude/scripts/run-quality-gates.sh +0 -242
  385. package/.claude/scripts/setup-epic.sh +0 -173
  386. package/.claude/scripts/setup-ralph-loop.sh +0 -155
  387. package/.claude/scripts/sync-roadmap-progress.sh +0 -300
  388. package/.claude/scripts/sync-task-marks.sh +0 -199
  389. package/.claude/scripts/team-dev-init.sh +0 -319
  390. package/.claude/scripts/team-state-recovery.sh +0 -229
  391. package/.claude/scripts/test-clarify-scan.sh +0 -515
  392. package/.claude/scripts/update-agent-context.sh +0 -806
  393. package/.claude/scripts/validate-constitution.sh +0 -567
  394. package/.claude/scripts/validate-hooks.sh +0 -487
  395. package/.claude/scripts/validate-research.sh +0 -332
  396. package/.claude/scripts/validate-scope-boundary.sh +0 -493
  397. package/.claude/scripts/validate-scope.sh +0 -200
  398. package/.claude/scripts/verify-gate.sh +0 -269
  399. package/.claude/scripts/verify-setup.sh +0 -37
  400. package/.claude/scripts/workflow-status.ts +0 -433
  401. package/.claude/settings.json +0 -95
  402. package/.claude/skills/_reference-implementations/README.md +0 -96
  403. package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +0 -302
  404. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +0 -451
  405. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +0 -307
  406. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +0 -638
  407. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +0 -275
  408. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +0 -224
  409. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +0 -213
  410. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +0 -756
  411. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +0 -336
  412. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +0 -789
  413. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +0 -235
  414. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +0 -754
  415. package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +0 -399
  416. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +0 -331
  417. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +0 -872
  418. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +0 -502
  419. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +0 -767
  420. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +0 -502
  421. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +0 -501
  422. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +0 -406
  423. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +0 -364
  424. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +0 -428
  425. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +0 -418
  426. package/.claude/skills/attention-refresh/SKILL.md +0 -170
  427. package/.claude/skills/brainstorming/SKILL.md +0 -161
  428. package/.claude/skills/cc-devflow-orchestrator/SKILL.md +0 -169
  429. package/.claude/skills/constitution-guardian/SKILL.md +0 -306
  430. package/.claude/skills/constitution-quick-ref/SKILL.md +0 -374
  431. package/.claude/skills/debugging/SKILL.md +0 -221
  432. package/.claude/skills/file-standards/SKILL.md +0 -353
  433. package/.claude/skills/finishing-branch/SKILL.md +0 -189
  434. package/.claude/skills/flow-dev/CLAUDE.md +0 -16
  435. package/.claude/skills/flow-dev/SKILL.md +0 -94
  436. package/.claude/skills/flow-dev/assets/IMPLEMENTATION_PLAN_TEMPLATE.md +0 -71
  437. package/.claude/skills/flow-dev/context.jsonl +0 -4
  438. package/.claude/skills/flow-dev/dev-implementer.jsonl +0 -8
  439. package/.claude/skills/flow-dev/scripts/entry-gate.sh +0 -116
  440. package/.claude/skills/flow-dev/scripts/exit-gate.sh +0 -101
  441. package/.claude/skills/flow-dev/scripts/task-orchestrator.sh +0 -106
  442. package/.claude/skills/flow-fix/SKILL.md +0 -105
  443. package/.claude/skills/flow-fix/context.jsonl +0 -6
  444. package/.claude/skills/flow-fix/references/bug-analyzer.md +0 -381
  445. package/.claude/skills/flow-init/SKILL.md +0 -105
  446. package/.claude/skills/flow-init/assets/BRAINSTORM_TEMPLATE.md +0 -148
  447. package/.claude/skills/flow-init/assets/INIT_FLOW_TEMPLATE.md +0 -198
  448. package/.claude/skills/flow-init/assets/RESEARCH_TEMPLATE.md +0 -276
  449. package/.claude/skills/flow-init/context.jsonl +0 -5
  450. package/.claude/skills/flow-init/references/flow-researcher.md +0 -132
  451. package/.claude/skills/flow-init/scripts/check-prerequisites.sh +0 -240
  452. package/.claude/skills/flow-init/scripts/consolidate-research.sh +0 -182
  453. package/.claude/skills/flow-init/scripts/create-requirement.sh +0 -404
  454. package/.claude/skills/flow-init/scripts/generate-research-tasks.sh +0 -157
  455. package/.claude/skills/flow-init/scripts/populate-research-tasks.sh +0 -284
  456. package/.claude/skills/flow-init/scripts/validate-research.sh +0 -340
  457. package/.claude/skills/flow-quality/SKILL.md +0 -98
  458. package/.claude/skills/flow-quality/context.jsonl +0 -6
  459. package/.claude/skills/flow-quality/references/code-quality-reviewer.md +0 -205
  460. package/.claude/skills/flow-quality/references/qa-tester.md +0 -313
  461. package/.claude/skills/flow-quality/references/security-reviewer.md +0 -314
  462. package/.claude/skills/flow-quality/references/spec-reviewer.md +0 -221
  463. package/.claude/skills/flow-release/SKILL.md +0 -60
  464. package/.claude/skills/flow-release/context.jsonl +0 -5
  465. package/.claude/skills/flow-release/references/release-manager.md +0 -295
  466. package/.claude/skills/flow-spec/CLAUDE.md +0 -17
  467. package/.claude/skills/flow-spec/SKILL.md +0 -102
  468. package/.claude/skills/flow-spec/context.jsonl +0 -5
  469. package/.claude/skills/flow-spec/scripts/entry-gate.sh +0 -194
  470. package/.claude/skills/flow-spec/scripts/exit-gate.sh +0 -244
  471. package/.claude/skills/flow-spec/scripts/parallel-orchestrator.sh +0 -205
  472. package/.claude/skills/flow-spec/scripts/team-communication.sh +0 -353
  473. package/.claude/skills/flow-spec/scripts/team-init.sh +0 -195
  474. package/.claude/skills/flow-spec/scripts/test-team-mode.sh +0 -496
  475. package/.claude/skills/flow-spec/team-config.json +0 -165
  476. package/.claude/skills/flow-verify/CLAUDE.md +0 -10
  477. package/.claude/skills/flow-verify/SKILL.md +0 -53
  478. package/.claude/skills/flow-verify/context.jsonl +0 -5
  479. package/.claude/skills/fractal-docs/SKILL.md +0 -45
  480. package/.claude/skills/journey-checker/SKILL.md +0 -199
  481. package/.claude/skills/journey-checker/pressure-scenarios.md +0 -164
  482. package/.claude/skills/receiving-review/SKILL.md +0 -153
  483. package/.claude/skills/skill-creator/LICENSE.txt +0 -202
  484. package/.claude/skills/skill-creator/SKILL.md +0 -356
  485. package/.claude/skills/skill-creator/references/output-patterns.md +0 -82
  486. package/.claude/skills/skill-creator/references/workflows.md +0 -28
  487. package/.claude/skills/skill-creator/scripts/init_skill.py +0 -303
  488. package/.claude/skills/skill-creator/scripts/package_skill.py +0 -110
  489. package/.claude/skills/skill-creator/scripts/quick_validate.py +0 -95
  490. package/.claude/skills/skill-rules.json +0 -359
  491. package/.claude/skills/tdd/SKILL.md +0 -218
  492. package/.claude/skills/tdd-enforcer/SKILL.md +0 -192
  493. package/.claude/skills/utility/npm-release/CLAUDE.md +0 -55
  494. package/.claude/skills/utility/npm-release/SKILL.md +0 -379
  495. package/.claude/skills/utility/npm-release/references/version-decision-guide.md +0 -134
  496. package/.claude/skills/utility/npm-release/scripts/atomic-version-bump.sh +0 -95
  497. package/.claude/skills/utility/npm-release/scripts/validate-version-sync.sh +0 -82
  498. package/.claude/skills/utility/npm-release/scripts/version-decision-tree.sh +0 -44
  499. package/.claude/skills/verification/SKILL.md +0 -158
  500. package/.claude/skills/workflow.yaml +0 -219
  501. package/.claude/tests/README.md +0 -300
  502. package/.claude/tests/TODO.md +0 -69
  503. package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
  504. package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
  505. package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
  506. package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
  507. package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
  508. package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
  509. package/.claude/tests/constitution/run_all_constitution_tests.sh +0 -111
  510. package/.claude/tests/constitution/test_agent_assignment.sh +0 -207
  511. package/.claude/tests/constitution/test_article_coverage.sh +0 -201
  512. package/.claude/tests/constitution/test_template_completeness.sh +0 -150
  513. package/.claude/tests/constitution/test_version_consistency.sh +0 -120
  514. package/.claude/tests/fixtures/spec_delta_full.md +0 -16
  515. package/.claude/tests/fixtures/tasks_progress_sample.md +0 -5
  516. package/.claude/tests/run-all-tests.sh +0 -229
  517. package/.claude/tests/scripts/run.sh +0 -30
  518. package/.claude/tests/scripts/test-framework.sh +0 -128
  519. package/.claude/tests/scripts/test_check_prerequisites.sh +0 -511
  520. package/.claude/tests/scripts/test_check_prerequisites.sh.bak +0 -504
  521. package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +0 -505
  522. package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +0 -506
  523. package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +0 -507
  524. package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +0 -508
  525. package/.claude/tests/scripts/test_check_task_status.sh +0 -499
  526. package/.claude/tests/scripts/test_common.sh +0 -244
  527. package/.claude/tests/scripts/test_generate_status_report.sh +0 -71
  528. package/.claude/tests/scripts/test_mark_task_complete.sh +0 -441
  529. package/.claude/tests/scripts/test_mark_task_complete.sh.backup +0 -410
  530. package/.claude/tests/scripts/test_recover_workflow.sh +0 -304
  531. package/.claude/tests/scripts/test_setup_epic.sh +0 -437
  532. package/.claude/tests/scripts/test_sync_task_marks.sh +0 -196
  533. package/.claude/tests/scripts/test_validate_constitution.sh +0 -74
  534. package/.claude/tests/scripts/test_validate_research.sh +0 -462
  535. package/.claude/tests/slugify.bats +0 -82
  536. package/.claude/tests/test-framework.sh +0 -732
  537. package/.claude/tests/test_analyze_upgrade_impact.py +0 -34
  538. package/.claude/tests/test_consolidate_research.py +0 -48
  539. package/.claude/tests/test_export_contracts.py +0 -43
  540. package/.claude/tests/test_extract_data_model.py +0 -33
  541. package/.claude/tests/test_generate_quickstart.py +0 -50
  542. package/.claude/tests/test_generate_research_tasks.py +0 -52
  543. package/.claude/tsc-cache/70d2fc6d-2936-429b-b529-429f1aae8c88/affected-repos.txt +0 -1
  544. package/.claude/tsc-cache/70d2fc6d-2936-429b-b529-429f1aae8c88/edited-files.log +0 -2
  545. package/bin/harness.js +0 -22
  546. package/docs/commands/core-roadmap.md +0 -106
  547. package/docs/commands/core-roadmap.zh-CN.md +0 -102
  548. package/docs/commands/core-style.md +0 -53
  549. package/docs/commands/core-style.zh-CN.md +0 -53
  550. package/docs/commands/flow-init.md +0 -140
  551. package/docs/commands/flow-init.zh-CN.md +0 -169
  552. package/docs/commands/flow-new.md +0 -39
  553. package/docs/commands/flow-new.zh-CN.md +0 -39
  554. package/lib/compiler/__tests__/compile-regression.test.js +0 -103
  555. package/lib/compiler/__tests__/multi-module-emitters.test.js +0 -534
  556. package/lib/compiler/__tests__/resource-copier.test.js +0 -26
  557. package/lib/compiler/__tests__/skill-discovery.test.js +0 -72
  558. package/lib/compiler/context-expander.js +0 -179
  559. package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +0 -109
  560. package/lib/compiler/rules-emitters/codex-rules-emitter.js +0 -116
  561. package/lib/compiler/skill-discovery.js +0 -68
  562. package/lib/harness/CLAUDE.md +0 -22
  563. package/lib/harness/__tests__/planner.tdd.test.js +0 -125
  564. package/lib/harness/cli.js +0 -208
  565. package/lib/harness/index.js +0 -18
  566. package/lib/harness/operations/dispatch.js +0 -298
  567. package/lib/harness/operations/init.js +0 -48
  568. package/lib/harness/operations/pack.js +0 -100
  569. package/lib/harness/operations/plan.js +0 -83
  570. package/lib/harness/operations/release.js +0 -170
  571. package/lib/harness/operations/resume.js +0 -44
  572. package/lib/harness/operations/verify.js +0 -177
  573. package/lib/harness/planner.js +0 -272
  574. package/lib/harness/query.js +0 -126
  575. package/lib/harness/schemas.js +0 -129
@@ -1,15 +1,11 @@
1
1
  /**
2
2
  * T011: Parser Tests
3
- * Tests for parsing .claude/commands/*.md files
4
- * Expected: All tests FAIL (parser not implemented)
3
+ * Tests for parsing optional prompt markdown files
5
4
  */
6
5
  const path = require('path');
7
6
  const fs = require('fs');
8
7
  const os = require('os');
9
8
 
10
- // ============================================================
11
- // Parser imports - will fail until lib/compiler/parser.js exists
12
- // ============================================================
13
9
  let parser;
14
10
  let errors;
15
11
  try {
@@ -49,20 +45,20 @@ describe('Parser Module', () => {
49
45
  describe('AC1: Parse YAML frontmatter', () => {
50
46
  it('should parse file with valid frontmatter and return IR', () => {
51
47
  const content = `---
52
- name: flow-prd
53
- description: Generate PRD document
48
+ name: cc-plan
49
+ description: Plan one requirement
54
50
  scripts:
55
51
  prereq: .claude/scripts/check-prerequisites.sh
56
52
  ---
57
- # Flow PRD Command
53
+ # CC-Plan Prompt
58
54
 
59
55
  Run {SCRIPT:prereq}
60
56
  `;
61
57
  const tmpFile = createTempFile(content);
62
58
  try {
63
- const ir = parser.parseCommand(tmpFile);
64
- expect(ir.frontmatter.name).toBe('flow-prd');
65
- expect(ir.frontmatter.description).toBe('Generate PRD document');
59
+ const ir = parser.parsePromptFile(tmpFile);
60
+ expect(ir.frontmatter.name).toBe('cc-plan');
61
+ expect(ir.frontmatter.description).toBe('Plan one requirement');
66
62
  expect(ir.frontmatter.scripts).toBeDefined();
67
63
  expect(ir.frontmatter.scripts.prereq).toBe('.claude/scripts/check-prerequisites.sh');
68
64
  } finally {
@@ -81,7 +77,7 @@ Body content here
81
77
  `;
82
78
  const tmpFile = createTempFile(content);
83
79
  try {
84
- const ir = parser.parseCommand(tmpFile);
80
+ const ir = parser.parsePromptFile(tmpFile);
85
81
  expect(ir.body).toContain('# Test Command');
86
82
  expect(ir.body).toContain('Body content here');
87
83
  expect(ir.body).not.toContain('---');
@@ -98,7 +94,7 @@ Body content here
98
94
  describe('AC2: Parse scripts alias-path mapping', () => {
99
95
  it('should parse multiple scripts aliases', () => {
100
96
  const content = `---
101
- name: flow-test
97
+ name: cc-check
102
98
  description: Test
103
99
  scripts:
104
100
  prereq: .claude/scripts/prereq.sh
@@ -109,7 +105,7 @@ Body
109
105
  `;
110
106
  const tmpFile = createTempFile(content);
111
107
  try {
112
- const ir = parser.parseCommand(tmpFile);
108
+ const ir = parser.parsePromptFile(tmpFile);
113
109
  expect(Object.keys(ir.frontmatter.scripts)).toHaveLength(3);
114
110
  expect(ir.frontmatter.scripts.prereq).toBe('.claude/scripts/prereq.sh');
115
111
  expect(ir.frontmatter.scripts.validate).toBe('.claude/scripts/validate.sh');
@@ -128,7 +124,7 @@ Body
128
124
  `;
129
125
  const tmpFile = createTempFile(content);
130
126
  try {
131
- const ir = parser.parseCommand(tmpFile);
127
+ const ir = parser.parsePromptFile(tmpFile);
132
128
  expect(ir.frontmatter.scripts).toBeUndefined();
133
129
  } finally {
134
130
  cleanup(tmpFile);
@@ -151,7 +147,7 @@ Run {SCRIPT:prereq}
151
147
  `;
152
148
  const tmpFile = createTempFile(content);
153
149
  try {
154
- const ir = parser.parseCommand(tmpFile);
150
+ const ir = parser.parsePromptFile(tmpFile);
155
151
  const scriptPlaceholders = ir.placeholders.filter(p => p.type === 'SCRIPT');
156
152
  expect(scriptPlaceholders).toHaveLength(1);
157
153
  expect(scriptPlaceholders[0].alias).toBe('prereq');
@@ -173,7 +169,7 @@ Run {SCRIPT:first} then {SCRIPT:second}
173
169
  `;
174
170
  const tmpFile = createTempFile(content);
175
171
  try {
176
- const ir = parser.parseCommand(tmpFile);
172
+ const ir = parser.parsePromptFile(tmpFile);
177
173
  const scriptPlaceholders = ir.placeholders.filter(p => p.type === 'SCRIPT');
178
174
  expect(scriptPlaceholders).toHaveLength(2);
179
175
  expect(scriptPlaceholders.map(p => p.alias).sort()).toEqual(['first', 'second']);
@@ -193,7 +189,7 @@ Execute {AGENT_SCRIPT}
193
189
  `;
194
190
  const tmpFile = createTempFile(content);
195
191
  try {
196
- const ir = parser.parseCommand(tmpFile);
192
+ const ir = parser.parsePromptFile(tmpFile);
197
193
  const agentPlaceholders = ir.placeholders.filter(p => p.type === 'AGENT_SCRIPT');
198
194
  expect(agentPlaceholders).toHaveLength(1);
199
195
  expect(agentPlaceholders[0].raw).toBe('{AGENT_SCRIPT}');
@@ -211,7 +207,7 @@ Input: $ARGUMENTS
211
207
  `;
212
208
  const tmpFile = createTempFile(content);
213
209
  try {
214
- const ir = parser.parseCommand(tmpFile);
210
+ const ir = parser.parsePromptFile(tmpFile);
215
211
  const argPlaceholders = ir.placeholders.filter(p => p.type === 'ARGUMENTS');
216
212
  expect(argPlaceholders).toHaveLength(1);
217
213
  expect(argPlaceholders[0].raw).toBe('$ARGUMENTS');
@@ -231,7 +227,7 @@ Start {SCRIPT:x} end
231
227
  `;
232
228
  const tmpFile = createTempFile(content);
233
229
  try {
234
- const ir = parser.parseCommand(tmpFile);
230
+ const ir = parser.parsePromptFile(tmpFile);
235
231
  const placeholder = ir.placeholders.find(p => p.type === 'SCRIPT');
236
232
  expect(placeholder.position).toBeDefined();
237
233
  expect(typeof placeholder.position.start).toBe('number');
@@ -254,7 +250,7 @@ Just markdown content
254
250
  `;
255
251
  const tmpFile = createTempFile(content);
256
252
  try {
257
- expect(() => parser.parseCommand(tmpFile)).toThrow(errors.MissingFrontmatterError);
253
+ expect(() => parser.parsePromptFile(tmpFile)).toThrow(errors.MissingFrontmatterError);
258
254
  } finally {
259
255
  cleanup(tmpFile);
260
256
  }
@@ -263,7 +259,7 @@ Just markdown content
263
259
  it('should throw MissingFrontmatterError for empty file', () => {
264
260
  const tmpFile = createTempFile('');
265
261
  try {
266
- expect(() => parser.parseCommand(tmpFile)).toThrow(errors.MissingFrontmatterError);
262
+ expect(() => parser.parsePromptFile(tmpFile)).toThrow(errors.MissingFrontmatterError);
267
263
  } finally {
268
264
  cleanup(tmpFile);
269
265
  }
@@ -277,7 +273,7 @@ Body
277
273
  `;
278
274
  const tmpFile = createTempFile(content);
279
275
  try {
280
- expect(() => parser.parseCommand(tmpFile)).toThrow(errors.InvalidFrontmatterError);
276
+ expect(() => parser.parsePromptFile(tmpFile)).toThrow(errors.InvalidFrontmatterError);
281
277
  } finally {
282
278
  cleanup(tmpFile);
283
279
  }
@@ -299,7 +295,7 @@ Run {SCRIPT:unknown}
299
295
  `;
300
296
  const tmpFile = createTempFile(content);
301
297
  try {
302
- expect(() => parser.parseCommand(tmpFile)).toThrow(errors.UnknownAliasError);
298
+ expect(() => parser.parsePromptFile(tmpFile)).toThrow(errors.UnknownAliasError);
303
299
  } finally {
304
300
  cleanup(tmpFile);
305
301
  }
@@ -314,7 +310,7 @@ Run {SCRIPT:prereq}
314
310
  `;
315
311
  const tmpFile = createTempFile(content);
316
312
  try {
317
- expect(() => parser.parseCommand(tmpFile)).toThrow(errors.UnknownAliasError);
313
+ expect(() => parser.parsePromptFile(tmpFile)).toThrow(errors.UnknownAliasError);
318
314
  } finally {
319
315
  cleanup(tmpFile);
320
316
  }
@@ -322,10 +318,10 @@ Run {SCRIPT:prereq}
322
318
  });
323
319
 
324
320
  // ----------------------------------------------------------
325
- // parseCommand() specific tests
321
+ // parsePromptFile() specific tests
326
322
  // ----------------------------------------------------------
327
- describe('parseCommand()', () => {
328
- it('should return valid CommandIR structure', () => {
323
+ describe('parsePromptFile()', () => {
324
+ it('should return valid PromptIR structure', () => {
329
325
  const content = `---
330
326
  name: valid
331
327
  description: Valid command
@@ -334,7 +330,7 @@ Content
334
330
  `;
335
331
  const tmpFile = createTempFile(content);
336
332
  try {
337
- const ir = parser.parseCommand(tmpFile);
333
+ const ir = parser.parsePromptFile(tmpFile);
338
334
  expect(ir).toHaveProperty('source');
339
335
  expect(ir).toHaveProperty('frontmatter');
340
336
  expect(ir).toHaveProperty('body');
@@ -356,7 +352,7 @@ Content
356
352
  `;
357
353
  const tmpFile = createTempFile(content);
358
354
  try {
359
- const ir = parser.parseCommand(tmpFile);
355
+ const ir = parser.parsePromptFile(tmpFile);
360
356
  expect(ir.source.hash).toMatch(/^[a-f0-9]{64}$/);
361
357
  } finally {
362
358
  cleanup(tmpFile);
@@ -372,7 +368,7 @@ Body
372
368
  `;
373
369
  const tmpFile = createTempFile(content);
374
370
  try {
375
- const ir = parser.parseCommand(tmpFile);
371
+ const ir = parser.parsePromptFile(tmpFile);
376
372
  expect(ir.source.filename).not.toContain('.md');
377
373
  } finally {
378
374
  cleanup(tmpFile);
@@ -381,10 +377,10 @@ Body
381
377
  });
382
378
 
383
379
  // ----------------------------------------------------------
384
- // parseAllCommands() tests
380
+ // parseAllPromptFiles() tests
385
381
  // ----------------------------------------------------------
386
- describe('parseAllCommands()', () => {
387
- it('should return array of CommandIR', async () => {
382
+ describe('parseAllPromptFiles()', () => {
383
+ it('should return array of PromptIR', async () => {
388
384
  // 使用临时目录测试,避免依赖真实代码库状态
389
385
  const tmpDir = path.join(os.tmpdir(), `test-array-${Date.now()}`);
390
386
  fs.mkdirSync(tmpDir, { recursive: true });
@@ -394,7 +390,7 @@ description: Test command
394
390
  ---
395
391
  Body`);
396
392
  try {
397
- const result = await parser.parseAllCommands(tmpDir);
393
+ const result = await parser.parseAllPromptFiles(tmpDir);
398
394
  expect(Array.isArray(result)).toBe(true);
399
395
  } finally {
400
396
  fs.rmSync(tmpDir, { recursive: true, force: true });
@@ -415,7 +411,7 @@ description: Command 2
415
411
  ---
416
412
  Body 2`);
417
413
  try {
418
- const result = await parser.parseAllCommands(tmpDir);
414
+ const result = await parser.parseAllPromptFiles(tmpDir);
419
415
  expect(result.length).toBe(2);
420
416
  result.forEach(ir => {
421
417
  expect(ir).toHaveProperty('source');
@@ -443,7 +439,7 @@ Body`);
443
439
  fs.writeFileSync(txtFile, 'not markdown');
444
440
 
445
441
  try {
446
- const result = await parser.parseAllCommands(tmpDir);
442
+ const result = await parser.parseAllPromptFiles(tmpDir);
447
443
  expect(result).toHaveLength(1);
448
444
  expect(result[0].source.filename).toBe('test');
449
445
  } finally {
@@ -452,72 +448,5 @@ Body`);
452
448
  fs.rmdirSync(tmpDir);
453
449
  }
454
450
  });
455
-
456
- it('should parse nested command files recursively', async () => {
457
- const tmpDir = path.join(os.tmpdir(), `test-nested-${Date.now()}`);
458
- const flowDir = path.join(tmpDir, 'flow');
459
- const utilDir = path.join(tmpDir, 'util');
460
- fs.mkdirSync(flowDir, { recursive: true });
461
- fs.mkdirSync(utilDir, { recursive: true });
462
-
463
- fs.writeFileSync(path.join(flowDir, 'new.md'), `---
464
- name: flow-new
465
- description: Flow new command
466
- ---
467
- Body`);
468
- fs.writeFileSync(path.join(utilDir, 'code-review.md'), `---
469
- name: code-review
470
- description: Code review command
471
- ---
472
- Body`);
473
-
474
- try {
475
- const result = await parser.parseAllCommands(tmpDir);
476
- expect(result).toHaveLength(2);
477
- } finally {
478
- fs.rmSync(tmpDir, { recursive: true, force: true });
479
- }
480
- });
481
-
482
- it('should ignore CLAUDE.md documentation files', async () => {
483
- const tmpDir = path.join(os.tmpdir(), `test-claude-doc-${Date.now()}`);
484
- const flowDir = path.join(tmpDir, 'flow');
485
- fs.mkdirSync(flowDir, { recursive: true });
486
-
487
- fs.writeFileSync(path.join(flowDir, 'CLAUDE.md'), '# flow docs only');
488
- fs.writeFileSync(path.join(flowDir, 'init.md'), `---
489
- name: flow-init
490
- description: Flow init command
491
- ---
492
- Body`);
493
-
494
- try {
495
- const result = await parser.parseAllCommands(tmpDir);
496
- expect(result).toHaveLength(1);
497
- expect(result[0].source.filename).toBe('flow/init');
498
- } finally {
499
- fs.rmSync(tmpDir, { recursive: true, force: true });
500
- }
501
- });
502
-
503
- it('should preserve relative subpath in source filename', async () => {
504
- const tmpDir = path.join(os.tmpdir(), `test-relpath-${Date.now()}`);
505
- const flowDir = path.join(tmpDir, 'flow');
506
- fs.mkdirSync(flowDir, { recursive: true });
507
-
508
- fs.writeFileSync(path.join(flowDir, 'spec.md'), `---
509
- name: flow-spec
510
- description: Flow spec command
511
- ---
512
- Body`);
513
-
514
- try {
515
- const result = await parser.parseAllCommands(tmpDir);
516
- expect(result).toHaveLength(1);
517
- expect(result[0].source.filename).toBe('flow/spec');
518
- } finally {
519
- fs.rmSync(tmpDir, { recursive: true, force: true });
520
- }
521
- });
522
451
  });
523
452
  });
@@ -1,13 +1,9 @@
1
1
  /**
2
2
  * T009: Zod Schemas Tests
3
- * Tests for CommandIR, Frontmatter, Manifest schemas
4
- * Expected: All tests FAIL (schemas not implemented)
3
+ * Tests for PromptIR, Frontmatter, and Manifest schemas
5
4
  */
6
5
  const { z } = require('zod');
7
6
 
8
- // ============================================================
9
- // Schema imports - will fail until lib/compiler/schemas.js exists
10
- // ============================================================
11
7
  let schemas;
12
8
  try {
13
9
  schemas = require('../schemas.js');
@@ -78,16 +74,16 @@ describe('Zod Schemas', () => {
78
74
  describe('FrontmatterSchema', () => {
79
75
  it('should validate minimal frontmatter (name + description)', () => {
80
76
  const valid = {
81
- name: 'flow-prd',
82
- description: 'Generate PRD document'
77
+ name: 'cc-plan',
78
+ description: 'Plan one requirement'
83
79
  };
84
80
  expect(() => schemas.FrontmatterSchema.parse(valid)).not.toThrow();
85
81
  });
86
82
 
87
83
  it('should validate frontmatter with scripts', () => {
88
84
  const valid = {
89
- name: 'flow-prd',
90
- description: 'Generate PRD document',
85
+ name: 'cc-plan',
86
+ description: 'Plan one requirement',
91
87
  scripts: {
92
88
  prereq: '.claude/scripts/check-prerequisites.sh',
93
89
  validate: '.claude/scripts/validate.sh'
@@ -98,8 +94,8 @@ describe('Zod Schemas', () => {
98
94
 
99
95
  it('should validate frontmatter with agent_scripts', () => {
100
96
  const valid = {
101
- name: 'flow-init',
102
- description: 'Initialize requirement',
97
+ name: 'cc-check',
98
+ description: 'Verify with evidence',
103
99
  agent_scripts: {
104
100
  sh: 'echo "shell script"',
105
101
  ps: 'Write-Host "powershell"'
@@ -117,7 +113,7 @@ describe('Zod Schemas', () => {
117
113
 
118
114
  it('should reject missing description', () => {
119
115
  const invalid = {
120
- name: 'flow-test'
116
+ name: 'cc-do'
121
117
  };
122
118
  expect(() => schemas.FrontmatterSchema.parse(invalid)).toThrow();
123
119
  });
@@ -132,7 +128,7 @@ describe('Zod Schemas', () => {
132
128
 
133
129
  it('should reject empty description', () => {
134
130
  const invalid = {
135
- name: 'flow-test',
131
+ name: 'cc-do',
136
132
  description: ''
137
133
  };
138
134
  expect(() => schemas.FrontmatterSchema.parse(invalid)).toThrow();
@@ -140,36 +136,36 @@ describe('Zod Schemas', () => {
140
136
  });
141
137
 
142
138
  // ----------------------------------------------------------
143
- // CommandIRSchema Tests
139
+ // PromptIRSchema Tests
144
140
  // ----------------------------------------------------------
145
- describe('CommandIRSchema', () => {
146
- it('should validate complete CommandIR', () => {
141
+ describe('PromptIRSchema', () => {
142
+ it('should validate complete PromptIR', () => {
147
143
  const valid = {
148
144
  source: {
149
- path: '/path/to/flow-prd.md',
150
- filename: 'flow-prd',
145
+ path: '/path/to/cc-plan.md',
146
+ filename: 'cc-plan',
151
147
  hash: 'sha256:abc123def456'
152
148
  },
153
149
  frontmatter: {
154
- name: 'flow-prd',
155
- description: 'Generate PRD'
150
+ name: 'cc-plan',
151
+ description: 'Plan one requirement'
156
152
  },
157
- body: '# Flow PRD\n\nContent here...',
153
+ body: '# CC-Plan\n\nContent here...',
158
154
  placeholders: []
159
155
  };
160
- expect(() => schemas.CommandIRSchema.parse(valid)).not.toThrow();
156
+ expect(() => schemas.PromptIRSchema.parse(valid)).not.toThrow();
161
157
  });
162
158
 
163
- it('should validate CommandIR with placeholders', () => {
159
+ it('should validate PromptIR with placeholders', () => {
164
160
  const valid = {
165
161
  source: {
166
- path: '/path/to/flow-prd.md',
167
- filename: 'flow-prd',
162
+ path: '/path/to/cc-plan.md',
163
+ filename: 'cc-plan',
168
164
  hash: 'sha256:abc123'
169
165
  },
170
166
  frontmatter: {
171
- name: 'flow-prd',
172
- description: 'Generate PRD',
167
+ name: 'cc-plan',
168
+ description: 'Plan one requirement',
173
169
  scripts: { prereq: '.claude/scripts/prereq.sh' }
174
170
  },
175
171
  body: 'Run {SCRIPT:prereq}',
@@ -180,7 +176,7 @@ describe('Zod Schemas', () => {
180
176
  position: { start: 4, end: 19 }
181
177
  }]
182
178
  };
183
- expect(() => schemas.CommandIRSchema.parse(valid)).not.toThrow();
179
+ expect(() => schemas.PromptIRSchema.parse(valid)).not.toThrow();
184
180
  });
185
181
 
186
182
  it('should reject missing source', () => {
@@ -189,7 +185,7 @@ describe('Zod Schemas', () => {
189
185
  body: 'test',
190
186
  placeholders: []
191
187
  };
192
- expect(() => schemas.CommandIRSchema.parse(invalid)).toThrow();
188
+ expect(() => schemas.PromptIRSchema.parse(invalid)).toThrow();
193
189
  });
194
190
 
195
191
  it('should reject missing body', () => {
@@ -198,7 +194,7 @@ describe('Zod Schemas', () => {
198
194
  frontmatter: { name: 'test', description: 'test' },
199
195
  placeholders: []
200
196
  };
201
- expect(() => schemas.CommandIRSchema.parse(invalid)).toThrow();
197
+ expect(() => schemas.PromptIRSchema.parse(invalid)).toThrow();
202
198
  });
203
199
  });
204
200
 
@@ -208,8 +204,8 @@ describe('Zod Schemas', () => {
208
204
  describe('ManifestEntrySchema', () => {
209
205
  it('should validate valid manifest entry', () => {
210
206
  const valid = {
211
- source: '.claude/commands/flow-prd.md',
212
- target: '.codex/prompts/flow-prd.md',
207
+ source: '.claude/commands/cc-plan.md',
208
+ target: '.codex/prompts/cc-plan.md',
213
209
  hash: 'sha256:abc123',
214
210
  timestamp: '2025-12-18T10:00:00Z',
215
211
  platform: 'codex'
@@ -263,8 +259,8 @@ describe('Zod Schemas', () => {
263
259
  version: '1.0.0',
264
260
  generatedAt: '2025-12-18T10:00:00Z',
265
261
  entries: [{
266
- source: '.claude/commands/flow-prd.md',
267
- target: '.codex/prompts/flow-prd.md',
262
+ source: '.claude/commands/cc-plan.md',
263
+ target: '.codex/prompts/cc-plan.md',
268
264
  hash: 'sha256:abc',
269
265
  timestamp: '2025-12-18T10:00:00Z',
270
266
  platform: 'codex'
@@ -45,6 +45,14 @@ describe('Skills Registry Generator', () => {
45
45
  expect(skill).toHaveProperty('type');
46
46
  expect(skill).toHaveProperty('skillPath');
47
47
  expect(skill).toHaveProperty('triggers');
48
+ expect(skill).toHaveProperty('reads');
49
+ expect(skill).toHaveProperty('writes');
50
+ expect(skill).toHaveProperty('effects');
51
+ expect(skill).toHaveProperty('entryGate');
52
+ expect(skill).toHaveProperty('exitCriteria');
53
+ expect(skill).toHaveProperty('reroutes');
54
+ expect(skill).toHaveProperty('recoveryModes');
55
+ expect(skill).toHaveProperty('toolBudget');
48
56
  }
49
57
  });
50
58
 
@@ -87,6 +95,22 @@ describe('Skills Registry Generator', () => {
87
95
 
88
96
  // skillPath: string (required)
89
97
  expect(typeof skill.skillPath).toBe('string');
98
+
99
+ // contract fields
100
+ expect(Array.isArray(skill.reads)).toBe(true);
101
+ expect(Array.isArray(skill.writes)).toBe(true);
102
+ for (const write of skill.writes) {
103
+ expect(typeof write.path).toBe('string');
104
+ expect(write.path.length).toBeGreaterThan(0);
105
+ expect(typeof write.durability).toBe('string');
106
+ expect(typeof write.required).toBe('boolean');
107
+ }
108
+ expect(Array.isArray(skill.effects)).toBe(true);
109
+ expect(Array.isArray(skill.entryGate)).toBe(true);
110
+ expect(Array.isArray(skill.exitCriteria)).toBe(true);
111
+ expect(Array.isArray(skill.reroutes)).toBe(true);
112
+ expect(Array.isArray(skill.recoveryModes)).toBe(true);
113
+ expect(typeof skill.toolBudget).toBe('object');
90
114
  }
91
115
  });
92
116
 
@@ -103,6 +127,96 @@ describe('Skills Registry Generator', () => {
103
127
  const uniqueNames = [...new Set(names)];
104
128
  expect(names.length).toBe(uniqueNames.length);
105
129
  });
130
+
131
+ test('should parse skills without frontmatter warnings', async () => {
132
+ const warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {});
133
+ const { generateSkillsRegistryV2 } = require('../skills-registry');
134
+
135
+ await generateSkillsRegistryV2('.claude/skills');
136
+
137
+ expect(warnSpy).not.toHaveBeenCalled();
138
+ warnSpy.mockRestore();
139
+ });
140
+
141
+ test('should resolve bundled reads relative to the skill directory', async () => {
142
+ const { generateSkillsRegistryV2 } = require('../skills-registry');
143
+
144
+ const result = await generateSkillsRegistryV2('.claude/skills');
145
+ const investigate = result.skills.find((skill) => skill.name === 'cc-investigate');
146
+
147
+ expect(investigate).toBeDefined();
148
+ expect(investigate.reads).toContain('.claude/skills/cc-investigate/references/investigation-contract.md');
149
+ expect(investigate.reads).not.toContain('references/investigation-contract.md');
150
+ });
151
+
152
+ test('should separate concrete writes from conceptual effects', async () => {
153
+ const { generateSkillsRegistryV2 } = require('../skills-registry');
154
+
155
+ const result = await generateSkillsRegistryV2('.claude/skills');
156
+ const execute = result.skills.find((skill) => skill.name === 'cc-do');
157
+
158
+ expect(execute).toBeDefined();
159
+ expect(execute.writes).toEqual(
160
+ expect.arrayContaining([
161
+ expect.objectContaining({
162
+ path: 'devflow/changes/<change-key>/execution/tasks/<task-id>/checkpoint.json',
163
+ durability: 'durable',
164
+ required: true
165
+ })
166
+ ])
167
+ );
168
+ expect(execute.writes).not.toEqual(
169
+ expect.arrayContaining([expect.objectContaining({ path: 'code changes' })])
170
+ );
171
+ expect(execute.effects).toContain('code changes');
172
+ expect(execute.effects).toContain('test changes');
173
+ });
174
+
175
+ test('should preserve conditional and exclusive write metadata', async () => {
176
+ const { generateSkillsRegistryV2 } = require('../skills-registry');
177
+
178
+ const result = await generateSkillsRegistryV2('.claude/skills');
179
+ const act = result.skills.find((skill) => skill.name === 'cc-act');
180
+
181
+ expect(act).toBeDefined();
182
+ expect(act.writes).toEqual(
183
+ expect.arrayContaining([
184
+ expect.objectContaining({
185
+ path: 'devflow/changes/<change-key>/handoff/pr-brief.md',
186
+ required: false,
187
+ exclusiveGroup: 'handoff'
188
+ }),
189
+ expect.objectContaining({
190
+ path: 'devflow/changes/<change-key>/handoff/release-note.md',
191
+ required: false,
192
+ exclusiveGroup: 'handoff'
193
+ })
194
+ ])
195
+ );
196
+ });
197
+
198
+ test('should publish roadmap outputs under devflow', async () => {
199
+ const { generateSkillsRegistryV2 } = require('../skills-registry');
200
+
201
+ const result = await generateSkillsRegistryV2('.claude/skills');
202
+ const roadmap = result.skills.find((skill) => skill.name === 'cc-roadmap');
203
+
204
+ expect(roadmap).toBeDefined();
205
+ expect(roadmap.writes).toEqual(
206
+ expect.arrayContaining([
207
+ expect.objectContaining({ path: 'devflow/ROADMAP.md' }),
208
+ expect.objectContaining({ path: 'devflow/BACKLOG.md' })
209
+ ])
210
+ );
211
+ expect(roadmap.writes).not.toEqual(
212
+ expect.arrayContaining([
213
+ expect.objectContaining({ path: 'ROADMAP.md' }),
214
+ expect.objectContaining({ path: 'BACKLOG.md' }),
215
+ expect.objectContaining({ path: 'devflow/roadmap/roadmap.md' }),
216
+ expect.objectContaining({ path: 'devflow/roadmap/backlog.md' })
217
+ ])
218
+ );
219
+ });
106
220
  });
107
221
 
108
222
  describe('writeSkillsRegistry()', () => {
@@ -1,12 +1,8 @@
1
1
  /**
2
2
  * T012: Transformer Tests
3
3
  * Tests for placeholder expansion and argument mapping
4
- * Expected: All tests FAIL (transformer not implemented)
5
4
  */
6
5
 
7
- // ============================================================
8
- // Transformer imports - will fail until lib/compiler/transformer.js exists
9
- // ============================================================
10
6
  let transformer;
11
7
  let errors;
12
8
  try {
@@ -17,15 +13,15 @@ try {
17
13
  errors = null;
18
14
  }
19
15
 
20
- // Sample CommandIR for testing
16
+ // Sample PromptIR for testing
21
17
  const createTestIR = (overrides = {}) => ({
22
18
  source: {
23
- path: '/test/flow-test.md',
24
- filename: 'flow-test',
19
+ path: '/test/cc-do.md',
20
+ filename: 'cc-do',
25
21
  hash: 'sha256:abc123'
26
22
  },
27
23
  frontmatter: {
28
- name: 'flow-test',
24
+ name: 'cc-do',
29
25
  description: 'Test command',
30
26
  scripts: {
31
27
  prereq: '.claude/scripts/check-prerequisites.sh',
@@ -193,7 +189,7 @@ describe('Transformer Module', () => {
193
189
  it('should preserve frontmatter in result', () => {
194
190
  const ir = createTestIR({ body: 'Test', placeholders: [] });
195
191
  const result = transformer.transformForPlatform(ir, 'codex');
196
- expect(result.frontmatter.name).toBe('flow-test');
192
+ expect(result.frontmatter.name).toBe('cc-do');
197
193
  expect(result.frontmatter.description).toBe('Test command');
198
194
  });
199
195