@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
@@ -0,0 +1,125 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { ENV_CONFIG, getEnvironmentConfig, isSupportedEnvironment, getSupportedEnvironments, } from '../environments.js';
3
+ describe('environments', () => {
4
+ describe('ENV_CONFIG', () => {
5
+ it('should have entries for all environments', () => {
6
+ expect(ENV_CONFIG.claude).toBeDefined();
7
+ expect(ENV_CONFIG['claude-agent']).toBeDefined();
8
+ expect(ENV_CONFIG.cursor).toBeDefined();
9
+ expect(ENV_CONFIG.gemini).toBeDefined();
10
+ expect(ENV_CONFIG.codex).toBeDefined();
11
+ expect(ENV_CONFIG.cline).toBeDefined();
12
+ });
13
+ it('should have correct structure for claude', () => {
14
+ const config = ENV_CONFIG.claude;
15
+ expect(config.rulesDir).toBe('.claude/rules');
16
+ expect(config.commandsDir).toBe('.claude/commands/kiro');
17
+ expect(config.templateSource).toBe('claude');
18
+ });
19
+ it('should have correct structure for claude-agent', () => {
20
+ const config = ENV_CONFIG['claude-agent'];
21
+ expect(config.rulesDir).toBe('.claude/agents');
22
+ expect(config.commandsDir).toBe('.claude/commands/kiro');
23
+ expect(config.templateSource).toBe('claude-agent');
24
+ });
25
+ it('should have correct structure for cursor', () => {
26
+ const config = ENV_CONFIG.cursor;
27
+ expect(config.rulesDir).toBe('.cursor/rules');
28
+ expect(config.commandsDir).toBe('.cursor/commands/kiro');
29
+ expect(config.templateSource).toBe('cursor');
30
+ });
31
+ it('should have correct structure for gemini', () => {
32
+ const config = ENV_CONFIG.gemini;
33
+ expect(config.rulesDir).toBe('.gemini');
34
+ expect(config.commandsDir).toBe('.gemini/extensions');
35
+ expect(config.templateSource).toBe('gemini');
36
+ });
37
+ it('should have correct structure for codex', () => {
38
+ const config = ENV_CONFIG.codex;
39
+ expect(config.rulesDir).toBe('.codex/docs');
40
+ expect(config.commandsDir).toBe('.codex/docs');
41
+ expect(config.templateSource).toBe('codex');
42
+ });
43
+ it('should have correct structure for cline', () => {
44
+ const config = ENV_CONFIG.cline;
45
+ expect(config.rulesDir).toBe('.clinerules/rules');
46
+ expect(config.commandsDir).toBe('.clinerules/commands');
47
+ expect(config.templateSource).toBe('cline');
48
+ });
49
+ it('should have all required properties for each environment', () => {
50
+ for (const env of Object.keys(ENV_CONFIG)) {
51
+ const config = ENV_CONFIG[env];
52
+ expect(config).toHaveProperty('rulesDir');
53
+ expect(config).toHaveProperty('commandsDir');
54
+ expect(config).toHaveProperty('templateSource');
55
+ expect(typeof config.rulesDir).toBe('string');
56
+ expect(typeof config.commandsDir).toBe('string');
57
+ expect(typeof config.templateSource).toBe('string');
58
+ }
59
+ });
60
+ });
61
+ describe('getEnvironmentConfig', () => {
62
+ it('should return config for valid environment', () => {
63
+ const config = getEnvironmentConfig('claude');
64
+ expect(config).toBe(ENV_CONFIG.claude);
65
+ });
66
+ it('should return config for all supported environments', () => {
67
+ const environments = [
68
+ 'claude',
69
+ 'claude-agent',
70
+ 'cursor',
71
+ 'gemini',
72
+ 'codex',
73
+ 'cline',
74
+ ];
75
+ for (const env of environments) {
76
+ const config = getEnvironmentConfig(env);
77
+ expect(config).toBeDefined();
78
+ expect(config).toBe(ENV_CONFIG[env]);
79
+ }
80
+ });
81
+ });
82
+ describe('isSupportedEnvironment', () => {
83
+ it('should return true for supported environments', () => {
84
+ expect(isSupportedEnvironment('claude')).toBe(true);
85
+ expect(isSupportedEnvironment('claude-agent')).toBe(true);
86
+ expect(isSupportedEnvironment('cursor')).toBe(true);
87
+ expect(isSupportedEnvironment('gemini')).toBe(true);
88
+ expect(isSupportedEnvironment('codex')).toBe(true);
89
+ expect(isSupportedEnvironment('cline')).toBe(true);
90
+ });
91
+ it('should return false for unsupported environments', () => {
92
+ expect(isSupportedEnvironment('invalid')).toBe(false);
93
+ expect(isSupportedEnvironment('vscode')).toBe(false);
94
+ expect(isSupportedEnvironment('')).toBe(false);
95
+ });
96
+ it('should work as type guard', () => {
97
+ const env = 'cursor';
98
+ if (isSupportedEnvironment(env)) {
99
+ // TypeScript should recognize env as Environment here
100
+ const config = ENV_CONFIG[env];
101
+ expect(config).toBeDefined();
102
+ }
103
+ });
104
+ });
105
+ describe('getSupportedEnvironments', () => {
106
+ it('should return all supported environments', () => {
107
+ const environments = getSupportedEnvironments();
108
+ expect(environments).toHaveLength(6);
109
+ expect(environments).toContain('claude');
110
+ expect(environments).toContain('claude-agent');
111
+ expect(environments).toContain('cursor');
112
+ expect(environments).toContain('gemini');
113
+ expect(environments).toContain('codex');
114
+ expect(environments).toContain('cline');
115
+ });
116
+ it('should return array with correct type', () => {
117
+ const environments = getSupportedEnvironments();
118
+ expect(Array.isArray(environments)).toBe(true);
119
+ environments.forEach((env) => {
120
+ expect(isSupportedEnvironment(env)).toBe(true);
121
+ });
122
+ });
123
+ });
124
+ });
125
+ //# sourceMappingURL=environments.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environments.test.js","sourceRoot":"","sources":["../../../../scripts/constants/__tests__/environments.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=languages.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.test.d.ts","sourceRoot":"","sources":["../../../../scripts/constants/__tests__/languages.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { supportedLanguages, DEV_GUIDELINES_MAP, getDevGuidelines, isSupportedLanguage } from '../languages.js';
3
+ describe('languages', () => {
4
+ describe('supportedLanguages', () => {
5
+ it('should contain 12 languages', () => {
6
+ expect(supportedLanguages).toHaveLength(12);
7
+ });
8
+ it('should include expected languages', () => {
9
+ expect(supportedLanguages).toContain('ja');
10
+ expect(supportedLanguages).toContain('en');
11
+ expect(supportedLanguages).toContain('zh-TW');
12
+ expect(supportedLanguages).toContain('zh');
13
+ expect(supportedLanguages).toContain('es');
14
+ expect(supportedLanguages).toContain('pt');
15
+ expect(supportedLanguages).toContain('de');
16
+ expect(supportedLanguages).toContain('fr');
17
+ expect(supportedLanguages).toContain('ru');
18
+ expect(supportedLanguages).toContain('it');
19
+ expect(supportedLanguages).toContain('ko');
20
+ expect(supportedLanguages).toContain('ar');
21
+ });
22
+ });
23
+ describe('DEV_GUIDELINES_MAP', () => {
24
+ it('should have entries for all supported languages', () => {
25
+ for (const lang of supportedLanguages) {
26
+ expect(DEV_GUIDELINES_MAP[lang]).toBeDefined();
27
+ expect(DEV_GUIDELINES_MAP[lang]).not.toBe('');
28
+ }
29
+ });
30
+ it('should have English guideline', () => {
31
+ expect(DEV_GUIDELINES_MAP.en).toBe('- Think in English, generate responses in English');
32
+ });
33
+ it('should have Japanese guideline with bilingual instruction', () => {
34
+ expect(DEV_GUIDELINES_MAP.ja).toContain('Think in English');
35
+ expect(DEV_GUIDELINES_MAP.ja).toContain('日本語');
36
+ });
37
+ it('should contain bilingual instructions', () => {
38
+ // Most languages should mention "Think in English" in some form
39
+ const languagesWithEnglishInstruction = ['ja', 'en', 'es', 'pt', 'de', 'fr', 'ru', 'it', 'ko', 'ar'];
40
+ for (const lang of languagesWithEnglishInstruction) {
41
+ expect(DEV_GUIDELINES_MAP[lang]).toContain('Think in English');
42
+ }
43
+ // Chinese languages have their own format
44
+ expect(DEV_GUIDELINES_MAP['zh-TW']).toContain('以英文思考');
45
+ expect(DEV_GUIDELINES_MAP.zh).toContain('以英文思考');
46
+ });
47
+ });
48
+ describe('getDevGuidelines', () => {
49
+ it('should return guidelines for valid language', () => {
50
+ const guidelines = getDevGuidelines('ja');
51
+ expect(guidelines).toBe(DEV_GUIDELINES_MAP.ja);
52
+ });
53
+ it('should return guidelines for all supported languages', () => {
54
+ for (const lang of supportedLanguages) {
55
+ const guidelines = getDevGuidelines(lang);
56
+ expect(guidelines).toBeDefined();
57
+ expect(guidelines).toBe(DEV_GUIDELINES_MAP[lang]);
58
+ }
59
+ });
60
+ });
61
+ describe('isSupportedLanguage', () => {
62
+ it('should return true for supported languages', () => {
63
+ expect(isSupportedLanguage('ja')).toBe(true);
64
+ expect(isSupportedLanguage('en')).toBe(true);
65
+ expect(isSupportedLanguage('zh-TW')).toBe(true);
66
+ });
67
+ it('should return false for unsupported languages', () => {
68
+ expect(isSupportedLanguage('xx')).toBe(false);
69
+ expect(isSupportedLanguage('invalid')).toBe(false);
70
+ expect(isSupportedLanguage('')).toBe(false);
71
+ });
72
+ it('should work as type guard', () => {
73
+ const lang = 'ja';
74
+ if (isSupportedLanguage(lang)) {
75
+ // TypeScript should recognize lang as SupportedLanguage here
76
+ const guidelines = DEV_GUIDELINES_MAP[lang];
77
+ expect(guidelines).toBeDefined();
78
+ }
79
+ });
80
+ });
81
+ });
82
+ //# sourceMappingURL=languages.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.test.js","sourceRoot":"","sources":["../../../../scripts/constants/__tests__/languages.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Environment configuration mapping for cc-sdd environments
3
+ *
4
+ * Issue #37: 環境別コピー実装
5
+ */
6
+ export interface EnvironmentConfig {
7
+ rulesDir: string;
8
+ commandsDir: string;
9
+ templateSource: string;
10
+ }
11
+ export type Environment = 'claude' | 'claude-agent' | 'cursor' | 'gemini' | 'codex' | 'cline';
12
+ export declare const ENV_CONFIG: Record<Environment, EnvironmentConfig>;
13
+ /**
14
+ * Get environment configuration
15
+ *
16
+ * @param env - Environment name
17
+ * @returns Environment configuration
18
+ */
19
+ export declare const getEnvironmentConfig: (env: Environment) => EnvironmentConfig;
20
+ /**
21
+ * Validate if an environment is supported
22
+ *
23
+ * @param env - Environment name to validate
24
+ * @returns True if supported, false otherwise
25
+ */
26
+ export declare const isSupportedEnvironment: (env: string) => env is Environment;
27
+ /**
28
+ * Get all supported environments
29
+ *
30
+ * @returns Array of supported environment names
31
+ */
32
+ export declare const getSupportedEnvironments: () => Environment[];
33
+ //# sourceMappingURL=environments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../../scripts/constants/environments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,cAAc,GACd,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,CAAC;AAEZ,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CA+B7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,WAAW,KAAG,iBAEvD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,WAE3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAO,WAAW,EAEtD,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Environment configuration mapping for cc-sdd environments
3
+ *
4
+ * Issue #37: 環境別コピー実装
5
+ */
6
+ export const ENV_CONFIG = {
7
+ claude: {
8
+ rulesDir: '.claude/rules',
9
+ commandsDir: '.claude/commands/kiro',
10
+ templateSource: 'claude',
11
+ },
12
+ 'claude-agent': {
13
+ rulesDir: '.claude/agents',
14
+ commandsDir: '.claude/commands/kiro',
15
+ templateSource: 'claude-agent',
16
+ },
17
+ cursor: {
18
+ rulesDir: '.cursor/rules',
19
+ commandsDir: '.cursor/commands/kiro',
20
+ templateSource: 'cursor',
21
+ },
22
+ gemini: {
23
+ rulesDir: '.gemini',
24
+ commandsDir: '.gemini/extensions',
25
+ templateSource: 'gemini',
26
+ },
27
+ codex: {
28
+ rulesDir: '.codex/docs',
29
+ commandsDir: '.codex/docs',
30
+ templateSource: 'codex',
31
+ },
32
+ cline: {
33
+ rulesDir: '.clinerules/rules',
34
+ commandsDir: '.clinerules/commands',
35
+ templateSource: 'cline',
36
+ },
37
+ };
38
+ /**
39
+ * Get environment configuration
40
+ *
41
+ * @param env - Environment name
42
+ * @returns Environment configuration
43
+ */
44
+ export const getEnvironmentConfig = (env) => {
45
+ return ENV_CONFIG[env];
46
+ };
47
+ /**
48
+ * Validate if an environment is supported
49
+ *
50
+ * @param env - Environment name to validate
51
+ * @returns True if supported, false otherwise
52
+ */
53
+ export const isSupportedEnvironment = (env) => {
54
+ return env in ENV_CONFIG;
55
+ };
56
+ /**
57
+ * Get all supported environments
58
+ *
59
+ * @returns Array of supported environment names
60
+ */
61
+ export const getSupportedEnvironments = () => {
62
+ return Object.keys(ENV_CONFIG);
63
+ };
64
+ //# sourceMappingURL=environments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environments.js","sourceRoot":"","sources":["../../../scripts/constants/environments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,MAAM,CAAC,MAAM,UAAU,GAA2C;IAChE,MAAM,EAAE;QACN,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,uBAAuB;QACpC,cAAc,EAAE,QAAQ;KACzB;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,uBAAuB;QACpC,cAAc,EAAE,cAAc;KAC/B;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,uBAAuB;QACpC,cAAc,EAAE,QAAQ;KACzB;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oBAAoB;QACjC,cAAc,EAAE,QAAQ;KACzB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,aAAa;QAC1B,cAAc,EAAE,OAAO;KACxB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,sBAAsB;QACnC,cAAc,EAAE,OAAO;KACxB;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAgB,EAAqB,EAAE;IAC1E,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAsB,EAAE;IACxE,OAAO,GAAG,IAAI,UAAU,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAkB,EAAE;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAkB,CAAC;AAClD,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Supported languages and development guidelines map
3
+ *
4
+ * Issue #37: 環境別コピー実装
5
+ */
6
+ export declare const supportedLanguages: readonly ["ja", "en", "zh-TW", "zh", "es", "pt", "de", "fr", "ru", "it", "ko", "ar"];
7
+ export type SupportedLanguage = typeof supportedLanguages[number];
8
+ export declare const DEV_GUIDELINES_MAP: Record<SupportedLanguage, string>;
9
+ /**
10
+ * Get development guidelines for a specific language
11
+ *
12
+ * @param lang - Language code
13
+ * @returns Development guidelines string
14
+ */
15
+ export declare const getDevGuidelines: (lang: SupportedLanguage) => string;
16
+ /**
17
+ * Validate if a language code is supported
18
+ *
19
+ * @param lang - Language code to validate
20
+ * @returns True if supported, false otherwise
21
+ */
22
+ export declare const isSupportedLanguage: (lang: string) => lang is SupportedLanguage;
23
+ //# sourceMappingURL=languages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../scripts/constants/languages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,kBAAkB,sFAGrB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAmChE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,iBAAiB,KAAG,MAE1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,IAAI,IAAI,iBAE1D,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Supported languages and development guidelines map
3
+ *
4
+ * Issue #37: 環境別コピー実装
5
+ */
6
+ export const supportedLanguages = [
7
+ 'ja', 'en', 'zh-TW', 'zh', 'es', 'pt',
8
+ 'de', 'fr', 'ru', 'it', 'ko', 'ar'
9
+ ];
10
+ export const DEV_GUIDELINES_MAP = {
11
+ en: '- Think in English, generate responses in English',
12
+ ja: '- Think in English, but generate responses in Japanese ' +
13
+ '(思考は英語、回答の生成は日本語で行うように)',
14
+ 'zh-TW': '- 以英文思考,但以繁體中文生成回應' +
15
+ '(Think in English, generate in Traditional Chinese)',
16
+ zh: '- 以英文思考,但以简体中文生成回复' +
17
+ '(Think in English, generate in Simplified Chinese)',
18
+ es: '- Think in English, generate responses in Spanish ' +
19
+ '(Piensa en inglés, genera respuestas en español)',
20
+ pt: '- Think in English, generate responses in Portuguese ' +
21
+ '(Pense em inglês, gere respostas em português)',
22
+ de: '- Think in English, generate responses in German ' +
23
+ '(Denke auf Englisch, formuliere Antworten auf Deutsch)',
24
+ fr: '- Think in English, generate responses in French ' +
25
+ '(Pensez en anglais, générez des réponses en français)',
26
+ ru: '- Think in English, generate responses in Russian ' +
27
+ '(Думай по-английски, отвечай по-русски)',
28
+ it: '- Think in English, generate responses in Italian ' +
29
+ '(Pensa in inglese, genera risposte in italiano)',
30
+ ko: '- Think in English, generate responses in Korean ' +
31
+ '(영어로 사고하고, 한국어로 응답을 생성하세요)',
32
+ ar: '- Think in English, generate responses in Arabic ' +
33
+ '(فكر بالإنجليزية وأجب بالعربية)',
34
+ };
35
+ /**
36
+ * Get development guidelines for a specific language
37
+ *
38
+ * @param lang - Language code
39
+ * @returns Development guidelines string
40
+ */
41
+ export const getDevGuidelines = (lang) => {
42
+ return DEV_GUIDELINES_MAP[lang];
43
+ };
44
+ /**
45
+ * Validate if a language code is supported
46
+ *
47
+ * @param lang - Language code to validate
48
+ * @returns True if supported, false otherwise
49
+ */
50
+ export const isSupportedLanguage = (lang) => {
51
+ return supportedLanguages.includes(lang);
52
+ };
53
+ //# sourceMappingURL=languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../scripts/constants/languages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACrC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC1B,CAAC;AAIX,MAAM,CAAC,MAAM,kBAAkB,GAAsC;IACnE,EAAE,EAAE,mDAAmD;IAEvD,EAAE,EAAE,yDAAyD;QACvD,yBAAyB;IAE/B,OAAO,EAAE,oBAAoB;QAClB,qDAAqD;IAEhE,EAAE,EAAE,oBAAoB;QAClB,oDAAoD;IAE1D,EAAE,EAAE,oDAAoD;QAClD,kDAAkD;IAExD,EAAE,EAAE,uDAAuD;QACrD,gDAAgD;IAEtD,EAAE,EAAE,mDAAmD;QACjD,wDAAwD;IAE9D,EAAE,EAAE,mDAAmD;QACjD,uDAAuD;IAE7D,EAAE,EAAE,oDAAoD;QAClD,yCAAyC;IAE/C,EAAE,EAAE,oDAAoD;QAClD,iDAAiD;IAEvD,EAAE,EAAE,mDAAmD;QACjD,4BAA4B;IAElC,EAAE,EAAE,mDAAmD;QACjD,iCAAiC;CACxC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAuB,EAAU,EAAE;IAClE,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAA6B,EAAE;IAC7E,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * テストコマンド定数定義
3
+ *
4
+ * 各言語のテストコマンドをCI/CDテンプレートから取得
5
+ * Reference: templates/ci/github-actions/*.yml
6
+ */
7
+ /**
8
+ * プロジェクト言語の型定義
9
+ */
10
+ export type ProjectLanguage = 'Node.js/TypeScript' | 'Java' | 'PHP' | 'Python' | 'Go' | 'Rust';
11
+ /**
12
+ * テストコマンドの型定義
13
+ */
14
+ export interface TestCommands {
15
+ test: string;
16
+ lint: string;
17
+ build: string;
18
+ }
19
+ /**
20
+ * 言語別テストコマンドマッピング
21
+ * CI/CDテンプレート(templates/ci/github-actions/*.yml)から取得
22
+ */
23
+ export declare const TEST_COMMANDS_MAP: Record<ProjectLanguage, TestCommands>;
24
+ /**
25
+ * 言語に対応するテストコマンドを取得
26
+ *
27
+ * @param language - プロジェクト言語
28
+ * @returns テストコマンド一式
29
+ *
30
+ * @example
31
+ * getTestCommands('Java') // => { test: './gradlew test', ... }
32
+ * getTestCommands('Node.js') // => { test: 'npm test', ... } (部分一致)
33
+ * getTestCommands('Unknown') // => Node.js/TypeScript のコマンド (デフォルト)
34
+ */
35
+ export declare function getTestCommands(language: string): TestCommands;
36
+ //# sourceMappingURL=test-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-commands.d.ts","sourceRoot":"","sources":["../../../scripts/constants/test-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,MAAM,GACN,KAAK,GACL,QAAQ,GACR,IAAI,GACJ,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,YAAY,CA+BnE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAoB9D"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * テストコマンド定数定義
3
+ *
4
+ * 各言語のテストコマンドをCI/CDテンプレートから取得
5
+ * Reference: templates/ci/github-actions/*.yml
6
+ */
7
+ /**
8
+ * 言語別テストコマンドマッピング
9
+ * CI/CDテンプレート(templates/ci/github-actions/*.yml)から取得
10
+ */
11
+ export const TEST_COMMANDS_MAP = {
12
+ 'Node.js/TypeScript': {
13
+ test: 'npm test',
14
+ lint: 'npm run lint',
15
+ build: 'npm run build'
16
+ },
17
+ 'Java': {
18
+ test: './gradlew test',
19
+ lint: './gradlew checkstyleMain checkstyleTest',
20
+ build: './gradlew build'
21
+ },
22
+ 'PHP': {
23
+ test: 'composer test',
24
+ lint: 'composer phpstan',
25
+ build: 'composer install --no-dev --optimize-autoloader'
26
+ },
27
+ 'Python': {
28
+ test: 'pytest',
29
+ lint: 'flake8 src tests',
30
+ build: 'python -m build'
31
+ },
32
+ 'Go': {
33
+ test: 'go test ./...',
34
+ lint: 'golangci-lint run',
35
+ build: 'go build ./...'
36
+ },
37
+ 'Rust': {
38
+ test: 'cargo test',
39
+ lint: 'cargo clippy -- -D warnings',
40
+ build: 'cargo build --release'
41
+ }
42
+ };
43
+ /**
44
+ * 言語に対応するテストコマンドを取得
45
+ *
46
+ * @param language - プロジェクト言語
47
+ * @returns テストコマンド一式
48
+ *
49
+ * @example
50
+ * getTestCommands('Java') // => { test: './gradlew test', ... }
51
+ * getTestCommands('Node.js') // => { test: 'npm test', ... } (部分一致)
52
+ * getTestCommands('Unknown') // => Node.js/TypeScript のコマンド (デフォルト)
53
+ */
54
+ export function getTestCommands(language) {
55
+ // 完全一致
56
+ if (language in TEST_COMMANDS_MAP) {
57
+ return TEST_COMMANDS_MAP[language];
58
+ }
59
+ // 部分一致フォールバック("Node.js" → "Node.js/TypeScript")
60
+ const partialMatch = Object.keys(TEST_COMMANDS_MAP).find(key => key.toLowerCase().includes(language.toLowerCase()) ||
61
+ language.toLowerCase().includes(key.toLowerCase()));
62
+ if (partialMatch) {
63
+ console.warn(`⚠️ 言語 "${language}" は部分一致で "${partialMatch}" として扱います`);
64
+ return TEST_COMMANDS_MAP[partialMatch];
65
+ }
66
+ // デフォルト: Node.js/TypeScript
67
+ console.warn(`⚠️ 未知の言語 "${language}"。デフォルト(Node.js/TypeScript)を使用します`);
68
+ return TEST_COMMANDS_MAP['Node.js/TypeScript'];
69
+ }
70
+ //# sourceMappingURL=test-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-commands.js","sourceRoot":"","sources":["../../../scripts/constants/test-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0C;IACtE,oBAAoB,EAAE;QACpB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,eAAe;KACvB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,yCAAyC;QAC/C,KAAK,EAAE,iBAAiB;KACzB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,iDAAiD;KACzD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,iBAAiB;KACzB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,gBAAgB;KACxB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,uBAAuB;KAC/B;CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO;IACP,IAAI,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QAClC,OAAO,iBAAiB,CAAC,QAA2B,CAAC,CAAC;IACxD,CAAC;IAED,gDAAgD;IAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC7D,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAClD,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CACnD,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,WAAW,QAAQ,aAAa,YAAY,WAAW,CAAC,CAAC;QACtE,OAAO,iBAAiB,CAAC,YAA+B,CAAC,CAAC;IAC5D,CAAC;IAED,4BAA4B;IAC5B,OAAO,CAAC,IAAI,CAAC,cAAc,QAAQ,mCAAmC,CAAC,CAAC;IACxE,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;AACjD,CAAC"}
@@ -2,6 +2,10 @@
2
2
  /**
3
3
  * 新規プロジェクト自動セットアップスクリプト
4
4
  *
5
+ * Issue #35: cc-sdd準拠の多環境対応基盤
6
+ * - templates/ディレクトリから読み込み
7
+ * - プレースホルダーはそのまま(実行時にAIが解釈)
8
+ *
5
9
  * 使い方:
6
10
  * npm run create-project -- \
7
11
  * --name "20240115-payment-api" \
@@ -1 +1 @@
1
- {"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../scripts/create-project.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
1
+ {"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../scripts/create-project.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}