@sk8metal/michi-cli 0.0.8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +420 -49
  3. package/dist/scripts/__tests__/create-project.test.js +24 -28
  4. package/dist/scripts/__tests__/create-project.test.js.map +1 -1
  5. package/dist/scripts/__tests__/jira-transitions.test.d.ts +5 -0
  6. package/dist/scripts/__tests__/jira-transitions.test.d.ts.map +1 -0
  7. package/dist/scripts/__tests__/jira-transitions.test.js +172 -0
  8. package/dist/scripts/__tests__/jira-transitions.test.js.map +1 -0
  9. package/dist/scripts/__tests__/multi-project-estimate.test.js +14 -15
  10. package/dist/scripts/__tests__/multi-project-estimate.test.js.map +1 -1
  11. package/dist/scripts/__tests__/setup-existing-project.test.js +146 -5
  12. package/dist/scripts/__tests__/setup-existing-project.test.js.map +1 -1
  13. package/dist/scripts/__tests__/setup-interactive.test.js +23 -17
  14. package/dist/scripts/__tests__/setup-interactive.test.js.map +1 -1
  15. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts +5 -0
  16. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts.map +1 -0
  17. package/dist/scripts/__tests__/spec-impl-workflow.test.js +321 -0
  18. package/dist/scripts/__tests__/spec-impl-workflow.test.js.map +1 -0
  19. package/dist/scripts/__tests__/spec-loader.test.d.ts +5 -0
  20. package/dist/scripts/__tests__/spec-loader.test.d.ts.map +1 -0
  21. package/dist/scripts/__tests__/spec-loader.test.js +153 -0
  22. package/dist/scripts/__tests__/spec-loader.test.js.map +1 -0
  23. package/dist/scripts/__tests__/validate-phase.test.js +26 -22
  24. package/dist/scripts/__tests__/validate-phase.test.js.map +1 -1
  25. package/dist/scripts/config/config-schema.d.ts +17 -0
  26. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  27. package/dist/scripts/config/config-schema.js +55 -26
  28. package/dist/scripts/config/config-schema.js.map +1 -1
  29. package/dist/scripts/config-interactive.d.ts.map +1 -1
  30. package/dist/scripts/config-interactive.js +53 -38
  31. package/dist/scripts/config-interactive.js.map +1 -1
  32. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  33. package/dist/scripts/confluence-sync.js +0 -11
  34. package/dist/scripts/confluence-sync.js.map +1 -1
  35. package/dist/scripts/constants/__tests__/environments.test.d.ts +2 -0
  36. package/dist/scripts/constants/__tests__/environments.test.d.ts.map +1 -0
  37. package/dist/scripts/constants/__tests__/environments.test.js +125 -0
  38. package/dist/scripts/constants/__tests__/environments.test.js.map +1 -0
  39. package/dist/scripts/constants/__tests__/languages.test.d.ts +2 -0
  40. package/dist/scripts/constants/__tests__/languages.test.d.ts.map +1 -0
  41. package/dist/scripts/constants/__tests__/languages.test.js +82 -0
  42. package/dist/scripts/constants/__tests__/languages.test.js.map +1 -0
  43. package/dist/scripts/constants/environments.d.ts +33 -0
  44. package/dist/scripts/constants/environments.d.ts.map +1 -0
  45. package/dist/scripts/constants/environments.js +64 -0
  46. package/dist/scripts/constants/environments.js.map +1 -0
  47. package/dist/scripts/constants/languages.d.ts +23 -0
  48. package/dist/scripts/constants/languages.d.ts.map +1 -0
  49. package/dist/scripts/constants/languages.js +53 -0
  50. package/dist/scripts/constants/languages.js.map +1 -0
  51. package/dist/scripts/constants/test-commands.d.ts +36 -0
  52. package/dist/scripts/constants/test-commands.d.ts.map +1 -0
  53. package/dist/scripts/constants/test-commands.js +70 -0
  54. package/dist/scripts/constants/test-commands.js.map +1 -0
  55. package/dist/scripts/create-project.d.ts +4 -0
  56. package/dist/scripts/create-project.d.ts.map +1 -1
  57. package/dist/scripts/create-project.js +51 -22
  58. package/dist/scripts/create-project.js.map +1 -1
  59. package/dist/scripts/jira-sync.d.ts +89 -3
  60. package/dist/scripts/jira-sync.d.ts.map +1 -1
  61. package/dist/scripts/jira-sync.js +366 -96
  62. package/dist/scripts/jira-sync.js.map +1 -1
  63. package/dist/scripts/markdown-to-confluence.js +1 -1
  64. package/dist/scripts/markdown-to-confluence.js.map +1 -1
  65. package/dist/scripts/phase-runner.d.ts +1 -1
  66. package/dist/scripts/phase-runner.d.ts.map +1 -1
  67. package/dist/scripts/phase-runner.js +809 -13
  68. package/dist/scripts/phase-runner.js.map +1 -1
  69. package/dist/scripts/pr-automation.d.ts.map +1 -1
  70. package/dist/scripts/pr-automation.js.map +1 -1
  71. package/dist/scripts/pre-flight-check.js +1 -1
  72. package/dist/scripts/pre-flight-check.js.map +1 -1
  73. package/dist/scripts/setup-existing-project.d.ts +3 -1
  74. package/dist/scripts/setup-existing-project.d.ts.map +1 -1
  75. package/dist/scripts/setup-existing-project.js +165 -78
  76. package/dist/scripts/setup-existing-project.js.map +1 -1
  77. package/dist/scripts/setup-interactive.js +3 -3
  78. package/dist/scripts/setup-interactive.js.map +1 -1
  79. package/dist/scripts/spec-impl-workflow.d.ts +94 -0
  80. package/dist/scripts/spec-impl-workflow.d.ts.map +1 -0
  81. package/dist/scripts/spec-impl-workflow.js +354 -0
  82. package/dist/scripts/spec-impl-workflow.js.map +1 -0
  83. package/dist/scripts/template/__tests__/renderer.test.d.ts +2 -0
  84. package/dist/scripts/template/__tests__/renderer.test.d.ts.map +1 -0
  85. package/dist/scripts/template/__tests__/renderer.test.js +165 -0
  86. package/dist/scripts/template/__tests__/renderer.test.js.map +1 -0
  87. package/dist/scripts/template/renderer.d.ts +70 -0
  88. package/dist/scripts/template/renderer.d.ts.map +1 -0
  89. package/dist/scripts/template/renderer.js +99 -0
  90. package/dist/scripts/template/renderer.js.map +1 -0
  91. package/dist/scripts/test-execution-generator.d.ts +52 -0
  92. package/dist/scripts/test-execution-generator.d.ts.map +1 -0
  93. package/dist/scripts/test-execution-generator.js +576 -0
  94. package/dist/scripts/test-execution-generator.js.map +1 -0
  95. package/dist/scripts/test-interactive.d.ts +10 -0
  96. package/dist/scripts/test-interactive.d.ts.map +1 -0
  97. package/dist/scripts/test-interactive.js +627 -0
  98. package/dist/scripts/test-interactive.js.map +1 -0
  99. package/dist/scripts/test-new-features.d.ts +5 -0
  100. package/dist/scripts/test-new-features.d.ts.map +1 -0
  101. package/dist/scripts/test-new-features.js +145 -0
  102. package/dist/scripts/test-new-features.js.map +1 -0
  103. package/dist/scripts/test-spec-generator.d.ts +29 -0
  104. package/dist/scripts/test-spec-generator.d.ts.map +1 -0
  105. package/dist/scripts/test-spec-generator.js +494 -0
  106. package/dist/scripts/test-spec-generator.js.map +1 -0
  107. package/dist/scripts/test-workflow-stages.d.ts +6 -0
  108. package/dist/scripts/test-workflow-stages.d.ts.map +1 -0
  109. package/dist/scripts/test-workflow-stages.js +43 -0
  110. package/dist/scripts/test-workflow-stages.js.map +1 -0
  111. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts +5 -0
  112. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts.map +1 -0
  113. package/dist/scripts/utils/__tests__/aidlc-parser.test.js +315 -0
  114. package/dist/scripts/utils/__tests__/aidlc-parser.test.js.map +1 -0
  115. package/dist/scripts/utils/__tests__/business-days.test.d.ts +5 -0
  116. package/dist/scripts/utils/__tests__/business-days.test.d.ts.map +1 -0
  117. package/dist/scripts/utils/__tests__/business-days.test.js +171 -0
  118. package/dist/scripts/utils/__tests__/business-days.test.js.map +1 -0
  119. package/dist/scripts/utils/__tests__/config-loader.test.js +1 -1
  120. package/dist/scripts/utils/__tests__/config-loader.test.js.map +1 -1
  121. package/dist/scripts/utils/__tests__/config-validator.test.js +164 -35
  122. package/dist/scripts/utils/__tests__/config-validator.test.js.map +1 -1
  123. package/dist/scripts/utils/__tests__/env-config.test.d.ts +5 -0
  124. package/dist/scripts/utils/__tests__/env-config.test.d.ts.map +1 -0
  125. package/dist/scripts/utils/__tests__/env-config.test.js +218 -0
  126. package/dist/scripts/utils/__tests__/env-config.test.js.map +1 -0
  127. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts +5 -0
  128. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts.map +1 -0
  129. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js +202 -0
  130. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js.map +1 -0
  131. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts +5 -0
  132. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts.map +1 -0
  133. package/dist/scripts/utils/__tests__/tasks-converter.test.js +500 -0
  134. package/dist/scripts/utils/__tests__/tasks-converter.test.js.map +1 -0
  135. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts +5 -0
  136. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts.map +1 -0
  137. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js +314 -0
  138. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js.map +1 -0
  139. package/dist/scripts/utils/__tests__/test-runner.test.d.ts +5 -0
  140. package/dist/scripts/utils/__tests__/test-runner.test.d.ts.map +1 -0
  141. package/dist/scripts/utils/__tests__/test-runner.test.js +64 -0
  142. package/dist/scripts/utils/__tests__/test-runner.test.js.map +1 -0
  143. package/dist/scripts/utils/aidlc-parser.d.ts +86 -0
  144. package/dist/scripts/utils/aidlc-parser.d.ts.map +1 -0
  145. package/dist/scripts/utils/aidlc-parser.js +208 -0
  146. package/dist/scripts/utils/aidlc-parser.js.map +1 -0
  147. package/dist/scripts/utils/business-days.d.ts +52 -0
  148. package/dist/scripts/utils/business-days.d.ts.map +1 -0
  149. package/dist/scripts/utils/business-days.js +98 -0
  150. package/dist/scripts/utils/business-days.js.map +1 -0
  151. package/dist/scripts/utils/ci-generator.d.ts +14 -0
  152. package/dist/scripts/utils/ci-generator.d.ts.map +1 -0
  153. package/dist/scripts/utils/ci-generator.js +61 -0
  154. package/dist/scripts/utils/ci-generator.js.map +1 -0
  155. package/dist/scripts/utils/config-loader.js +2 -2
  156. package/dist/scripts/utils/config-loader.js.map +1 -1
  157. package/dist/scripts/utils/config-validator.d.ts +7 -1
  158. package/dist/scripts/utils/config-validator.d.ts.map +1 -1
  159. package/dist/scripts/utils/config-validator.js +136 -23
  160. package/dist/scripts/utils/config-validator.js.map +1 -1
  161. package/dist/scripts/utils/confluence-approval.d.ts +46 -0
  162. package/dist/scripts/utils/confluence-approval.d.ts.map +1 -0
  163. package/dist/scripts/utils/confluence-approval.js +118 -0
  164. package/dist/scripts/utils/confluence-approval.js.map +1 -0
  165. package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -1
  166. package/dist/scripts/utils/confluence-hierarchy.js +1 -1
  167. package/dist/scripts/utils/confluence-hierarchy.js.map +1 -1
  168. package/dist/scripts/utils/docker-generator.d.ts +9 -0
  169. package/dist/scripts/utils/docker-generator.d.ts.map +1 -0
  170. package/dist/scripts/utils/docker-generator.js +132 -0
  171. package/dist/scripts/utils/docker-generator.js.map +1 -0
  172. package/dist/scripts/utils/docker-requirement-detector.d.ts +15 -0
  173. package/dist/scripts/utils/docker-requirement-detector.d.ts.map +1 -0
  174. package/dist/scripts/utils/docker-requirement-detector.js +124 -0
  175. package/dist/scripts/utils/docker-requirement-detector.js.map +1 -0
  176. package/dist/scripts/utils/env-config.d.ts +54 -0
  177. package/dist/scripts/utils/env-config.d.ts.map +1 -0
  178. package/dist/scripts/utils/env-config.js +414 -0
  179. package/dist/scripts/utils/env-config.js.map +1 -0
  180. package/dist/scripts/utils/jira-issue-type-fetcher.d.ts +70 -0
  181. package/dist/scripts/utils/jira-issue-type-fetcher.d.ts.map +1 -0
  182. package/dist/scripts/utils/jira-issue-type-fetcher.js +147 -0
  183. package/dist/scripts/utils/jira-issue-type-fetcher.js.map +1 -0
  184. package/dist/scripts/utils/language-detector.d.ts +14 -0
  185. package/dist/scripts/utils/language-detector.d.ts.map +1 -0
  186. package/dist/scripts/utils/language-detector.js +119 -0
  187. package/dist/scripts/utils/language-detector.js.map +1 -0
  188. package/dist/scripts/utils/markdown-parser.d.ts +55 -0
  189. package/dist/scripts/utils/markdown-parser.d.ts.map +1 -0
  190. package/dist/scripts/utils/markdown-parser.js +289 -0
  191. package/dist/scripts/utils/markdown-parser.js.map +1 -0
  192. package/dist/scripts/utils/project-detector.d.ts +17 -0
  193. package/dist/scripts/utils/project-detector.d.ts.map +1 -0
  194. package/dist/scripts/utils/project-detector.js +166 -0
  195. package/dist/scripts/utils/project-detector.js.map +1 -0
  196. package/dist/scripts/utils/project-finder.js +2 -2
  197. package/dist/scripts/utils/project-finder.js.map +1 -1
  198. package/dist/scripts/utils/release-notes-generator.d.ts +56 -0
  199. package/dist/scripts/utils/release-notes-generator.d.ts.map +1 -0
  200. package/dist/scripts/utils/release-notes-generator.js +162 -0
  201. package/dist/scripts/utils/release-notes-generator.js.map +1 -0
  202. package/dist/scripts/utils/spec-loader.d.ts +79 -0
  203. package/dist/scripts/utils/spec-loader.d.ts.map +1 -0
  204. package/dist/scripts/utils/spec-loader.js +80 -0
  205. package/dist/scripts/utils/spec-loader.js.map +1 -0
  206. package/dist/scripts/utils/spec-updater.d.ts +7 -0
  207. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  208. package/dist/scripts/utils/spec-updater.js.map +1 -1
  209. package/dist/scripts/utils/tasks-converter.d.ts +57 -0
  210. package/dist/scripts/utils/tasks-converter.d.ts.map +1 -0
  211. package/dist/scripts/utils/tasks-converter.js +322 -0
  212. package/dist/scripts/utils/tasks-converter.js.map +1 -0
  213. package/dist/scripts/utils/tasks-format-validator.d.ts +36 -0
  214. package/dist/scripts/utils/tasks-format-validator.d.ts.map +1 -0
  215. package/dist/scripts/utils/tasks-format-validator.js +158 -0
  216. package/dist/scripts/utils/tasks-format-validator.js.map +1 -0
  217. package/dist/scripts/utils/template-applier.d.ts +37 -0
  218. package/dist/scripts/utils/template-applier.d.ts.map +1 -0
  219. package/dist/scripts/utils/template-applier.js +129 -0
  220. package/dist/scripts/utils/template-applier.js.map +1 -0
  221. package/dist/scripts/utils/template-finder.d.ts +37 -0
  222. package/dist/scripts/utils/template-finder.d.ts.map +1 -0
  223. package/dist/scripts/utils/template-finder.js +63 -0
  224. package/dist/scripts/utils/template-finder.js.map +1 -0
  225. package/dist/scripts/utils/test-config-generator.d.ts +12 -0
  226. package/dist/scripts/utils/test-config-generator.d.ts.map +1 -0
  227. package/dist/scripts/utils/test-config-generator.js +185 -0
  228. package/dist/scripts/utils/test-config-generator.js.map +1 -0
  229. package/dist/scripts/utils/test-runner.d.ts +31 -0
  230. package/dist/scripts/utils/test-runner.d.ts.map +1 -0
  231. package/dist/scripts/utils/test-runner.js +103 -0
  232. package/dist/scripts/utils/test-runner.js.map +1 -0
  233. package/dist/scripts/validate-phase.d.ts +1 -1
  234. package/dist/scripts/validate-phase.d.ts.map +1 -1
  235. package/dist/scripts/validate-phase.js +153 -5
  236. package/dist/scripts/validate-phase.js.map +1 -1
  237. package/dist/scripts/workflow-orchestrator.d.ts +8 -0
  238. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
  239. package/dist/scripts/workflow-orchestrator.js +108 -7
  240. package/dist/scripts/workflow-orchestrator.js.map +1 -1
  241. package/dist/src/__tests__/integration/internationalization.test.d.ts +8 -0
  242. package/dist/src/__tests__/integration/internationalization.test.d.ts.map +1 -0
  243. package/dist/src/__tests__/integration/internationalization.test.js +333 -0
  244. package/dist/src/__tests__/integration/internationalization.test.js.map +1 -0
  245. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts +5 -0
  246. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts.map +1 -0
  247. package/dist/src/__tests__/integration/setup/claude-agent.test.js +122 -0
  248. package/dist/src/__tests__/integration/setup/claude-agent.test.js.map +1 -0
  249. package/dist/src/__tests__/integration/setup/claude.test.d.ts +5 -0
  250. package/dist/src/__tests__/integration/setup/claude.test.d.ts.map +1 -0
  251. package/dist/src/__tests__/integration/setup/claude.test.js +111 -0
  252. package/dist/src/__tests__/integration/setup/claude.test.js.map +1 -0
  253. package/dist/src/__tests__/integration/setup/cursor.test.d.ts +5 -0
  254. package/dist/src/__tests__/integration/setup/cursor.test.d.ts.map +1 -0
  255. package/dist/src/__tests__/integration/setup/cursor.test.js +166 -0
  256. package/dist/src/__tests__/integration/setup/cursor.test.js.map +1 -0
  257. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts +32 -0
  258. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts.map +1 -0
  259. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js +72 -0
  260. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js.map +1 -0
  261. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts +38 -0
  262. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts.map +1 -0
  263. package/dist/src/__tests__/integration/setup/helpers/test-project.js +83 -0
  264. package/dist/src/__tests__/integration/setup/helpers/test-project.js.map +1 -0
  265. package/dist/src/__tests__/integration/setup/validation.test.d.ts +5 -0
  266. package/dist/src/__tests__/integration/setup/validation.test.d.ts.map +1 -0
  267. package/dist/src/__tests__/integration/setup/validation.test.js +301 -0
  268. package/dist/src/__tests__/integration/setup/validation.test.js.map +1 -0
  269. package/dist/src/cli.d.ts.map +1 -1
  270. package/dist/src/cli.js +228 -18
  271. package/dist/src/cli.js.map +1 -1
  272. package/dist/src/commands/setup-existing.d.ts +25 -0
  273. package/dist/src/commands/setup-existing.d.ts.map +1 -0
  274. package/dist/src/commands/setup-existing.js +695 -0
  275. package/dist/src/commands/setup-existing.js.map +1 -0
  276. package/dist/vitest.config.d.ts.map +1 -1
  277. package/dist/vitest.config.js +4 -3
  278. package/dist/vitest.config.js.map +1 -1
  279. package/docs/README.md +3 -1
  280. package/docs/context.md +59 -0
  281. package/docs/design-issue-55.md +240 -0
  282. package/docs/design-issue-56.md +181 -0
  283. package/docs/michi-development/testing/manual-verification-flow.md +2242 -0
  284. package/docs/michi-development/testing/pre-publish-checklist.md +560 -0
  285. package/docs/plan.md +275 -0
  286. package/docs/user-guide/getting-started/github-token-setup.md +509 -0
  287. package/docs/{getting-started → user-guide/getting-started}/new-repository-setup.md +108 -28
  288. package/docs/{getting-started → user-guide/getting-started}/quick-start.md +73 -6
  289. package/docs/{getting-started → user-guide/getting-started}/setup.md +278 -3
  290. package/docs/{guides → user-guide/guides}/customization.md +3 -3
  291. package/docs/user-guide/guides/internationalization.md +540 -0
  292. package/docs/{guides → user-guide/guides}/multi-project.md +2 -2
  293. package/docs/{guides → user-guide/guides}/phase-automation.md +67 -9
  294. package/docs/user-guide/guides/workflow.md +582 -0
  295. package/docs/user-guide/hands-on/README.md +142 -0
  296. package/docs/user-guide/hands-on/claude-agent-setup.md +455 -0
  297. package/docs/user-guide/hands-on/claude-setup.md +398 -0
  298. package/docs/user-guide/hands-on/cursor-setup.md +352 -0
  299. package/docs/user-guide/hands-on/troubleshooting.md +964 -0
  300. package/docs/user-guide/hands-on/verification-checklist.md +438 -0
  301. package/docs/user-guide/hands-on/workflow-walkthrough.md +906 -0
  302. package/docs/user-guide/reference/config.md +564 -0
  303. package/docs/{reference → user-guide/reference}/quick-reference.md +75 -53
  304. package/docs/user-guide/release/ci-setup.md +541 -0
  305. package/docs/user-guide/release/release-flow.md +476 -0
  306. package/docs/user-guide/templates/test-specs/README.md +173 -0
  307. package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +547 -0
  308. package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +435 -0
  309. package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +454 -0
  310. package/docs/user-guide/templates/test-specs/security-test-spec-template.md +664 -0
  311. package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +328 -0
  312. package/docs/user-guide/testing/integration-tests.md +312 -0
  313. package/docs/user-guide/testing/tdd-cycle.md +349 -0
  314. package/docs/user-guide/testing/test-execution-flow.md +396 -0
  315. package/docs/user-guide/testing/test-failure-handling.md +521 -0
  316. package/docs/user-guide/testing/test-planning-flow.md +181 -0
  317. package/docs/user-guide/testing-strategy.md +185 -0
  318. package/docs/verification-guide.md +518 -0
  319. package/package.json +13 -3
  320. package/scripts/__tests__/create-project.test.ts +67 -49
  321. package/scripts/__tests__/jira-transitions.test.ts +225 -0
  322. package/scripts/__tests__/multi-project-estimate.test.ts +36 -30
  323. package/scripts/__tests__/setup-existing-project.test.ts +171 -6
  324. package/scripts/__tests__/setup-interactive.test.ts +52 -46
  325. package/scripts/__tests__/spec-impl-workflow.test.ts +429 -0
  326. package/scripts/__tests__/spec-loader.test.ts +199 -0
  327. package/scripts/__tests__/validate-phase.test.ts +78 -54
  328. package/scripts/config/config-schema.ts +89 -50
  329. package/scripts/config-interactive.ts +191 -136
  330. package/scripts/confluence-sync.ts +0 -12
  331. package/scripts/constants/__tests__/environments.test.ts +146 -0
  332. package/scripts/constants/__tests__/languages.test.ts +100 -0
  333. package/scripts/constants/environments.ts +81 -0
  334. package/scripts/constants/languages.ts +70 -0
  335. package/scripts/constants/test-commands.ts +96 -0
  336. package/scripts/create-project.ts +52 -22
  337. package/scripts/jira-sync.ts +767 -232
  338. package/scripts/markdown-to-confluence.ts +1 -1
  339. package/scripts/phase-runner.ts +1056 -63
  340. package/scripts/pr-automation.ts +0 -1
  341. package/scripts/pre-flight-check.ts +1 -1
  342. package/scripts/pre-publish-check.sh +311 -0
  343. package/scripts/quick-verify.sh +115 -0
  344. package/scripts/setup-existing-project.ts +306 -143
  345. package/scripts/setup-interactive.ts +4 -4
  346. package/scripts/spec-impl-workflow.ts +505 -0
  347. package/scripts/template/__tests__/renderer.test.ts +206 -0
  348. package/scripts/template/renderer.ts +133 -0
  349. package/scripts/test-execution-generator.ts +695 -0
  350. package/scripts/test-interactive.ts +779 -0
  351. package/scripts/test-new-features.ts +168 -0
  352. package/scripts/test-npm-package.sh +345 -0
  353. package/scripts/test-spec-generator.ts +574 -0
  354. package/scripts/test-workflow-stages.ts +53 -0
  355. package/scripts/utils/__tests__/aidlc-parser.test.ts +349 -0
  356. package/scripts/utils/__tests__/business-days.test.ts +214 -0
  357. package/scripts/utils/__tests__/config-loader.test.ts +1 -1
  358. package/scripts/utils/__tests__/config-validator.test.ts +309 -88
  359. package/scripts/utils/__tests__/env-config.test.ts +259 -0
  360. package/scripts/utils/__tests__/jira-issue-type-fetcher.test.ts +272 -0
  361. package/scripts/utils/__tests__/tasks-converter.test.ts +582 -0
  362. package/scripts/utils/__tests__/tasks-format-validator.test.ts +338 -0
  363. package/scripts/utils/__tests__/test-runner.test.ts +77 -0
  364. package/scripts/utils/aidlc-parser.ts +289 -0
  365. package/scripts/utils/business-days.ts +115 -0
  366. package/scripts/utils/ci-generator.ts +84 -0
  367. package/scripts/utils/config-loader.ts +2 -2
  368. package/scripts/utils/config-validator.ts +304 -117
  369. package/scripts/utils/confluence-approval.ts +167 -0
  370. package/scripts/utils/confluence-hierarchy.ts +2 -4
  371. package/scripts/utils/docker-generator.ts +151 -0
  372. package/scripts/utils/docker-requirement-detector.ts +153 -0
  373. package/scripts/utils/env-config.ts +526 -0
  374. package/scripts/utils/jira-issue-type-fetcher.ts +199 -0
  375. package/scripts/utils/language-detector.ts +139 -0
  376. package/scripts/utils/markdown-parser.ts +376 -0
  377. package/scripts/utils/project-detector.ts +192 -0
  378. package/scripts/utils/project-finder.ts +2 -2
  379. package/scripts/utils/release-notes-generator.ts +210 -0
  380. package/scripts/utils/spec-loader.ts +125 -0
  381. package/scripts/utils/spec-updater.ts +8 -1
  382. package/scripts/utils/tasks-converter.ts +601 -0
  383. package/scripts/utils/tasks-format-validator.ts +193 -0
  384. package/scripts/utils/template-applier.ts +202 -0
  385. package/scripts/utils/template-finder.ts +75 -0
  386. package/scripts/utils/test-config-generator.ts +210 -0
  387. package/scripts/utils/test-runner.ts +133 -0
  388. package/scripts/validate-phase.ts +186 -9
  389. package/scripts/workflow-orchestrator.ts +130 -12
  390. package/templates/ci/github-actions/java.yml +54 -0
  391. package/templates/ci/github-actions/nodejs.yml +46 -0
  392. package/templates/ci/github-actions/php.yml +52 -0
  393. package/templates/ci/screwdriver/java.yaml +17 -0
  394. package/templates/ci/screwdriver/nodejs.yaml +17 -0
  395. package/templates/ci/screwdriver/php.yaml +20 -0
  396. package/templates/claude/commands/kiro/kiro-spec-impl.md +244 -0
  397. package/templates/claude/commands/kiro/kiro-spec-tasks.md +354 -0
  398. package/templates/claude/commands/michi/confluence-sync.md +38 -0
  399. package/templates/claude/commands/michi/project-switch.md +36 -0
  400. package/templates/claude/rules/atlassian-integration.md +35 -0
  401. package/templates/claude/rules/michi-core.md +54 -0
  402. package/templates/claude-agent/README.md +31 -0
  403. package/templates/claude-agent/agents/.gitkeep +0 -0
  404. package/templates/claude-agent/agents/designer.md +79 -0
  405. package/templates/claude-agent/agents/developer.md +68 -0
  406. package/templates/claude-agent/agents/manager-agent.md +59 -0
  407. package/templates/claude-agent/agents/tester.md +101 -0
  408. package/templates/claude-agent/commands/kiro/.gitkeep +0 -0
  409. package/templates/claude-agent/commands/kiro/kiro-spec-impl.md +244 -0
  410. package/templates/claude-agent/commands/kiro/kiro-spec-tasks.md +354 -0
  411. package/templates/cline/rules/atlassian-integration.md +36 -0
  412. package/templates/cline/rules/michi-core.md +56 -0
  413. package/templates/codex/AGENTS.override.md +277 -0
  414. package/templates/codex/prompts/confluence-sync.md +177 -0
  415. package/templates/codex/rules/README.md +210 -0
  416. package/templates/common/.kiro/project.json.template +21 -0
  417. package/templates/cursor/commands/kiro/kiro-spec-impl.md +244 -0
  418. package/templates/cursor/commands/kiro/kiro-spec-tasks.md +354 -0
  419. package/templates/cursor/commands/michi/confluence-sync.md +76 -0
  420. package/templates/cursor/commands/michi/project-switch.md +69 -0
  421. package/templates/cursor/rules/atlassian-mcp.mdc +188 -0
  422. package/templates/cursor/rules/github-ssot.mdc +151 -0
  423. package/templates/cursor/rules/multi-project.mdc +81 -0
  424. package/templates/gemini/commands/README.md +41 -0
  425. package/templates/gemini/rules/GEMINI.md +80 -0
  426. package/docs/guides/workflow.md +0 -342
  427. package/docs/reference/config.md +0 -545
  428. package/scripts/setup-env.sh +0 -52
  429. package/scripts/setup-existing.sh +0 -152
  430. /package/docs/{contributing → michi-development/contributing}/development.md +0 -0
  431. /package/docs/{contributing → michi-development/contributing}/release.md +0 -0
  432. /package/docs/{testing-strategy.md → michi-development/testing-strategy.md} +0 -0
  433. /package/docs/{reference → user-guide/reference}/tasks-template.md +0 -0
