@xulthekl/team-flow 0.22.4

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 (405) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.agents/skills +1 -0
  3. package/.claude/always/phase-guard.md +3 -0
  4. package/.claude-plugin/marketplace.json +20 -0
  5. package/.claude-plugin/plugin.json +31 -0
  6. package/.codex-plugin/plugin.json +45 -0
  7. package/.codexignore +6 -0
  8. package/.cursor-plugin/marketplace.json +17 -0
  9. package/.cursor-plugin/plugin.json +31 -0
  10. package/.github/copilot-instructions.md +15 -0
  11. package/.github/dependabot.yml +10 -0
  12. package/.github/plugin/marketplace.json +42 -0
  13. package/.github/workflows/ci.yml +98 -0
  14. package/.github/workflows/hol-plugin-scanner.yml +17 -0
  15. package/.opencode/INSTALL.md +61 -0
  16. package/.opencode/plugins/team-flow.js +70 -0
  17. package/AGENTS.md +280 -0
  18. package/CHANGELOG.md +635 -0
  19. package/CONTRIBUTING.md +115 -0
  20. package/GEMINI.md +14 -0
  21. package/HANDOFF.md +219 -0
  22. package/INSTALL.md +810 -0
  23. package/LICENSE +21 -0
  24. package/README.md +185 -0
  25. package/SECURITY.md +37 -0
  26. package/agents/bug-investigator.md +180 -0
  27. package/agents/change-split-auditor.md +257 -0
  28. package/agents/code-reviewer.md +171 -0
  29. package/agents/cross-change-consistency-checker.md +215 -0
  30. package/agents/prd-completeness-reviewer.md +197 -0
  31. package/agents/prototype-builder.md +230 -0
  32. package/agents/prototype-env-scout.md +156 -0
  33. package/agents/prototype-reviewer.md +226 -0
  34. package/assets/icon.svg +6 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.js +5 -0
  37. package/dist/parsing/change-parser.d.ts +12 -0
  38. package/dist/parsing/change-parser.js +54 -0
  39. package/dist/parsing/requirement-blocks.d.ts +31 -0
  40. package/dist/parsing/requirement-blocks.js +192 -0
  41. package/dist/schema/base.d.ts +7 -0
  42. package/dist/schema/base.js +1 -0
  43. package/dist/schema/change.d.ts +25 -0
  44. package/dist/schema/change.js +1 -0
  45. package/dist/schema/index.d.ts +3 -0
  46. package/dist/schema/index.js +1 -0
  47. package/dist/schema/spec.d.ts +11 -0
  48. package/dist/schema/spec.js +1 -0
  49. package/dist/validation/constants.d.ts +42 -0
  50. package/dist/validation/constants.js +42 -0
  51. package/dist/validation/tokenizer.d.ts +17 -0
  52. package/dist/validation/tokenizer.js +173 -0
  53. package/dist/validation/types.d.ts +40 -0
  54. package/dist/validation/types.js +1 -0
  55. package/dist/validation/validator.d.ts +21 -0
  56. package/dist/validation/validator.js +489 -0
  57. package/docs/README_en.md +358 -0
  58. package/docs/artifact-contract.md +96 -0
  59. package/docs/decision-points.md +88 -0
  60. package/docs/e2e-integration-design.md +207 -0
  61. package/docs/examples/README.md +25 -0
  62. package/docs/examples/add-dark-mode/README.md +13 -0
  63. package/docs/examples/add-dark-mode/design.md +49 -0
  64. package/docs/examples/add-dark-mode/execution-contract.md +56 -0
  65. package/docs/examples/add-dark-mode/proposal.md +46 -0
  66. package/docs/examples/add-dark-mode/specs/ui-theme/spec.md +35 -0
  67. package/docs/examples/add-dark-mode/tasks.md +26 -0
  68. package/docs/examples/refactor-auth-boundary/README.md +15 -0
  69. package/docs/examples/refactor-auth-boundary/design.md +41 -0
  70. package/docs/examples/refactor-auth-boundary/execution-contract.md +61 -0
  71. package/docs/examples/refactor-auth-boundary/proposal.md +47 -0
  72. package/docs/examples/refactor-auth-boundary/specs/auth-boundary/spec.md +45 -0
  73. package/docs/examples/refactor-auth-boundary/tasks.md +25 -0
  74. package/docs/plans/2026-07-07-fix-batch-design.md +68 -0
  75. package/docs/plans/2026-07-20-001-refactor-skill-collaboration-protocol-plan.md +128 -0
  76. package/docs/platform-matrix.md +45 -0
  77. package/docs/prototype-design-research.md +206 -0
  78. package/docs/release-checklist.md +96 -0
  79. package/docs/showcase.html +699 -0
  80. package/docs/skill-rename-v0.8.0.md +49 -0
  81. package/docs/state-machine.md +162 -0
  82. package/gemini-extension.json +6 -0
  83. package/hooks/hooks-cursor.json +8 -0
  84. package/hooks/hooks.json +26 -0
  85. package/hooks/pre-tool-use-guard +116 -0
  86. package/hooks/session-start +14 -0
  87. package/llms.txt +51 -0
  88. package/package.json +48 -0
  89. package/plugin.json +27 -0
  90. package/prd/v1/plan.md +443 -0
  91. package/prd/v1/prd.md +580 -0
  92. package/scripts/check-update.mjs +91 -0
  93. package/scripts/check-version-consistency.mjs +345 -0
  94. package/scripts/ensure-branch.mjs +71 -0
  95. package/scripts/get-config +31 -0
  96. package/scripts/guard/checks/artifacts-exist.mjs +36 -0
  97. package/scripts/guard/checks/contract-current.mjs +33 -0
  98. package/scripts/guard/checks/contract-fresh.mjs +17 -0
  99. package/scripts/guard/checks/dp-gate-passed.mjs +35 -0
  100. package/scripts/guard/checks/dp3-approved.mjs +22 -0
  101. package/scripts/guard/checks/execution-plan-ready.mjs +40 -0
  102. package/scripts/guard/checks/execution-reviews-passed.mjs +36 -0
  103. package/scripts/guard/checks/schema-valid.mjs +63 -0
  104. package/scripts/guard/checks/specs-merged.mjs +51 -0
  105. package/scripts/guard/checks/tasks-complete.mjs +31 -0
  106. package/scripts/guard/checks/tests-passing.mjs +31 -0
  107. package/scripts/guard/design-token-guard.mjs +237 -0
  108. package/scripts/guard/guard.mjs +205 -0
  109. package/scripts/infer-workflow.mjs +136 -0
  110. package/scripts/install-amazon-q.mjs +9 -0
  111. package/scripts/install-cline.mjs +9 -0
  112. package/scripts/install-continue.mjs +9 -0
  113. package/scripts/install-cursor.mjs +265 -0
  114. package/scripts/install-git-hooks.mjs +82 -0
  115. package/scripts/install-kiro.mjs +9 -0
  116. package/scripts/install-pi.mjs +9 -0
  117. package/scripts/install-qoder.mjs +9 -0
  118. package/scripts/install-qwen.mjs +9 -0
  119. package/scripts/install-roocode.mjs +9 -0
  120. package/scripts/install-windsurf.mjs +9 -0
  121. package/scripts/install-zcode.mjs +265 -0
  122. package/scripts/lib/cmd-audit.mjs +127 -0
  123. package/scripts/lib/cmd-checkpoint.mjs +118 -0
  124. package/scripts/lib/cmd-config.mjs +88 -0
  125. package/scripts/lib/cmd-doctor.mjs +267 -0
  126. package/scripts/lib/cmd-execution.mjs +206 -0
  127. package/scripts/lib/cmd-handoff.mjs +94 -0
  128. package/scripts/lib/cmd-inject.mjs +310 -0
  129. package/scripts/lib/cmd-install-amazon-q.mjs +11 -0
  130. package/scripts/lib/cmd-install-cline.mjs +11 -0
  131. package/scripts/lib/cmd-install-continue.mjs +11 -0
  132. package/scripts/lib/cmd-install-cursor.mjs +14 -0
  133. package/scripts/lib/cmd-install-kiro.mjs +11 -0
  134. package/scripts/lib/cmd-install-pi.mjs +11 -0
  135. package/scripts/lib/cmd-install-qoder.mjs +11 -0
  136. package/scripts/lib/cmd-install-qwen.mjs +11 -0
  137. package/scripts/lib/cmd-install-roocode.mjs +11 -0
  138. package/scripts/lib/cmd-install-windsurf.mjs +11 -0
  139. package/scripts/lib/cmd-install-workbuddy.mjs +359 -0
  140. package/scripts/lib/cmd-install-zcode.mjs +14 -0
  141. package/scripts/lib/cmd-isolate.mjs +37 -0
  142. package/scripts/lib/cmd-list.mjs +71 -0
  143. package/scripts/lib/cmd-runtime.mjs +85 -0
  144. package/scripts/lib/cmd-solutions.mjs +71 -0
  145. package/scripts/lib/cmd-state.mjs +231 -0
  146. package/scripts/lib/cmd-sync.mjs +102 -0
  147. package/scripts/lib/cmd-validate.mjs +105 -0
  148. package/scripts/lib/cmd-version.mjs +148 -0
  149. package/scripts/lib/config-loader.mjs +107 -0
  150. package/scripts/lib/execution-plan.mjs +492 -0
  151. package/scripts/lib/execution-recommendation.mjs +221 -0
  152. package/scripts/lib/hash.mjs +74 -0
  153. package/scripts/lib/install.mjs +267 -0
  154. package/scripts/lib/platform-runtime-inventory.mjs +27 -0
  155. package/scripts/lib/platforms.mjs +165 -0
  156. package/scripts/lib/prototype-sync.mjs +192 -0
  157. package/scripts/lib/sdd-overlay.mjs +262 -0
  158. package/scripts/lib/shell-quote.mjs +4 -0
  159. package/scripts/lib/solutions-capture.mjs +102 -0
  160. package/scripts/lib/solutions-index-gen.mjs +112 -0
  161. package/scripts/lib/solutions-inject.mjs +77 -0
  162. package/scripts/lib/solutions-promote.mjs +145 -0
  163. package/scripts/lib/spec-paths.mjs +85 -0
  164. package/scripts/lib/state-loader.mjs +154 -0
  165. package/scripts/lint/lint-skills.mjs +149 -0
  166. package/scripts/lint/rules/behavior-consistency.mjs +56 -0
  167. package/scripts/lint/rules/dp-trigger-points.mjs +60 -0
  168. package/scripts/lint/rules/exception-handling.mjs +59 -0
  169. package/scripts/lint/rules/no-contradictory-instructions.mjs +67 -0
  170. package/scripts/lint/rules/no-redundant-checks.mjs +50 -0
  171. package/scripts/lint/rules/token-rules.mjs +122 -0
  172. package/scripts/review-package +44 -0
  173. package/scripts/task-brief +40 -0
  174. package/scripts/team-flow.mjs +164 -0
  175. package/scripts/token-baseline.mjs +158 -0
  176. package/scripts/validate-artifacts +96 -0
  177. package/scripts/verify-marketplace-release.mjs +59 -0
  178. package/skills/architecture-design/SKILL.md +140 -0
  179. package/skills/architecture-design/chapters/ch01-4a-domains.md +27 -0
  180. package/skills/architecture-design/chapters/ch02-change-cascade.md +27 -0
  181. package/skills/architecture-design/chapters/ch03-architecture-outputs.md +25 -0
  182. package/skills/architecture-design/chapters/ch04-entity-to-aggregate.md +27 -0
  183. package/skills/architecture-design/chapters/ch05-cqrs.md +32 -0
  184. package/skills/architecture-design/chapters/ch06-integration.md +54 -0
  185. package/skills/architecture-design/cheatsheet.md +51 -0
  186. package/skills/architecture-design/glossary.md +23 -0
  187. package/skills/architecture-design/patterns.md +32 -0
  188. package/skills/bug-investigator/SKILL.md +77 -0
  189. package/skills/build-executor/SKILL.md +163 -0
  190. package/skills/build-executor/implementer-prompt.md +162 -0
  191. package/skills/build-executor/references/execution-modes.md +86 -0
  192. package/skills/build-executor/task-reviewer-prompt.md +195 -0
  193. package/skills/ce-brainstorm/SKILL.md +415 -0
  194. package/skills/ce-brainstorm/references/agents/slack-researcher.md +127 -0
  195. package/skills/ce-brainstorm/references/blindspot-pass.md +70 -0
  196. package/skills/ce-brainstorm/references/brainstorm-sections.md +285 -0
  197. package/skills/ce-brainstorm/references/handoff.md +168 -0
  198. package/skills/ce-brainstorm/references/html-rendering.md +634 -0
  199. package/skills/ce-brainstorm/references/markdown-rendering.md +241 -0
  200. package/skills/ce-brainstorm/references/model-tiers.md +9 -0
  201. package/skills/ce-brainstorm/references/prd-mapping.md +71 -0
  202. package/skills/ce-brainstorm/references/product-pressure-test.md +42 -0
  203. package/skills/ce-brainstorm/references/reasoning-elevation.md +63 -0
  204. package/skills/ce-brainstorm/references/settled-decisions.md +45 -0
  205. package/skills/ce-brainstorm/references/synthesis-summary.md +282 -0
  206. package/skills/ce-brainstorm/references/universal-brainstorming.md +73 -0
  207. package/skills/ce-brainstorm/references/verdict-routing.md +26 -0
  208. package/skills/ce-brainstorm/references/visual-probes.md +158 -0
  209. package/skills/ce-brainstorm/scripts/visual-probe-server.js +418 -0
  210. package/skills/ce-compound/SKILL.md +114 -0
  211. package/skills/ce-compound/assets/resolution-template.md +94 -0
  212. package/skills/ce-compound/references/agents/best-practices-researcher.md +115 -0
  213. package/skills/ce-compound/references/agents/data-integrity-guardian.md +68 -0
  214. package/skills/ce-compound/references/agents/framework-docs-researcher.md +93 -0
  215. package/skills/ce-compound/references/agents/pattern-recognition-specialist.md +55 -0
  216. package/skills/ce-compound/references/agents/performance-oracle.md +108 -0
  217. package/skills/ce-compound/references/agents/security-sentinel.md +91 -0
  218. package/skills/ce-compound/references/agents/session-historian.md +83 -0
  219. package/skills/ce-compound/references/concepts-vocabulary.md +78 -0
  220. package/skills/ce-compound/references/full-mode-workflow.md +413 -0
  221. package/skills/ce-compound/references/grounding-validation.md +84 -0
  222. package/skills/ce-compound/references/lightweight-mode.md +53 -0
  223. package/skills/ce-compound/references/output-standards.md +182 -0
  224. package/skills/ce-compound/references/promotion-rules.md +38 -0
  225. package/skills/ce-compound/references/schema.yaml +231 -0
  226. package/skills/ce-compound/references/three-tier-index.md +55 -0
  227. package/skills/ce-compound/references/v0.5-upgrade.md +32 -0
  228. package/skills/ce-compound/references/write-flow.md +36 -0
  229. package/skills/ce-compound/references/yaml-schema.md +118 -0
  230. package/skills/ce-compound/scripts/session-history/discover-sessions.sh +130 -0
  231. package/skills/ce-compound/scripts/session-history/extract-errors.py +254 -0
  232. package/skills/ce-compound/scripts/session-history/extract-metadata.py +456 -0
  233. package/skills/ce-compound/scripts/session-history/extract-skeleton.py +575 -0
  234. package/skills/ce-compound/scripts/validate-doc-claims.py +346 -0
  235. package/skills/ce-compound/scripts/validate-frontmatter.py +137 -0
  236. package/skills/ce-ideate/SKILL.md +402 -0
  237. package/skills/ce-ideate/references/agents/issue-intelligence-analyst.md +200 -0
  238. package/skills/ce-ideate/references/agents/learnings-researcher.md +247 -0
  239. package/skills/ce-ideate/references/agents/slack-researcher.md +127 -0
  240. package/skills/ce-ideate/references/agents/web-researcher.md +121 -0
  241. package/skills/ce-ideate/references/divergent-ideation.md +89 -0
  242. package/skills/ce-ideate/references/html-rendering.md +634 -0
  243. package/skills/ce-ideate/references/ideation-sections.md +191 -0
  244. package/skills/ce-ideate/references/markdown-rendering.md +238 -0
  245. package/skills/ce-ideate/references/post-ideation-workflow.md +167 -0
  246. package/skills/ce-ideate/references/universal-ideation.md +107 -0
  247. package/skills/ce-ideate/references/web-research-cache.md +56 -0
  248. package/skills/ce-plan/SKILL.md +137 -0
  249. package/skills/ce-plan/references/agents/agent-native-planning-strategist.md +62 -0
  250. package/skills/ce-plan/references/agents/architecture-strategist.md +46 -0
  251. package/skills/ce-plan/references/agents/best-practices-researcher.md +114 -0
  252. package/skills/ce-plan/references/agents/data-integrity-guardian.md +68 -0
  253. package/skills/ce-plan/references/agents/data-migration-reviewer.md +103 -0
  254. package/skills/ce-plan/references/agents/deployment-verification-agent.md +157 -0
  255. package/skills/ce-plan/references/agents/framework-docs-researcher.md +93 -0
  256. package/skills/ce-plan/references/agents/git-history-analyzer.md +40 -0
  257. package/skills/ce-plan/references/agents/learnings-researcher.md +247 -0
  258. package/skills/ce-plan/references/agents/pattern-recognition-specialist.md +55 -0
  259. package/skills/ce-plan/references/agents/performance-oracle.md +108 -0
  260. package/skills/ce-plan/references/agents/repo-research-analyst.md +258 -0
  261. package/skills/ce-plan/references/agents/security-sentinel.md +91 -0
  262. package/skills/ce-plan/references/agents/slack-researcher.md +127 -0
  263. package/skills/ce-plan/references/agents/spec-flow-analyzer.md +80 -0
  264. package/skills/ce-plan/references/agents/web-researcher.md +121 -0
  265. package/skills/ce-plan/references/approach-altitude.md +55 -0
  266. package/skills/ce-plan/references/change-splitting.md +65 -0
  267. package/skills/ce-plan/references/completion-contract.md +33 -0
  268. package/skills/ce-plan/references/core-principles.md +40 -0
  269. package/skills/ce-plan/references/deepening-workflow.md +263 -0
  270. package/skills/ce-plan/references/dependency-graph.md +36 -0
  271. package/skills/ce-plan/references/html-rendering.md +634 -0
  272. package/skills/ce-plan/references/intake-routing.md +189 -0
  273. package/skills/ce-plan/references/markdown-rendering.md +238 -0
  274. package/skills/ce-plan/references/plan-handoff.md +150 -0
  275. package/skills/ce-plan/references/plan-sections.md +427 -0
  276. package/skills/ce-plan/references/plan-structure.md +120 -0
  277. package/skills/ce-plan/references/planning-modes.md +69 -0
  278. package/skills/ce-plan/references/reasoning-elevation.md +63 -0
  279. package/skills/ce-plan/references/research-workflow.md +165 -0
  280. package/skills/ce-plan/references/review-and-write.md +127 -0
  281. package/skills/ce-plan/references/settled-decisions.md +45 -0
  282. package/skills/ce-plan/references/synthesis-summary.md +418 -0
  283. package/skills/ce-plan/references/universal-planning.md +168 -0
  284. package/skills/ce-proof/SKILL.md +346 -0
  285. package/skills/ce-strategy/SKILL.md +97 -0
  286. package/skills/ce-strategy/references/interview.md +143 -0
  287. package/skills/ce-strategy/references/strategy-template.md +89 -0
  288. package/skills/code-reviewer/SKILL.md +84 -0
  289. package/skills/code-reviewer/code-reviewer-prompt.md +195 -0
  290. package/skills/contract-builder/SKILL.md +72 -0
  291. package/skills/design-system/SKILL.md +75 -0
  292. package/skills/design-system/references/agents/design-system-architect.md +138 -0
  293. package/skills/design-system/references/creation-flow.md +170 -0
  294. package/skills/design-system/references/preview-template.html +319 -0
  295. package/skills/design-system/references/token-derivation.md +115 -0
  296. package/skills/design-system/references/variant-schema.md +60 -0
  297. package/skills/e2e/SKILL.md +56 -0
  298. package/skills/e2e/references/test-verifier.md +40 -0
  299. package/skills/need-explorer/SKILL.md +79 -0
  300. package/skills/prototype/SKILL.md +98 -0
  301. package/skills/prototype/references/agents/design-system-architect.md +122 -0
  302. package/skills/prototype/references/checklist.md +82 -0
  303. package/skills/prototype/references/craft/accessibility-baseline.md +71 -0
  304. package/skills/prototype/references/craft/anti-ai-slop.md +87 -0
  305. package/skills/prototype/references/craft/laws-of-ux.md +60 -0
  306. package/skills/prototype/references/craft/state-coverage.md +81 -0
  307. package/skills/prototype/references/craft/typography-hierarchy.md +50 -0
  308. package/skills/prototype/references/layouts.md +223 -0
  309. package/skills/prototype/references/orchestration-flow.md +101 -0
  310. package/skills/prototype/references/prototype-scaffold/assets/design-tokens.css +19 -0
  311. package/skills/prototype/references/prototype-scaffold/components/button.html +3 -0
  312. package/skills/prototype/references/prototype-scaffold/design-system.md +7 -0
  313. package/skills/prototype/references/prototype-scaffold/flow.md +11 -0
  314. package/skills/prototype/references/prototype-scaffold/index.html +20 -0
  315. package/skills/prototype/references/prototype-scaffold/pages/index.html +11 -0
  316. package/skills/prototype/references/template.html +396 -0
  317. package/skills/release-archivist/SKILL.md +166 -0
  318. package/skills/release-archivist/references/closing-procedures.md +81 -0
  319. package/skills/session-handoff/SKILL.md +110 -0
  320. package/skills/session-handoff/references/context-extraction.md +70 -0
  321. package/skills/session-handoff/references/handoff-template.md +90 -0
  322. package/skills/session-handoff/references/skill-recommendation.md +43 -0
  323. package/skills/spec-merger/SKILL.md +66 -0
  324. package/skills/spec-writer/SKILL.md +149 -0
  325. package/skills/workflow-bootstrap/SKILL.md +148 -0
  326. package/skills/workflow-bootstrap/references/agents/codebase-recon-analyst.md +121 -0
  327. package/skills/workflow-bootstrap/references/b1-reconnaissance.md +80 -0
  328. package/skills/workflow-bootstrap/scripts/recon-probe.sh +328 -0
  329. package/skills/workflow-feedback/SKILL.md +120 -0
  330. package/skills/workflow-feedback/references/category-guide.md +121 -0
  331. package/skills/workflow-feedback/references/feedback-template.md +73 -0
  332. package/skills/workflow-feedback/references/review-mode.md +92 -0
  333. package/skills/workflow-orchestrator/SKILL.md +94 -0
  334. package/skills/workflow-orchestrator/references/feedback-loops.md +56 -0
  335. package/skills/workflow-orchestrator/references/s1-path-router.md +81 -0
  336. package/skills/workflow-orchestrator/references/s2-prd-prototype-loop.md +96 -0
  337. package/skills/workflow-orchestrator/references/s3-plan-pipeline.md +50 -0
  338. package/skills/workflow-orchestrator/references/s4-split-validate.md +108 -0
  339. package/skills/workflow-orchestrator/references/s5-monitoring.md +61 -0
  340. package/skills/workflow-orchestrator/references/state-model.md +185 -0
  341. package/skills/workflow-start/SKILL.md +147 -0
  342. package/skills/workflow-start/references/routing-rules.md +155 -0
  343. package/src/index.ts +16 -0
  344. package/src/parsing/change-parser.ts +79 -0
  345. package/src/parsing/requirement-blocks.ts +244 -0
  346. package/src/schema/base.ts +8 -0
  347. package/src/schema/change.ts +29 -0
  348. package/src/schema/index.ts +3 -0
  349. package/src/schema/spec.ts +12 -0
  350. package/src/validation/constants.ts +53 -0
  351. package/src/validation/tokenizer.ts +180 -0
  352. package/src/validation/types.ts +47 -0
  353. package/src/validation/validator.ts +552 -0
  354. package/templates/abandonment-summary.md +29 -0
  355. package/templates/design.md +37 -0
  356. package/templates/execution-contract.md +99 -0
  357. package/templates/plan.md +86 -0
  358. package/templates/prd.md +468 -0
  359. package/templates/proposal.md +37 -0
  360. package/templates/spec.md +31 -0
  361. package/templates/tasks.md +47 -0
  362. package/tests/e2e.test.mjs +266 -0
  363. package/tests/lib/cmd-audit.test.mjs +202 -0
  364. package/tests/lib/cmd-checkpoint.test.mjs +98 -0
  365. package/tests/lib/cmd-config.test.mjs +101 -0
  366. package/tests/lib/cmd-doctor.test.mjs +450 -0
  367. package/tests/lib/cmd-execution.test.mjs +647 -0
  368. package/tests/lib/cmd-handoff.test.mjs +137 -0
  369. package/tests/lib/cmd-inject.test.mjs +218 -0
  370. package/tests/lib/cmd-install-workbuddy.test.mjs +113 -0
  371. package/tests/lib/cmd-install-zcode.test.mjs +42 -0
  372. package/tests/lib/cmd-isolate.test.mjs +68 -0
  373. package/tests/lib/cmd-list.test.mjs +127 -0
  374. package/tests/lib/cmd-runtime.test.mjs +83 -0
  375. package/tests/lib/cmd-state-missing.test.mjs +65 -0
  376. package/tests/lib/cmd-state.test.mjs +365 -0
  377. package/tests/lib/cmd-sync-paths.test.mjs +84 -0
  378. package/tests/lib/cmd-validate-paths.test.mjs +90 -0
  379. package/tests/lib/config-loader.test.mjs +175 -0
  380. package/tests/lib/ensure-branch.test.mjs +59 -0
  381. package/tests/lib/execution-control-plane.test.mjs +168 -0
  382. package/tests/lib/execution-plan.test.mjs +474 -0
  383. package/tests/lib/guard-specs-merged.test.mjs +108 -0
  384. package/tests/lib/guard-tests-passing.test.mjs +112 -0
  385. package/tests/lib/guard-transitions.test.mjs +262 -0
  386. package/tests/lib/guard.test.mjs +611 -0
  387. package/tests/lib/hash.test.mjs +138 -0
  388. package/tests/lib/infer-workflow.test.mjs +161 -0
  389. package/tests/lib/install-git-hooks.test.mjs +20 -0
  390. package/tests/lib/marketplace-release-docs.test.mjs +31 -0
  391. package/tests/lib/minimality-discipline.test.mjs +37 -0
  392. package/tests/lib/model-profiles-docs.test.mjs +33 -0
  393. package/tests/lib/node20-compatibility.test.mjs +73 -0
  394. package/tests/lib/node20-test-entry.test.mjs +17 -0
  395. package/tests/lib/platform-runtime-distribution.test.mjs +150 -0
  396. package/tests/lib/raw-mode-smoke.test.mjs +42 -0
  397. package/tests/lib/sdd-overlay.test.mjs +118 -0
  398. package/tests/lib/spec-paths.test.mjs +80 -0
  399. package/tests/lib/state-loader.test.mjs +251 -0
  400. package/tests/lib/token-baseline.test.mjs +72 -0
  401. package/tests/lib/token-rules.test.mjs +94 -0
  402. package/tests/lib/verify-marketplace-release.test.mjs +128 -0
  403. package/tests/tsconfig.json +12 -0
  404. package/token-baseline.json +95 -0
  405. package/tsconfig.json +14 -0