@@ -9,7 +9,7 @@ import { validatePhase } from '../validate-phase.js';
9
9
  // fsモジュールのモック
10
10
  vi.mock('fs', () => ({
11
11
  existsSync: vi.fn(),
12
- readFileSync: vi.fn()
12
+ readFileSync: vi.fn(),
13
13
  }));
14
14
 
15
15
  // project-metaのモック
@@ -17,8 +17,8 @@ vi.mock('../utils/project-meta.js', () => ({
17
17
  loadProjectMeta: vi.fn(() => ({
18
18
  projectId: 'test-project',
19
19
  projectName: 'テストプロジェクト',
20
- jiraProjectKey: 'TEST'
21
- }))
20
+ jiraProjectKey: 'TEST',
21
+ })),
22
22
  }));
23
23
 
24
24
  describe('validatePhase', () => {
@@ -30,17 +30,19 @@ describe('validatePhase', () => {
30
30
  it('すべての必須項目が揃っている場合、validationが成功する', () => {
31
31
  // Arrange: requirementsフェーズを代表例としてテスト
32
32
  vi.mocked(existsSync).mockReturnValue(true);
33
- vi.mocked(readFileSync).mockReturnValue(JSON.stringify({
34
- confluence: {
35
- spaceKey: 'TEST',
36
- requirementsPageId: '12345'
37
- },
38
- milestones: {
39
- requirements: {
40
- completed: true
41
- }
42
- }
43
- }));
33
+ vi.mocked(readFileSync).mockReturnValue(
34
+ JSON.stringify({
35
+ confluence: {
36
+ spaceKey: 'TEST',
37
+ requirementsPageId: '12345',
38
+ },
39
+ milestones: {
40
+ requirements: {
41
+ completed: true,
42
+ },
43
+ },
44
+ }),
45
+ );
44
46
 
45
47
  // Act
46
48
  const result = validatePhase('test-feature', 'requirements');
@@ -54,19 +56,23 @@ describe('validatePhase', () => {
54
56
  it('Confluenceページが作成されていない場合、エラーを返す', () => {
55
57
  // Arrange
56
58
  vi.mocked(existsSync).mockReturnValue(true);
57
- vi.mocked(readFileSync).mockReturnValue(JSON.stringify({
58
- confluence: {
59
- spaceKey: 'TEST'
60
- // requirementsPageId が存在しない
61
- }
62
- }));
59
+ vi.mocked(readFileSync).mockReturnValue(
60
+ JSON.stringify({
61
+ confluence: {
62
+ spaceKey: 'TEST',
63
+ // requirementsPageId が存在しない
64
+ },
65
+ }),
66
+ );
63
67
 
64
68
  // Act
65
69
  const result = validatePhase('test-feature', 'requirements');
66
70
 
67
71
  // Assert
68
72
  expect(result.valid).toBe(false);
69
- expect(result.errors).toContain('❌ Confluenceページ(要件定義)が作成されていません');
73
+ expect(result.errors).toContain(
74
+ '❌ Confluenceページ(要件定義)が作成されていません',
75
+ );
70
76
  });
71
77
  });
72
78
 
@@ -74,23 +80,27 @@ describe('validatePhase', () => {
74
80
  it('designフェーズ: 前提条件(requirements完了)をチェックする', () => {
75
81
  // Arrange
76
82
  vi.mocked(existsSync).mockReturnValue(true);
77
- vi.mocked(readFileSync).mockReturnValue(JSON.stringify({
78
- confluence: {
79
- designPageId: '67890'
80
- },
81
- milestones: {
82
- requirements: {
83
- completed: false // 前提条件が満たされていない
84
- }
85
- }
86
- }));
83
+ vi.mocked(readFileSync).mockReturnValue(
84
+ JSON.stringify({
85
+ confluence: {
86
+ designPageId: '67890',
87
+ },
88
+ milestones: {
89
+ requirements: {
90
+ completed: false, // 前提条件が満たされていない
91
+ },
92
+ },
93
+ }),
94
+ );
87
95
 
88
96
  // Act
89
97
  const result = validatePhase('test-feature', 'design');
90
98
 
91
99
  // Assert
92
100
  expect(result.valid).toBe(false);
93
- expect(result.errors).toContain('❌ 要件定義が完了していません(前提条件)');
101
+ expect(result.errors).toContain(
102
+ '❌ 要件定義が完了していません(前提条件)',
103
+ );
94
104
  });
95
105
 
96
106
  it('tasksフェーズ: JIRA Epic/Story作成をチェックする', () => {
@@ -103,12 +113,12 @@ describe('validatePhase', () => {
103
113
  return JSON.stringify({
104
114
  milestones: {
105
115
  design: {
106
- completed: true
107
- }
116
+ completed: true,
117
+ },
108
118
  },
109
119
  jira: {
110
120
  // epicKey が存在しない(重要なチェック)
111
- }
121
+ },
112
122
  });
113
123
  });
114
124
 
@@ -130,16 +140,16 @@ describe('validatePhase', () => {
130
140
  return JSON.stringify({
131
141
  milestones: {
132
142
  design: {
133
- completed: true
134
- }
143
+ completed: true,
144
+ },
135
145
  },
136
146
  jira: {
137
147
  epicKey: 'TEST-1',
138
148
  stories: {
139
149
  created: 5,
140
- total: 5
141
- }
142
- }
150
+ total: 5,
151
+ },
152
+ },
143
153
  });
144
154
  });
145
155
 
@@ -148,7 +158,9 @@ describe('validatePhase', () => {
148
158
 
149
159
  // Assert
150
160
  expect(result.valid).toBe(true); // 警告だけなのでvalid
151
- expect(result.warnings).toContain('⚠️ tasks.mdに曜日表記(月、火、水...)が含まれていません');
161
+ expect(result.warnings).toContain(
162
+ '⚠️ tasks.mdに曜日表記(月、火、水...)が含まれていません',
163
+ );
152
164
  });
153
165
  });
154
166
 
@@ -156,30 +168,42 @@ describe('validatePhase', () => {
156
168
  it('spec.jsonが存在しない場合、エラーを返す', () => {
157
169
  // Arrange
158
170
  // requirements.mdは存在するが、spec.jsonは存在しない
159
- vi.mocked(existsSync).mockImplementation((path: string | Buffer | URL) => {
160
- const pathStr = typeof path === 'string' ? path : path instanceof URL ? path.pathname : path.toString();
161
- if (pathStr.includes('requirements.md')) {
162
- return true;
163
- }
164
- if (pathStr.includes('spec.json')) {
171
+ vi.mocked(existsSync).mockImplementation(
172
+ (path: string | Buffer | URL) => {
173
+ const pathStr =
174
+ typeof path === 'string'
175
+ ? path
176
+ : path instanceof URL
177
+ ? path.pathname
178
+ : path.toString();
179
+ if (pathStr.includes('requirements.md')) {
180
+ return true;
181
+ }
182
+ if (pathStr.includes('spec.json')) {
183
+ return false;
184
+ }
165
185
  return false;
166
- }
167
- return false;
168
- });
186
+ },
187
+ );
169
188
 
170
189
  // Act
171
190
  const result = validatePhase('test-feature', 'requirements');
172
191
 
173
192
  // Assert: エラーをスローせず、errors配列にエラーを含めて返す
174
193
  expect(result.valid).toBe(false);
175
- expect(result.errors).toContainEqual(expect.stringContaining('spec.json読み込みエラー'));
176
- expect(result.errors).toContainEqual(expect.stringContaining('spec.json not found'));
194
+ expect(result.errors).toContainEqual(
195
+ expect.stringContaining('spec.json読み込みエラー'),
196
+ );
197
+ expect(result.errors).toContainEqual(
198
+ expect.stringContaining('spec.json not found'),
199
+ );
177
200
  });
178
201
 
179
202
  it('不正なフェーズ名の場合、エラーをスローする', () => {
180
203
  // Act & Assert
181
- expect(() => validatePhase('test-feature', 'invalid' as any)).toThrow('Unknown phase: invalid');
204
+ expect(() =>
205
+ validatePhase('test-feature', 'invalid' as 'requirements'),
206
+ ).toThrow('Unknown phase: invalid');
182
207
  });
183
208
  });
184
209
  });
185
-
@@ -17,7 +17,7 @@ export const ConfluencePageCreationGranularitySchema = z.enum([
17
17
  'single',
18
18
  'by-section',
19
19
  'by-hierarchy',
20
- 'manual'
20
+ 'manual',
21
21
  ]);
22
22
 
23
23
  /**
@@ -27,41 +27,54 @@ export const ConfluenceHierarchyStructureSchema = z.object({
27
27
  mode: ConfluenceHierarchyModeSchema.optional(),
28
28
  parentPageTitle: z.string().optional(),
29
29
  createDocTypeParents: z.boolean().optional(),
30
- structure: z.record(
31
- z.string(),
32
- z.object({
33
- parent: z.string().optional(),
34
- title: z.string().optional(),
35
- children: z.array(
36
- z.object({
37
- section: z.string(),
38
- title: z.string()
39
- })
40
- ).optional(),
41
- pages: z.array(
42
- z.object({
43
- title: z.string(),
44
- sections: z.array(z.string()),
45
- labels: z.array(z.string()).optional()
46
- })
47
- ).optional()
48
- })
49
- ).optional()
30
+ structure: z
31
+ .record(
32
+ z.string(),
33
+ z.object({
34
+ parent: z.string().optional(),
35
+ title: z.string().optional(),
36
+ children: z
37
+ .array(
38
+ z.object({
39
+ section: z.string(),
40
+ title: z.string(),
41
+ }),
42
+ )
43
+ .optional(),
44
+ pages: z
45
+ .array(
46
+ z.object({
47
+ title: z.string(),
48
+ sections: z.array(z.string()),
49
+ labels: z.array(z.string()).optional(),
50
+ }),
51
+ )
52
+ .optional(),
53
+ }),
54
+ )
55
+ .optional(),
50
56
  });
51
57
 
52
58
  /**
53
59
  * Confluence設定スキーマ
54
60
  */
55
61
  export const ConfluenceConfigSchema = z.object({
56
- pageCreationGranularity: ConfluencePageCreationGranularitySchema.default('single'),
57
- pageTitleFormat: z.string().default('[{projectName}] {featureName} {docTypeLabel}'),
58
- autoLabels: z.array(z.string()).default(['{projectLabel}', '{docType}', '{featureName}', 'github-sync']),
59
- spaces: z.object({
60
- requirements: z.string().optional(),
61
- design: z.string().optional(),
62
- tasks: z.string().optional()
63
- }).optional(),
64
- hierarchy: ConfluenceHierarchyStructureSchema.optional()
62
+ pageCreationGranularity:
63
+ ConfluencePageCreationGranularitySchema.default('single'),
64
+ pageTitleFormat: z
65
+ .string()
66
+ .default('[{projectName}] {featureName} {docTypeLabel}'),
67
+ autoLabels: z
68
+ .array(z.string())
69
+ .default(['{projectLabel}', '{docType}', '{featureName}', 'github-sync']),
70
+ spaces: z
71
+ .object({
72
+ requirements: z.string().optional(),
73
+ design: z.string().optional(),
74
+ tasks: z.string().optional(),
75
+ })
76
+ .optional(),
77
+ hierarchy: ConfluenceHierarchyStructureSchema.optional(),
65
78
  });
66
79
 
67
80
  /**
@@ -70,7 +83,7 @@ export const ConfluenceConfigSchema = z.object({
70
83
  export const JiraStoryCreationGranularitySchema = z.enum([
71
84
  'all',
72
85
  'by-phase',
73
- 'selected-phases'
86
+ 'selected-phases',
74
87
  ]);
75
88
 
76
89
  /**
@@ -78,6 +91,15 @@ export const JiraStoryCreationGranularitySchema = z.enum([
78
91
  */
79
92
  export const JiraStoryPointsSchema = z.enum(['auto', 'manual', 'disabled']);
80
93
 
94
+ /**
95
+ * JIRA ステータスマッピングスキーマ
96
+ * spec-impl ワークフローで使用するステータス名
97
+ */
98
+ export const JiraStatusMappingSchema = z.object({
99
+ inProgress: z.string().default('In Progress'),
100
+ readyForReview: z.string().default('Ready for Review'),
101
+ });
102
+
81
103
  /**
82
104
  * JIRA設定スキーマ
83
105
  */
@@ -85,25 +107,34 @@ export const JiraConfigSchema = z.object({
85
107
  storyCreationGranularity: JiraStoryCreationGranularitySchema.default('all'),
86
108
  createEpic: z.boolean().default(true),
87
109
  storyPoints: JiraStoryPointsSchema.default('auto'),
88
- autoLabels: z.array(z.string()).default(['{projectLabel}', '{featureName}', '{phaseLabel}']),
89
- issueTypes: z.object({
90
- epic: z.string().default('Epic'),
91
- story: z.string().nullish().default(null), // null | undefined | string
92
- subtask: z.string().nullish().default(null) // null | undefined | string
93
- }).optional(),
94
- selectedPhases: z.array(z.string()).optional()
110
+ autoLabels: z
111
+ .array(z.string())
112
+ .default(['{projectLabel}', '{featureName}', '{phaseLabel}']),
113
+ issueTypes: z
114
+ .object({
115
+ epic: z.string().default('Epic'),
116
+ story: z.string().nullish().default(null), // null | undefined | string
117
+ subtask: z.string().nullish().default(null), // null | undefined | string
118
+ })
119
+ .optional(),
120
+ selectedPhases: z.array(z.string()).optional(),
121
+ statusMapping: JiraStatusMappingSchema.optional(),
95
122
  });
96
123
 
97
124
  /**
98
125
  * ワークフロー設定スキーマ
99
126
  */
100
127
  export const WorkflowConfigSchema = z.object({
101
- enabledPhases: z.array(z.string()).default(['requirements', 'design', 'tasks']),
102
- approvalGates: z.object({
103
- requirements: z.array(z.string()).optional(),
104
- design: z.array(z.string()).optional(),
105
- release: z.array(z.string()).optional()
106
- }).optional()
128
+ enabledPhases: z
129
+ .array(z.string())
130
+ .default(['requirements', 'design', 'tasks']),
131
+ approvalGates: z
132
+ .object({
133
+ requirements: z.array(z.string()).optional(),
134
+ design: z.array(z.string()).optional(),
135
+ release: z.array(z.string()).optional(),
136
+ })
137
+ .optional(),
107
138
  });
108
139
 
109
140
  /**
@@ -112,19 +143,27 @@ export const WorkflowConfigSchema = z.object({
112
143
  export const AppConfigSchema = z.object({
113
144
  confluence: ConfluenceConfigSchema.optional(),
114
145
  jira: JiraConfigSchema.optional(),
115
- workflow: WorkflowConfigSchema.optional()
146
+ workflow: WorkflowConfigSchema.optional(),
116
147
  });
117
148
 
118
149
  /**
119
150
  * 設定の型定義
120
151
  */
121
- export type ConfluenceHierarchyMode = z.infer<typeof ConfluenceHierarchyModeSchema>;
122
- export type ConfluencePageCreationGranularity = z.infer<typeof ConfluencePageCreationGranularitySchema>;
123
- export type ConfluenceHierarchyStructure = z.infer<typeof ConfluenceHierarchyStructureSchema>;
152
+ export type ConfluenceHierarchyMode = z.infer<
153
+ typeof ConfluenceHierarchyModeSchema
154
+ >;
155
+ export type ConfluencePageCreationGranularity = z.infer<
156
+ typeof ConfluencePageCreationGranularitySchema
157
+ >;
158
+ export type ConfluenceHierarchyStructure = z.infer<
159
+ typeof ConfluenceHierarchyStructureSchema
160
+ >;
124
161
  export type ConfluenceConfig = z.infer<typeof ConfluenceConfigSchema>;
125
- export type JiraStoryCreationGranularity = z.infer<typeof JiraStoryCreationGranularitySchema>;
162
+ export type JiraStoryCreationGranularity = z.infer<
163
+ typeof JiraStoryCreationGranularitySchema
164
+ >;
126
165
  export type JiraStoryPoints = z.infer<typeof JiraStoryPointsSchema>;
166
+ export type JiraStatusMapping = z.infer<typeof JiraStatusMappingSchema>;
127
167
  export type JiraConfig = z.infer<typeof JiraConfigSchema>;
128
168
  export type WorkflowConfig = z.infer<typeof WorkflowConfigSchema>;
129
169
  export type AppConfig = z.infer<typeof AppConfigSchema>;
130
-