@@ -0,0 +1,310 @@
1
+ // scripts/lib/cmd-inject.mjs — tf inject: generate phase-guard artifacts for multiple platforms
2
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
3
+ import { join, dirname } from 'node:path';
4
+ import { parseArgs } from 'node:util';
5
+ import { readState } from './state-loader.mjs';
6
+
7
+ const PHASE_TEMPLATES = {
8
+ 'exploring': `# Phase Guard: {{change_name}}
9
+
10
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
11
+
12
+ ## ✅ 允许操作
13
+ - 澄清需求、比较方案
14
+ - 与用户讨论 scope 和 capabilities
15
+
16
+ ## ⛔ 禁止操作
17
+ - 创建规划工件(proposal.md, specs/, design.md, tasks.md)
18
+ - 执行实现代码
19
+ - 修改 execution-contract.md
20
+
21
+ ## 🔔 决策点
22
+ - DP-1: 需求确认 — 进入 specifying 前需用户确认 scope`,
23
+
24
+ 'specifying': `# Phase Guard: {{change_name}}
25
+
26
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
27
+
28
+ ## ✅ 允许操作
29
+ - 创建/修改 proposal.md
30
+ - 创建/修改 specs/ 目录中的规格文件
31
+ - 创建/修改 design.md
32
+ - 创建/修改 tasks.md
33
+
34
+ ## ⛔ 禁止操作
35
+ - 修改 execution-contract.md
36
+ - 执行实现代码
37
+ - 修改已批准的 specs(需先回退状态)
38
+
39
+ ## 🔔 决策点
40
+ - DP-2: 工件审查 — 完成后需用户审查所有工件`,
41
+
42
+ 'bridging': `# Phase Guard: {{change_name}}
43
+
44
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
45
+
46
+ ## ✅ 允许操作
47
+ - 生成/修改 execution-contract.md
48
+ - 运行 tf validate 验证工件
49
+
50
+ ## ⛔ 禁止操作
51
+ - 执行实现代码
52
+ - 修改 proposal.md, specs/, design.md, tasks.md(需先回退到 specifying)
53
+
54
+ ## 🔔 决策点
55
+ - DP-3: 契约批准 — 用户必须明确批准 execution-contract.md(硬门禁)`,
56
+
57
+ 'approved-for-build': `# Phase Guard: {{change_name}}
58
+
59
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
60
+
61
+ ## ✅ 允许操作
62
+ - 运行 tf execution recommend <change-dir> [--wave ...],完成 DP-4 执行模式选择,列出可用模式与推荐并写入当前推荐凭据
63
+ - 向用户展示候选项、项目事实与推荐,取得明确选择
64
+ - 运行 tf execution plan <change-dir> --mode <mode> --confirm ... 生成 execution plan;它必须使用匹配当前 artifact、contract 和 wave 的推荐凭据,非推荐选择需 --acknowledge-recommendation
65
+ - 运行 tf execution show <change-dir> --json 核对 current、revision、mode、waves[].eligible 和 receipts
66
+ - 准备执行环境
67
+
68
+ ## ⛔ 禁止操作
69
+ - full/hotfix 没有 current execution plan 时不得开始实现或转换到 executing;tweak 免除此 plan/receipt gate
70
+ - 修改 execution-contract.md(需回退到 bridging)
71
+ - 修改 proposal.md, specs/, design.md, tasks.md
72
+
73
+ ## 🔔 决策点
74
+ - DP-4 执行模式选择:先运行 execution recommend 并展示可用模式和推荐;用户用 --confirm 确认,非推荐选择额外使用 --acknowledge-recommendation。plan/revise 需要当前匹配的推荐凭据。仅当 execution show 报告 current: true 后才可转换到 executing;tweak 免除此 plan/receipt gate`,
75
+
76
+ 'executing': `# Phase Guard: {{change_name}}
77
+
78
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
79
+
80
+ ## ✅ 允许操作
81
+ - 按 execution-contract.md 和 current execution plan 的 wave 执行任务
82
+ - 运行测试
83
+ - 提交代码(按 batch 提交)
84
+ - full/hotfix 每个完成 wave 后记录 wave review 的 review receipt(pass 或 fail);tweak 免除此 plan/receipt gate
85
+
86
+ ## ⛔ 禁止操作
87
+ - 修改 proposal.md, specs/, design.md(需先回退到 specifying)
88
+ - 修改 execution-contract.md(需先回退到 bridging)
89
+ - 跳过测试步骤
90
+ - full/hotfix 不得跳过 wave review;没有所有 pass review receipts 不得进入 closing;tweak 免除此 plan/receipt gate
91
+
92
+ ## 🔔 决策点
93
+ - DP-5: 调试升级 — 3+ 修复失败后需用户决定`,
94
+
95
+ 'debugging': `# Phase Guard: {{change_name}}
96
+
97
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
98
+
99
+ ## ✅ 允许操作
100
+ - 分析根因(4 阶段根因分析)
101
+ - 修复 bug(TDD 修复循环)
102
+ - 返回 executing 状态
103
+
104
+ ## ⛔ 禁止操作
105
+ - 修改 proposal.md, specs/, design.md
106
+ - 开始新任务
107
+ - 跳过根因分析直接修复`,
108
+
109
+ 'closing': `# Phase Guard: {{change_name}}
110
+
111
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
112
+
113
+ ## ✅ 允许操作
114
+ - 运行验证(三维验证)
115
+ - 归档变更
116
+ - 合并 delta specs
117
+
118
+ ## ⛔ 禁止操作
119
+ - 修改 execution-contract.md
120
+ - 执行新任务
121
+ - 修改 proposal.md, specs/, design.md
122
+
123
+ ## 🔔 决策点
124
+ - DP-6: 验证失败 — 验证未通过时需用户决定
125
+ - DP-7: 归档确认 — 需用户确认归档`,
126
+
127
+ 'abandoned': `# Phase Guard: {{change_name}}
128
+
129
+ **当前阶段**: {{state}} | **工作流**: {{workflow}}
130
+
131
+ ## ⛔ 终止状态
132
+ - 此变更已放弃,不允许任何进一步操作
133
+ - 不得合并 delta specs
134
+ - 不得从 abandoned 状态转换`,
135
+ };
136
+
137
+ const SUPPORTED_PLATFORMS = ['claude', 'cursor', 'copilot', 'gemini'];
138
+ const PHASE_GUARD_MARKERS = {
139
+ start: '\n\n<!-- team-flow-phase-guard-start -->\n',
140
+ end: '<!-- team-flow-phase-guard-end -->\n',
141
+ };
142
+
143
+ function unique(values) {
144
+ return [...new Set(values)];
145
+ }
146
+
147
+ function generatePhaseGuard(state) {
148
+ const template = PHASE_TEMPLATES[state.state] || PHASE_TEMPLATES['exploring'];
149
+ return template
150
+ .replace(/\{\{change_name\}\}/g, state.change_name || 'unknown')
151
+ .replace(/\{\{state\}\}/g, state.state || 'exploring')
152
+ .replace(/\{\{workflow\}\}/g, state.workflow || 'full');
153
+ }
154
+
155
+ function toCursorMdc(base) {
156
+ return `---
157
+ description: team-flow phase guard
158
+ alwaysApply: true
159
+ ---
160
+
161
+ ${base}`;
162
+ }
163
+
164
+ function toCopilotInstructions(base) {
165
+ // Base already starts with "# Phase Guard: ..."; ensure a clear top-level heading.
166
+ return base.replace(/^# Phase Guard:.*$/m, '# Phase Guard');
167
+ }
168
+
169
+ function injectGemini(base, geminiPath) {
170
+ const section = `# Phase Guard\n\n${base.replace(/^# Phase Guard:.*\n?/m, '').trim()}\n`;
171
+ const wrapped = `${PHASE_GUARD_MARKERS.start}${section}${PHASE_GUARD_MARKERS.end}`;
172
+
173
+ let content = '';
174
+ if (existsSync(geminiPath)) {
175
+ content = readFileSync(geminiPath, 'utf-8');
176
+ }
177
+
178
+ const startIdx = content.indexOf(PHASE_GUARD_MARKERS.start);
179
+ if (startIdx !== -1) {
180
+ const endIdx = content.indexOf(PHASE_GUARD_MARKERS.end, startIdx);
181
+ if (endIdx !== -1) {
182
+ content = content.slice(0, startIdx) + wrapped + content.slice(endIdx + PHASE_GUARD_MARKERS.end.length);
183
+ } else {
184
+ content = content.slice(0, startIdx) + wrapped;
185
+ }
186
+ } else {
187
+ content = content.trimEnd() + '\n' + wrapped;
188
+ }
189
+
190
+ writeFileSync(geminiPath, content, 'utf-8');
191
+ }
192
+
193
+ function writeFile(filePath, content) {
194
+ mkdirSync(dirname(filePath), { recursive: true });
195
+ writeFileSync(filePath, content, 'utf-8');
196
+ }
197
+
198
+ export function parsePlatformList(value) {
199
+ if (!value) return null;
200
+ const requested = value.split(',').map(p => p.trim().toLowerCase()).filter(Boolean);
201
+ if (requested.includes('all')) {
202
+ if (requested.length > 1) return ['__invalid_all_combo__'];
203
+ return [...SUPPORTED_PLATFORMS];
204
+ }
205
+ return unique(requested);
206
+ }
207
+
208
+ export function detectProjectPlatforms(projectRoot) {
209
+ const detected = [];
210
+ if (existsSync(join(projectRoot, '.claude'))) detected.push('claude');
211
+ if (existsSync(join(projectRoot, '.cursor')) || existsSync(join(projectRoot, '.cursor', 'rules'))) detected.push('cursor');
212
+ if (existsSync(join(projectRoot, '.github', 'copilot-instructions.md'))) detected.push('copilot');
213
+ if (existsSync(join(projectRoot, 'GEMINI.md'))) detected.push('gemini');
214
+ return detected;
215
+ }
216
+
217
+ export function resolvePlatforms(value, projectRoot) {
218
+ const explicit = parsePlatformList(value);
219
+ if (explicit) {
220
+ if (explicit.includes('__invalid_all_combo__')) {
221
+ return { ok: false, message: '`all` cannot be combined with other platforms. Use --platforms all or a comma-separated platform list.' };
222
+ }
223
+ const invalid = explicit.filter(p => !SUPPORTED_PLATFORMS.includes(p));
224
+ if (invalid.length > 0) {
225
+ return { ok: false, message: `Unsupported platform(s): ${invalid.join(', ')}. Supported: ${SUPPORTED_PLATFORMS.join(', ')} or all` };
226
+ }
227
+ return { ok: true, platforms: explicit };
228
+ }
229
+
230
+ const detected = detectProjectPlatforms(projectRoot);
231
+ if (detected.length === 1) {
232
+ return { ok: true, platforms: detected };
233
+ }
234
+ if (detected.length === 0) {
235
+ return { ok: false, message: 'Could not detect target platform. Re-run with --platforms claude|cursor|copilot|gemini or --platforms all.' };
236
+ }
237
+ return { ok: false, message: `Detected multiple platform markers (${detected.join(', ')}). Re-run with --platforms <platform> or --platforms all.` };
238
+ }
239
+
240
+ const PLATFORM_WRITERS = {
241
+ claude(base, projectRoot) {
242
+ const alwaysDir = join(projectRoot, '.claude', 'always');
243
+ mkdirSync(alwaysDir, { recursive: true });
244
+ writeFileSync(join(alwaysDir, 'phase-guard.md'), base);
245
+ },
246
+ cursor(base, projectRoot) {
247
+ const cursorRulesDir = join(projectRoot, '.cursor', 'rules');
248
+ mkdirSync(cursorRulesDir, { recursive: true });
249
+ writeFileSync(join(cursorRulesDir, 'phase-guard.mdc'), toCursorMdc(base));
250
+ },
251
+ copilot(base, projectRoot) {
252
+ const copilotPath = join(projectRoot, '.github', 'copilot-instructions.md');
253
+ writeFile(copilotPath, toCopilotInstructions(base));
254
+ },
255
+ gemini(base, projectRoot) {
256
+ injectGemini(base, join(projectRoot, 'GEMINI.md'));
257
+ },
258
+ };
259
+
260
+ export async function run(args) {
261
+ const { values, positionals } = parseArgs({
262
+ args,
263
+ options: {
264
+ json: { type: 'boolean', default: false },
265
+ platforms: { type: 'string' },
266
+ },
267
+ allowPositionals: true,
268
+ });
269
+
270
+ const changeDir = positionals[0];
271
+ if (!changeDir) {
272
+ console.error('Usage: tf inject <change-dir> [--platforms claude,cursor,copilot,gemini|all] [--json]');
273
+ process.exit(2);
274
+ }
275
+
276
+ const projectRoot = process.cwd();
277
+ const resolved = resolvePlatforms(values.platforms, projectRoot);
278
+ if (!resolved.ok) {
279
+ console.error(resolved.message);
280
+ process.exit(2);
281
+ }
282
+ const requested = resolved.platforms;
283
+
284
+ // Read state (graceful fallback if missing)
285
+ const stateFile = join(changeDir, '.team-flow.yaml');
286
+ if (!existsSync(stateFile)) {
287
+ if (!values.json) console.log(`⚠️ No .team-flow.yaml found in ${changeDir}, using defaults`);
288
+ }
289
+ const state = readState(changeDir);
290
+
291
+ // Generate base phase-guard content
292
+ const base = generatePhaseGuard(state);
293
+ const outputs = [];
294
+
295
+ for (const platform of requested) {
296
+ PLATFORM_WRITERS[platform](base, projectRoot);
297
+ outputs.push(platform);
298
+ }
299
+
300
+ if (values.json) {
301
+ console.log(JSON.stringify({ ok: true, platforms: outputs, state: state.state, workflow: state.workflow, change_name: state.change_name }));
302
+ } else {
303
+ for (const platform of outputs) {
304
+ console.log(`✅ Injected ${platform}`);
305
+ }
306
+ console.log(` Change: ${state.change_name} | State: ${state.state} | Workflow: ${state.workflow}`);
307
+ }
308
+ }
309
+
310
+ export { generatePhaseGuard, toCursorMdc, toCopilotInstructions };
@@ -0,0 +1,11 @@
1
+ // tf install-amazon-q — deploy team-flow for Amazon Q Developer. Delegates to scripts/install-amazon-q.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-amazon-q.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-cline — deploy team-flow for Cline. Delegates to scripts/install-cline.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-cline.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-continue — deploy team-flow for Continue. Delegates to scripts/install-continue.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-continue.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,14 @@
1
+ // tf install-cursor — deploy team-flow skills/rules/scripts for Cursor Agent
2
+ // Delegates to scripts/install-cursor.mjs
3
+ import { execFileSync } from 'node:child_process';
4
+ import { dirname, join } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const installScript = join(__dirname, '..', 'install-cursor.mjs');
9
+
10
+ export async function run(args) {
11
+ execFileSync(process.execPath, [installScript, ...args], {
12
+ stdio: 'inherit',
13
+ });
14
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-kiro — deploy team-flow for Kiro. Delegates to scripts/install-kiro.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-kiro.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-pi — deploy team-flow for Pi agent. Delegates to scripts/install-pi.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-pi.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-qoder — deploy team-flow for Qoder. Delegates to scripts/install-qoder.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-qoder.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-qwen — deploy team-flow for Qwen Code. Delegates to scripts/install-qwen.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-qwen.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-roocode — deploy team-flow for Roo Code. Delegates to scripts/install-roocode.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-roocode.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }
@@ -0,0 +1,11 @@
1
+ // tf install-windsurf — deploy team-flow for Windsurf. Delegates to scripts/install-windsurf.mjs
2
+ import { execFileSync } from 'node:child_process';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const installScript = join(__dirname, '..', 'install-windsurf.mjs');
8
+
9
+ export async function run(args) {
10
+ execFileSync(process.execPath, [installScript, ...args], { stdio: 'inherit' });
11
+ }