@k2works/claude-code-booster 6.3.1 → 6.4.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 (292) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +61 -61
  3. package/bin/claude-code-booster +113 -113
  4. package/lib/assets/.claude/README.md +287 -287
  5. package/lib/assets/.claude/agents/xp-architect.md +250 -250
  6. package/lib/assets/.claude/agents/xp-executive.md +207 -207
  7. package/lib/assets/.claude/agents/xp-interaction-designer.md +239 -239
  8. package/lib/assets/.claude/agents/xp-product-manager.md +245 -245
  9. package/lib/assets/.claude/agents/xp-programmer.md +268 -268
  10. package/lib/assets/.claude/agents/xp-project-manager.md +229 -229
  11. package/lib/assets/.claude/agents/xp-technical-writer.md +224 -224
  12. package/lib/assets/.claude/agents/xp-tester.md +265 -265
  13. package/lib/assets/.claude/agents/xp-user-representative.md +204 -204
  14. package/lib/assets/.claude/scripts/generate-inception-deck.mjs +911 -911
  15. package/lib/assets/.claude/settings.json +11 -11
  16. package/lib/assets/.claude/skills/ai-agent-guidelines/SKILL.md +111 -111
  17. package/lib/assets/.claude/skills/analyzing-architecture/SKILL.md +83 -83
  18. package/lib/assets/.claude/skills/analyzing-business-architecture/SKILL.md +122 -122
  19. package/lib/assets/.claude/skills/analyzing-business-case/SKILL.md +148 -148
  20. package/lib/assets/.claude/skills/analyzing-business-strategy/SKILL.md +277 -277
  21. package/lib/assets/.claude/skills/analyzing-data-model/SKILL.md +77 -77
  22. package/lib/assets/.claude/skills/analyzing-domain-model/SKILL.md +117 -117
  23. package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +84 -84
  24. package/lib/assets/.claude/skills/analyzing-non-functional/SKILL.md +95 -95
  25. package/lib/assets/.claude/skills/analyzing-operation/SKILL.md +95 -95
  26. package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +91 -91
  27. package/lib/assets/.claude/skills/analyzing-review/SKILL.md +174 -174
  28. package/lib/assets/.claude/skills/analyzing-tech-stack/SKILL.md +101 -101
  29. package/lib/assets/.claude/skills/analyzing-test-strategy/SKILL.md +89 -89
  30. package/lib/assets/.claude/skills/analyzing-ui-design/SKILL.md +80 -80
  31. package/lib/assets/.claude/skills/analyzing-usecases/SKILL.md +72 -72
  32. package/lib/assets/.claude/skills/closing-iteration/SKILL.md +176 -176
  33. package/lib/assets/.claude/skills/creating-adr/SKILL.md +117 -117
  34. package/lib/assets/.claude/skills/creating-development-strategy/SKILL.md +151 -127
  35. package/lib/assets/.claude/skills/creating-iteration-report/SKILL.md +210 -210
  36. package/lib/assets/.claude/skills/creating-journal/SKILL.md +140 -140
  37. package/lib/assets/.claude/skills/creating-manual/SKILL.md +199 -199
  38. package/lib/assets/.claude/skills/creating-release-report/SKILL.md +161 -161
  39. package/lib/assets/.claude/skills/creating-slides/SKILL.md +86 -86
  40. package/lib/assets/.claude/skills/creating-slides/agents/openai.yaml +4 -4
  41. package/lib/assets/.claude/skills/creating-slides/references/manga-css.md +45 -45
  42. package/lib/assets/.claude/skills/creating-slides/scripts/slide_tools.py +239 -239
  43. package/lib/assets/.claude/skills/developing-backend/SKILL.md +100 -100
  44. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +93 -93
  45. package/lib/assets/.claude/skills/developing-release/SKILL.md +120 -120
  46. package/lib/assets/.claude/skills/developing-review/SKILL.md +175 -175
  47. package/lib/assets/.claude/skills/developing-uiux-review/SKILL.md +207 -207
  48. package/lib/assets/.claude/skills/generating-bmc/SKILL.md +123 -123
  49. package/lib/assets/.claude/skills/generating-slides/SKILL.md +94 -94
  50. package/lib/assets/.claude/skills/git-commit/SKILL.md +81 -81
  51. package/lib/assets/.claude/skills/killing-processes/SKILL.md +44 -44
  52. package/lib/assets/.claude/skills/migrating-ai-dlc/evals/evals.json +59 -59
  53. package/lib/assets/.claude/skills/opening-iteration/SKILL.md +124 -124
  54. package/lib/assets/.claude/skills/operating-backup/SKILL.md +59 -59
  55. package/lib/assets/.claude/skills/operating-cicd/SKILL.md +54 -54
  56. package/lib/assets/.claude/skills/operating-deploy/SKILL.md +67 -67
  57. package/lib/assets/.claude/skills/operating-docs/SKILL.md +219 -219
  58. package/lib/assets/.claude/skills/operating-provision/SKILL.md +77 -77
  59. package/lib/assets/.claude/skills/operating-qt/SKILL.md +147 -147
  60. package/lib/assets/.claude/skills/operating-review/SKILL.md +171 -171
  61. package/lib/assets/.claude/skills/operating-script/SKILL.md +145 -145
  62. package/lib/assets/.claude/skills/operating-setup/SKILL.md +63 -63
  63. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +110 -110
  64. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +172 -172
  65. package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +161 -161
  66. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +149 -149
  67. package/lib/assets/.claude/skills/planning-releases/SKILL.md +121 -121
  68. package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +262 -262
  69. package/lib/assets/.claude/skills/syncing-github-project/SKILL.md +151 -151
  70. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +91 -91
  71. package/lib/assets/.claude/skills/validating-design/SKILL.md +130 -130
  72. package/lib/assets/.claude/skills/validating-iteration-plan/SKILL.md +238 -238
  73. package/lib/assets/.claude/skills/validating-operating-setup/SKILL.md +118 -118
  74. package/lib/assets/.devcontainer/devcontainer.json +37 -37
  75. package/lib/assets/.env.example +32 -32
  76. package/lib/assets/.gitattributes +4 -4
  77. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  78. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  79. package/lib/assets/AGENTS.md +102 -102
  80. package/lib/assets/README.md +304 -304
  81. package/lib/assets/docker-compose.yml +33 -33
  82. package/lib/assets/docs/adr/index.md +10 -10
  83. package/lib/assets/docs/assets/css/extra.css +29 -29
  84. package/lib/assets/docs/assets/js/extra.js +48 -48
  85. package/lib/assets/docs/assets/js/mathjax.js +27 -27
  86. package/lib/assets/docs/design/index.md +44 -44
  87. package/lib/assets/docs/development/index.md +39 -39
  88. package/lib/assets/docs/index.md +1 -1
  89. package/lib/assets/docs/log.md +3 -0
  90. package/lib/assets/docs/operation/index.md +41 -41
  91. package/lib/assets/docs/reference/BDD/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +766 -0
  92. package/lib/assets/docs/reference/CodexCLIMCP/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/343/203/225/343/203/255/343/203/274.md +555 -555
  93. package/lib/assets/docs/reference/CodexCLIMCP/343/202/265/343/203/274/343/203/220/343/203/274/350/250/255/345/256/232/346/211/213/351/240/206.md +351 -351
  94. package/lib/assets/docs/reference/Java/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +592 -592
  95. package/lib/assets/docs/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -965
  96. package/lib/assets/docs/reference/SonarQube/343/203/255/343/203/274/343/202/253/343/203/253/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +652 -652
  97. package/lib/assets/docs/reference/TypeScript/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +476 -476
  98. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +460 -460
  99. package/lib/assets/docs/reference/Vim/346/223/215/344/275/234/343/203/236/343/203/213/343/203/245/343/202/242/343/203/253.md +177 -177
  100. package/lib/assets/docs/reference/images/Ansoff.drawio.svg +3 -3
  101. package/lib/assets/docs/reference/images/BMC.drawio.svg +3 -3
  102. package/lib/assets/docs/reference/images/BrandBasicStrategy.drawio.svg +3 -3
  103. package/lib/assets/docs/reference/images/BrandCategorization.drawio.svg +3 -3
  104. package/lib/assets/docs/reference/images/BrandRecurutementStrategy.drawio.svg +3 -3
  105. package/lib/assets/docs/reference/images/BrandValue.drawio.svg +3 -3
  106. package/lib/assets/docs/reference/images/BusinessActivitiy.svg +3 -3
  107. package/lib/assets/docs/reference/images/HRM.drawio.svg +3 -3
  108. package/lib/assets/docs/reference/images/MarketingStructure.drawio.svg +3 -3
  109. package/lib/assets/docs/reference/images/OrganizationElemnts.svg +3 -3
  110. package/lib/assets/docs/reference/images/PPM.drawio.svg +3 -3
  111. package/lib/assets/docs/reference/images/PositioningMap.drawio.svg +3 -3
  112. package/lib/assets/docs/reference/images/ProductLayer.drawio.svg +3 -3
  113. package/lib/assets/docs/reference/images/ProductMix.drawio.svg +3 -3
  114. package/lib/assets/docs/reference/images/SWOT.drawio.svg +3 -3
  115. package/lib/assets/docs/reference/images/TargetMarket.drawio.svg +3 -3
  116. package/lib/assets/docs/reference/images/ThreeGenericStrategies.drawio.svg +3 -3
  117. package/lib/assets/docs/reference/images/VRIO.drawio.svg +3 -3
  118. package/lib/assets/docs/reference/images/ValueChain.drawio.svg +3 -3
  119. package/lib/assets/docs/reference/index.md +1 -0
  120. package/lib/assets/docs/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +250 -250
  121. package/lib/assets/docs/reference//343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +2226 -2226
  122. package/lib/assets/docs/reference//343/202/244/343/203/263/343/203/225/343/203/251/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +1888 -1888
  123. package/lib/assets/docs/reference//343/202/250/343/202/257/343/202/271/343/203/210/343/203/252/343/203/274/343/203/240/343/203/227/343/203/255/343/202/260/343/203/251/343/203/237/343/203/263/343/202/260.md +549 -549
  124. package/lib/assets/docs/reference//343/202/263/343/203/274/343/203/207/343/202/243/343/203/263/343/202/260/343/201/250/343/203/206/343/202/271/343/203/210/343/202/254/343/202/244/343/203/211.md +715 -715
  125. package/lib/assets/docs/reference//343/203/206/343/202/271/343/203/210/346/210/246/347/225/245/343/202/254/343/202/244/343/203/211.md +1323 -1323
  126. package/lib/assets/docs/reference//343/203/207/343/203/274/343/202/277/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +321 -321
  127. package/lib/assets/docs/reference//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +609 -609
  128. package/lib/assets/docs/reference//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +537 -537
  129. package/lib/assets/docs/reference//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +699 -699
  130. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +470 -470
  131. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/203/273/343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273/343/202/254/343/202/244/343/203/211.md +580 -580
  132. package/lib/assets/docs/reference//343/203/255/343/202/270/343/202/253/343/203/253/343/202/267/343/203/263/343/202/255/343/203/263/343/202/260.md +1376 -1376
  133. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +2647 -2647
  134. package/lib/assets/docs/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +675 -675
  135. package/lib/assets/docs/reference//347/265/214/345/226/266/346/210/246/347/225/245/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +575 -575
  136. package/lib/assets/docs/reference//350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1258 -1258
  137. package/lib/assets/docs/reference//350/250/200/350/252/236/345/210/245/351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +527 -527
  138. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +1492 -1492
  139. package/lib/assets/docs/reference//351/201/213/347/224/250/343/202/271/343/202/257/343/203/252/343/203/227/343/203/210/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +430 -430
  140. package/lib/assets/docs/reference//351/201/213/347/224/250/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +402 -402
  141. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +314 -314
  142. package/lib/assets/docs/reference//351/235/236/346/251/237/350/203/275/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1246 -1246
  143. package/lib/assets/docs/requirements/index.md +17 -17
  144. package/lib/assets/docs/review/index.md +5 -5
  145. package/lib/assets/docs/strategy/index.md +17 -17
  146. package/lib/assets/docs/template/ADR.md +39 -39
  147. package/lib/assets/docs/template/AWS/343/202/271/343/203/206/343/203/274/343/202/270/343/203/263/343/202/260/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +1375 -1375
  148. package/lib/assets/docs/template/AWS/343/203/227/343/203/255/343/203/200/343/202/257/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +643 -643
  149. package/lib/assets/docs/template/README.md +59 -59
  150. package/lib/assets/docs/template/index.md +24 -24
  151. package/lib/assets/docs/template//343/201/276/343/201/232/343/201/223/343/202/214/343/202/222/350/252/255/343/202/202/343/201/206/343/203/252/343/202/271/343/203/210.md +21 -21
  152. package/lib/assets/docs/template//343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +556 -556
  153. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +68 -68
  154. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273.md +336 -336
  155. package/lib/assets/docs/template//343/202/244/343/203/263/343/202/273/343/203/227/343/202/267/343/203/247/343/203/263/343/203/207/343/203/203/343/202/255.md +22 -22
  156. package/lib/assets/docs/template//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243.md +388 -388
  157. package/lib/assets/docs/template//343/203/252/343/203/252/343/203/274/343/202/271/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +284 -284
  158. package/lib/assets/docs/template//343/203/252/343/203/252/343/203/274/343/202/271/350/250/210/347/224/273.md +289 -289
  159. package/lib/assets/docs/template//344/272/213/344/276/213/345/210/206/346/236/220.md +522 -522
  160. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +582 -582
  161. package/lib/assets/docs/template//345/256/214/345/205/250/345/275/242/345/274/217/343/201/256/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271.md +69 -69
  162. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  163. package/lib/assets/docs/template//350/250/255/350/250/210.md +183 -183
  164. package/lib/assets/docs/template//351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +697 -697
  165. package/lib/assets/gulpfile.js +29 -29
  166. package/lib/assets/mkdocs.yml +147 -138
  167. package/lib/assets/ops/docker/sonarqube-local/docker-compose.yml +57 -57
  168. package/lib/assets/ops/scripts/journal.js +180 -180
  169. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  170. package/lib/assets/ops/scripts/release.js +431 -431
  171. package/lib/assets/ops/scripts/sonar_local.js +726 -726
  172. package/lib/assets/ops/scripts/ssh.js +190 -190
  173. package/lib/assets/ops/scripts/vault.js +299 -299
  174. package/lib/assets/package-lock.json +1673 -1673
  175. package/lib/assets/package.json +45 -45
  176. package/lib/gulpfile.js +37 -37
  177. package/package.json +41 -41
  178. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.json +0 -20
  179. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.md +0 -13
  180. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/eval_metadata.json +0 -14
  181. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/grading.json +0 -39
  182. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/001-db.md +0 -12
  183. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -20
  184. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/index.md +0 -4
  185. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/data-model.md +0 -12
  186. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/index.md +0 -3
  187. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/index.md +0 -10
  188. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/log.md +0 -7
  189. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  190. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy.md +0 -12
  191. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/index.md +0 -4
  192. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  193. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/report.md +0 -76
  194. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/grading.json +0 -39
  195. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/001-db.md +0 -12
  196. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -20
  197. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/index.md +0 -4
  198. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/data-model.md +0 -12
  199. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/index.md +0 -3
  200. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/index.md +0 -10
  201. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/log.md +0 -7
  202. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  203. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy.md +0 -12
  204. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/index.md +0 -4
  205. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  206. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/report.md +0 -22
  207. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/eval_metadata.json +0 -13
  208. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/grading.json +0 -34
  209. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/001-db.md +0 -12
  210. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  211. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/index.md +0 -3
  212. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/data-model.md +0 -14
  213. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/index.md +0 -3
  214. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/index.md +0 -10
  215. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/log.md +0 -7
  216. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  217. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy.md +0 -12
  218. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/index.md +0 -4
  219. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  220. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/report.md +0 -61
  221. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/grading.json +0 -34
  222. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/001-db.md +0 -12
  223. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  224. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/index.md +0 -3
  225. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/data-model.md +0 -13
  226. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/index.md +0 -3
  227. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/index.md +0 -10
  228. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/log.md +0 -7
  229. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  230. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy.md +0 -12
  231. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/index.md +0 -4
  232. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  233. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/report.md +0 -18
  234. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/eval_metadata.json +0 -13
  235. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/grading.json +0 -34
  236. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/001-db.md +0 -12
  237. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  238. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/index.md +0 -3
  239. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/data-model.md +0 -12
  240. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/index.md +0 -3
  241. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/index.md +0 -10
  242. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/log.md +0 -7
  243. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy-old.md +0 -13
  244. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy.md +0 -12
  245. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/index.md +0 -7
  246. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  247. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/report.md +0 -83
  248. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/grading.json +0 -34
  249. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/001-db.md +0 -12
  250. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  251. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/index.md +0 -3
  252. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/data-model.md +0 -12
  253. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/index.md +0 -3
  254. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/index.md +0 -10
  255. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/log.md +0 -7
  256. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy-old.md +0 -14
  257. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy.md +0 -12
  258. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/index.md +0 -4
  259. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  260. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/report.md +0 -15
  261. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/review.html +0 -1325
  262. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.json +0 -20
  263. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.md +0 -13
  264. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/eval_metadata.json +0 -15
  265. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/grading.json +0 -44
  266. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/adr/index.md +0 -10
  267. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/index.md +0 -15
  268. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/log.md +0 -5
  269. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -966
  270. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/index.md +0 -6
  271. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +0 -261
  272. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +0 -480
  273. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +0 -681
  274. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/report.md +0 -85
  275. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/grading.json +0 -44
  276. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/adr/index.md +0 -8
  277. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/index.md +0 -11
  278. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/log.md +0 -7
  279. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -964
  280. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/index.md +0 -9
  281. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +0 -250
  282. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +0 -469
  283. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +0 -677
  284. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/report.md +0 -49
  285. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/eval_metadata.json +0 -13
  286. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/grading.json +0 -34
  287. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/index.md +0 -7
  288. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/log.md +0 -7
  289. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/metrics/churn.md +0 -9
  290. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/metrics/income-statement.md +0 -15
  291. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/report.md +0 -147
  292. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/review.html +0 -1325
@@ -1,431 +1,431 @@
1
- 'use strict';
2
-
3
- import fs from 'fs';
4
- import path from 'path';
5
- import { execSync } from 'child_process';
6
-
7
- // ============================================
8
- // 設定
9
- // ============================================
10
-
11
- /**
12
- * リリース対象のパッケージディレクトリ一覧を返す。
13
- * モノレポの場合は apps/packages 配下を追加する。
14
- * @param {string} rootDir - プロジェクトルート
15
- * @returns {string[]} パッケージディレクトリの絶対パス配列
16
- */
17
- function discoverPackageDirs(rootDir) {
18
- const dirs = [rootDir];
19
- const candidates = ['apps', 'packages'];
20
-
21
- for (const candidate of candidates) {
22
- const dir = path.join(rootDir, candidate);
23
- if (!fs.existsSync(dir)) continue;
24
- const entries = fs.readdirSync(dir, { withFileTypes: true });
25
- for (const entry of entries) {
26
- if (!entry.isDirectory()) continue;
27
- const pkgJson = path.join(dir, entry.name, 'package.json');
28
- if (fs.existsSync(pkgJson)) {
29
- dirs.push(path.join(dir, entry.name));
30
- }
31
- }
32
- }
33
-
34
- return dirs;
35
- }
36
-
37
- // ============================================
38
- // ヘルパー関数
39
- // ============================================
40
-
41
- /**
42
- * root の package.json からバージョンを読み取る
43
- * @param {string} rootDir - プロジェクトルート
44
- * @returns {string} 現在のバージョン (例: "0.1.0")
45
- */
46
- function getCurrentVersion(rootDir) {
47
- const pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf8'));
48
- return pkg.version;
49
- }
50
-
51
- /**
52
- * ドライラン用の簡易 semver 計算
53
- * @param {string} version - 現在のバージョン (例: "0.1.0")
54
- * @param {string} type - バンプの種類 ("patch" | "minor" | "major")
55
- * @returns {string} 新しいバージョン
56
- */
57
- function semverBump(version, type) {
58
- const [major, minor, patch] = version.split('.').map(Number);
59
- switch (type) {
60
- case 'major':
61
- return `${major + 1}.0.0`;
62
- case 'minor':
63
- return `${major}.${minor + 1}.0`;
64
- case 'patch':
65
- return `${major}.${minor}.${patch + 1}`;
66
- default:
67
- throw new Error(`Unknown bump type: ${type}`);
68
- }
69
- }
70
-
71
- /**
72
- * 対象パッケージのバージョンを同期更新
73
- * @param {string} rootDir - プロジェクトルート
74
- * @param {string} type - バンプの種類 ("patch" | "minor" | "major")
75
- * @returns {string} 新しいバージョン
76
- */
77
- function bumpVersions(rootDir, type) {
78
- const dirs = discoverPackageDirs(rootDir);
79
-
80
- for (const dir of dirs) {
81
- execSync(`npm version ${type} --no-git-tag-version`, {
82
- cwd: dir,
83
- stdio: 'pipe',
84
- });
85
- }
86
-
87
- return getCurrentVersion(rootDir);
88
- }
89
-
90
- /**
91
- * 直近タグから HEAD までの git log を Conventional Commits で分類し Markdown を生成
92
- * @param {string} rootDir - プロジェクトルート
93
- * @param {string} version - リリースバージョン
94
- * @returns {string} CHANGELOG エントリ(Markdown)
95
- */
96
- function generateChangelog(rootDir, version) {
97
- let lastTag;
98
- try {
99
- lastTag = execSync('git describe --tags --abbrev=0', {
100
- cwd: rootDir,
101
- stdio: 'pipe',
102
- encoding: 'utf8',
103
- }).trim();
104
- } catch {
105
- lastTag = null;
106
- }
107
-
108
- const range = lastTag ? `${lastTag}..HEAD` : 'HEAD';
109
- let logOutput;
110
- try {
111
- logOutput = execSync(`git log ${range} --pretty=format:"%h|||%s"`, {
112
- cwd: rootDir,
113
- stdio: 'pipe',
114
- encoding: 'utf8',
115
- }).trim();
116
- } catch {
117
- logOutput = '';
118
- }
119
-
120
- if (!logOutput) {
121
- return buildChangelogEntry(version, {});
122
- }
123
-
124
- const categories = {
125
- feat: { title: 'Features', commits: [] },
126
- fix: { title: 'Bug Fixes', commits: [] },
127
- docs: { title: 'Documentation', commits: [] },
128
- refactor: { title: 'Refactoring', commits: [] },
129
- test: { title: 'Tests', commits: [] },
130
- chore: { title: 'Chores', commits: [] },
131
- perf: { title: 'Performance', commits: [] },
132
- ci: { title: 'CI', commits: [] },
133
- style: { title: 'Styles', commits: [] },
134
- build: { title: 'Build', commits: [] },
135
- other: { title: 'Other', commits: [] },
136
- };
137
-
138
- for (const line of logOutput.split('\n')) {
139
- if (!line.trim()) continue;
140
- const [hash, ...rest] = line.split('|||');
141
- const subject = rest.join('|||');
142
- const match = subject.match(/^(\w+)(?:\(.+?\))?:\s*(.+)$/);
143
- if (match) {
144
- const type = match[1].toLowerCase();
145
- const message = match[2];
146
- if (categories[type]) {
147
- categories[type].commits.push({ hash: hash.trim(), message });
148
- } else {
149
- categories.other.commits.push({ hash: hash.trim(), message: subject });
150
- }
151
- } else {
152
- categories.other.commits.push({ hash: hash.trim(), message: subject });
153
- }
154
- }
155
-
156
- return buildChangelogEntry(version, categories);
157
- }
158
-
159
- /**
160
- * CHANGELOG エントリを Markdown で構築
161
- * @param {string} version
162
- * @param {Object} categories
163
- * @returns {string}
164
- */
165
- function buildChangelogEntry(version, categories) {
166
- const date = new Date().toISOString().slice(0, 10);
167
- const lines = [`## [${version}] - ${date}`, ''];
168
-
169
- let hasContent = false;
170
- for (const [, cat] of Object.entries(categories)) {
171
- if (cat.commits && cat.commits.length > 0) {
172
- hasContent = true;
173
- lines.push(`### ${cat.title}`, '');
174
- for (const c of cat.commits) {
175
- lines.push(`- ${c.message} (${c.hash})`);
176
- }
177
- lines.push('');
178
- }
179
- }
180
-
181
- if (!hasContent) {
182
- lines.push('- No notable changes', '');
183
- }
184
-
185
- return lines.join('\n');
186
- }
187
-
188
- /**
189
- * CHANGELOG.md の先頭にエントリを追加(なければ新規作成)
190
- * @param {string} rootDir - プロジェクトルート
191
- * @param {string} entry - 追加する CHANGELOG エントリ
192
- */
193
- function updateChangelog(rootDir, entry) {
194
- const changelogPath = path.join(rootDir, 'CHANGELOG.md');
195
- const header = '# Changelog\n\n';
196
-
197
- if (fs.existsSync(changelogPath)) {
198
- const existing = fs.readFileSync(changelogPath, 'utf8');
199
- const withoutHeader = existing.replace(/^# Changelog\s*\n*/, '');
200
- fs.writeFileSync(changelogPath, header + entry + '\n' + withoutHeader);
201
- } else {
202
- fs.writeFileSync(changelogPath, header + entry);
203
- }
204
- }
205
-
206
- /**
207
- * 変更ファイルをステージング → commit → tag
208
- * @param {string} rootDir - プロジェクトルート
209
- * @param {string} version - リリースバージョン
210
- */
211
- function createGitCommitAndTag(rootDir, version) {
212
- const filesToStage = collectFilesToStage(rootDir);
213
-
214
- for (const file of filesToStage) {
215
- execSync(`git add "${file}"`, { cwd: rootDir, stdio: 'pipe' });
216
- }
217
-
218
- execSync(`git commit -m "release: v${version}"`, {
219
- cwd: rootDir,
220
- stdio: 'pipe',
221
- env: { ...process.env, USER_APPROVED_COMMIT: '1' },
222
- });
223
-
224
- execSync(`git tag -a "v${version}" -m "v${version}"`, {
225
- cwd: rootDir,
226
- stdio: 'pipe',
227
- });
228
- }
229
-
230
- /**
231
- * ステージング対象のファイルパスを収集
232
- * @param {string} rootDir - プロジェクトルート
233
- * @returns {string[]} 相対パスの配列
234
- */
235
- function collectFilesToStage(rootDir) {
236
- const files = ['package.json', 'CHANGELOG.md'];
237
- const dirs = discoverPackageDirs(rootDir);
238
-
239
- for (const dir of dirs) {
240
- if (dir === rootDir) continue;
241
- const relative = path.relative(rootDir, dir);
242
- files.push(path.join(relative, 'package.json'));
243
- }
244
-
245
- return files;
246
- }
247
-
248
- /**
249
- * リリース結果のサマリーを表示
250
- * @param {string} oldVersion - 旧バージョン
251
- * @param {string} newVersion - 新バージョン
252
- */
253
- function printSummary(oldVersion, newVersion) {
254
- console.log('');
255
- console.log('=== Release Summary ===');
256
- console.log(` Version: ${oldVersion} -> ${newVersion}`);
257
- console.log(` Tag: v${newVersion}`);
258
- console.log(` Commit: release: v${newVersion}`);
259
- console.log('');
260
- console.log('Next steps:');
261
- console.log(' git push && git push --tags');
262
- console.log('');
263
- }
264
-
265
- // ============================================
266
- // コマンド実行ヘルパー
267
- // ============================================
268
-
269
- /**
270
- * シェルコマンドを実行し、失敗時に done コールバックへエラーを渡す
271
- * @param {string} command - 実行するコマンド
272
- * @param {string} rootDir - 実行ディレクトリ
273
- * @param {Function} done - コールバック
274
- */
275
- function runCommandInDir(command, rootDir, done) {
276
- try {
277
- execSync(command, { cwd: rootDir, stdio: 'inherit' });
278
- done();
279
- } catch (error) {
280
- done(error);
281
- }
282
- }
283
-
284
- // ============================================
285
- // タスク登録
286
- // ============================================
287
-
288
- /**
289
- * 指定されたタイプのリリースタスクを生成
290
- * @param {string} rootDir - プロジェクトルート
291
- * @param {string} type - "patch" | "minor" | "major"
292
- * @returns {Function} gulp タスク関数
293
- */
294
- function createReleaseTask(rootDir, type) {
295
- const task = (done) => {
296
- try {
297
- const oldVersion = getCurrentVersion(rootDir);
298
- console.log(`[1/4] バージョンを更新 (${type})...`);
299
- const newVersion = bumpVersions(rootDir, type);
300
-
301
- console.log('[2/4] CHANGELOG を生成...');
302
- const entry = generateChangelog(rootDir, newVersion);
303
- updateChangelog(rootDir, entry);
304
-
305
- console.log('[3/4] git commit + tag...');
306
- createGitCommitAndTag(rootDir, newVersion);
307
-
308
- console.log('[4/4] サマリー表示');
309
- printSummary(oldVersion, newVersion);
310
-
311
- done();
312
- } catch (error) {
313
- done(error);
314
- }
315
- };
316
- task.displayName = `release:${type}:execute`;
317
- return task;
318
- }
319
-
320
- /**
321
- * リリースタスクを gulp に登録する
322
- * @param {import('gulp').Gulp} gulp - Gulp インスタンス
323
- * @param {{ rootDir?: string }} [options] - オプション
324
- * @param {string} [options.rootDir] - プロジェクトルート(省略時は gulpfile の 2 階層上)
325
- */
326
- export default function (gulp, options = {}) {
327
- const rootDir = options.rootDir || path.resolve(process.cwd());
328
-
329
- // ──────────────────────────────────────────────
330
- // preflight: 品質ゲート
331
- // ──────────────────────────────────────────────
332
-
333
- gulp.task('release:preflight:clean', (done) => {
334
- console.log('=== Release Preflight ===');
335
- console.log('[1/5] Working tree がクリーンか確認...');
336
- try {
337
- const status = execSync('git status --porcelain', {
338
- cwd: rootDir,
339
- stdio: 'pipe',
340
- encoding: 'utf8',
341
- }).trim();
342
- if (status) {
343
- done(new Error('Working tree is not clean. Commit or stash your changes first.\n' + status));
344
- return;
345
- }
346
- console.log(' -> Clean');
347
- done();
348
- } catch (error) {
349
- done(error);
350
- }
351
- });
352
-
353
- gulp.task('release:preflight:lint', (done) => {
354
- console.log('[2/5] Lint...');
355
- runCommandInDir('npm run lint', rootDir, done);
356
- });
357
-
358
- gulp.task('release:preflight:test', (done) => {
359
- console.log('[3/5] Test...');
360
- runCommandInDir('npm run test', rootDir, done);
361
- });
362
-
363
- gulp.task('release:preflight:build', (done) => {
364
- console.log('[4/5] Build...');
365
- runCommandInDir('npm run build', rootDir, done);
366
- });
367
-
368
- gulp.task('release:preflight:e2e', (done) => {
369
- console.log('[5/5] E2E Test...');
370
- runCommandInDir('npm run test:e2e', rootDir, done);
371
- });
372
-
373
- gulp.task(
374
- 'release:preflight',
375
- gulp.series(
376
- 'release:preflight:clean',
377
- 'release:preflight:lint',
378
- 'release:preflight:test',
379
- 'release:preflight:build',
380
- 'release:preflight:e2e'
381
- )
382
- );
383
-
384
- // ──────────────────────────────────────────────
385
- // release:patch / minor / major
386
- // ──────────────────────────────────────────────
387
-
388
- gulp.task('release:patch', gulp.series('release:preflight', createReleaseTask(rootDir, 'patch')));
389
- gulp.task('release:minor', gulp.series('release:preflight', createReleaseTask(rootDir, 'minor')));
390
- gulp.task('release:major', gulp.series('release:preflight', createReleaseTask(rootDir, 'major')));
391
-
392
- // ──────────────────────────────────────────────
393
- // release:dry-run
394
- // ──────────────────────────────────────────────
395
-
396
- gulp.task('release:dry-run', (done) => {
397
- try {
398
- const currentVersion = getCurrentVersion(rootDir);
399
- console.log('=== Release Dry Run ===');
400
- console.log('');
401
- console.log(`Current version: ${currentVersion}`);
402
- console.log('');
403
- console.log('Version preview:');
404
- console.log(` patch: ${currentVersion} -> ${semverBump(currentVersion, 'patch')}`);
405
- console.log(` minor: ${currentVersion} -> ${semverBump(currentVersion, 'minor')}`);
406
- console.log(` major: ${currentVersion} -> ${semverBump(currentVersion, 'major')}`);
407
- console.log('');
408
- console.log('CHANGELOG preview:');
409
- console.log('---');
410
- const entry = generateChangelog(rootDir, semverBump(currentVersion, 'patch'));
411
- console.log(entry);
412
- console.log('---');
413
- console.log('');
414
- console.log('To release, run:');
415
- console.log(' npm run release:patch # patch release');
416
- console.log(' npm run release:minor # minor release');
417
- console.log(' npm run release:major # major release');
418
- done();
419
- } catch (error) {
420
- done(error);
421
- }
422
- });
423
-
424
- // ──────────────────────────────────────────────
425
- // release:deploy:* (release + deploy)
426
- // ──────────────────────────────────────────────
427
-
428
- gulp.task('release:deploy:patch', gulp.series('release:patch', 'deploy:prd'));
429
- gulp.task('release:deploy:minor', gulp.series('release:minor', 'deploy:prd'));
430
- gulp.task('release:deploy:major', gulp.series('release:major', 'deploy:prd'));
431
- }
1
+ 'use strict';
2
+
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { execSync } from 'child_process';
6
+
7
+ // ============================================
8
+ // 設定
9
+ // ============================================
10
+
11
+ /**
12
+ * リリース対象のパッケージディレクトリ一覧を返す。
13
+ * モノレポの場合は apps/packages 配下を追加する。
14
+ * @param {string} rootDir - プロジェクトルート
15
+ * @returns {string[]} パッケージディレクトリの絶対パス配列
16
+ */
17
+ function discoverPackageDirs(rootDir) {
18
+ const dirs = [rootDir];
19
+ const candidates = ['apps', 'packages'];
20
+
21
+ for (const candidate of candidates) {
22
+ const dir = path.join(rootDir, candidate);
23
+ if (!fs.existsSync(dir)) continue;
24
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
25
+ for (const entry of entries) {
26
+ if (!entry.isDirectory()) continue;
27
+ const pkgJson = path.join(dir, entry.name, 'package.json');
28
+ if (fs.existsSync(pkgJson)) {
29
+ dirs.push(path.join(dir, entry.name));
30
+ }
31
+ }
32
+ }
33
+
34
+ return dirs;
35
+ }
36
+
37
+ // ============================================
38
+ // ヘルパー関数
39
+ // ============================================
40
+
41
+ /**
42
+ * root の package.json からバージョンを読み取る
43
+ * @param {string} rootDir - プロジェクトルート
44
+ * @returns {string} 現在のバージョン (例: "0.1.0")
45
+ */
46
+ function getCurrentVersion(rootDir) {
47
+ const pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf8'));
48
+ return pkg.version;
49
+ }
50
+
51
+ /**
52
+ * ドライラン用の簡易 semver 計算
53
+ * @param {string} version - 現在のバージョン (例: "0.1.0")
54
+ * @param {string} type - バンプの種類 ("patch" | "minor" | "major")
55
+ * @returns {string} 新しいバージョン
56
+ */
57
+ function semverBump(version, type) {
58
+ const [major, minor, patch] = version.split('.').map(Number);
59
+ switch (type) {
60
+ case 'major':
61
+ return `${major + 1}.0.0`;
62
+ case 'minor':
63
+ return `${major}.${minor + 1}.0`;
64
+ case 'patch':
65
+ return `${major}.${minor}.${patch + 1}`;
66
+ default:
67
+ throw new Error(`Unknown bump type: ${type}`);
68
+ }
69
+ }
70
+
71
+ /**
72
+ * 対象パッケージのバージョンを同期更新
73
+ * @param {string} rootDir - プロジェクトルート
74
+ * @param {string} type - バンプの種類 ("patch" | "minor" | "major")
75
+ * @returns {string} 新しいバージョン
76
+ */
77
+ function bumpVersions(rootDir, type) {
78
+ const dirs = discoverPackageDirs(rootDir);
79
+
80
+ for (const dir of dirs) {
81
+ execSync(`npm version ${type} --no-git-tag-version`, {
82
+ cwd: dir,
83
+ stdio: 'pipe',
84
+ });
85
+ }
86
+
87
+ return getCurrentVersion(rootDir);
88
+ }
89
+
90
+ /**
91
+ * 直近タグから HEAD までの git log を Conventional Commits で分類し Markdown を生成
92
+ * @param {string} rootDir - プロジェクトルート
93
+ * @param {string} version - リリースバージョン
94
+ * @returns {string} CHANGELOG エントリ(Markdown)
95
+ */
96
+ function generateChangelog(rootDir, version) {
97
+ let lastTag;
98
+ try {
99
+ lastTag = execSync('git describe --tags --abbrev=0', {
100
+ cwd: rootDir,
101
+ stdio: 'pipe',
102
+ encoding: 'utf8',
103
+ }).trim();
104
+ } catch {
105
+ lastTag = null;
106
+ }
107
+
108
+ const range = lastTag ? `${lastTag}..HEAD` : 'HEAD';
109
+ let logOutput;
110
+ try {
111
+ logOutput = execSync(`git log ${range} --pretty=format:"%h|||%s"`, {
112
+ cwd: rootDir,
113
+ stdio: 'pipe',
114
+ encoding: 'utf8',
115
+ }).trim();
116
+ } catch {
117
+ logOutput = '';
118
+ }
119
+
120
+ if (!logOutput) {
121
+ return buildChangelogEntry(version, {});
122
+ }
123
+
124
+ const categories = {
125
+ feat: { title: 'Features', commits: [] },
126
+ fix: { title: 'Bug Fixes', commits: [] },
127
+ docs: { title: 'Documentation', commits: [] },
128
+ refactor: { title: 'Refactoring', commits: [] },
129
+ test: { title: 'Tests', commits: [] },
130
+ chore: { title: 'Chores', commits: [] },
131
+ perf: { title: 'Performance', commits: [] },
132
+ ci: { title: 'CI', commits: [] },
133
+ style: { title: 'Styles', commits: [] },
134
+ build: { title: 'Build', commits: [] },
135
+ other: { title: 'Other', commits: [] },
136
+ };
137
+
138
+ for (const line of logOutput.split('\n')) {
139
+ if (!line.trim()) continue;
140
+ const [hash, ...rest] = line.split('|||');
141
+ const subject = rest.join('|||');
142
+ const match = subject.match(/^(\w+)(?:\(.+?\))?:\s*(.+)$/);
143
+ if (match) {
144
+ const type = match[1].toLowerCase();
145
+ const message = match[2];
146
+ if (categories[type]) {
147
+ categories[type].commits.push({ hash: hash.trim(), message });
148
+ } else {
149
+ categories.other.commits.push({ hash: hash.trim(), message: subject });
150
+ }
151
+ } else {
152
+ categories.other.commits.push({ hash: hash.trim(), message: subject });
153
+ }
154
+ }
155
+
156
+ return buildChangelogEntry(version, categories);
157
+ }
158
+
159
+ /**
160
+ * CHANGELOG エントリを Markdown で構築
161
+ * @param {string} version
162
+ * @param {Object} categories
163
+ * @returns {string}
164
+ */
165
+ function buildChangelogEntry(version, categories) {
166
+ const date = new Date().toISOString().slice(0, 10);
167
+ const lines = [`## [${version}] - ${date}`, ''];
168
+
169
+ let hasContent = false;
170
+ for (const [, cat] of Object.entries(categories)) {
171
+ if (cat.commits && cat.commits.length > 0) {
172
+ hasContent = true;
173
+ lines.push(`### ${cat.title}`, '');
174
+ for (const c of cat.commits) {
175
+ lines.push(`- ${c.message} (${c.hash})`);
176
+ }
177
+ lines.push('');
178
+ }
179
+ }
180
+
181
+ if (!hasContent) {
182
+ lines.push('- No notable changes', '');
183
+ }
184
+
185
+ return lines.join('\n');
186
+ }
187
+
188
+ /**
189
+ * CHANGELOG.md の先頭にエントリを追加(なければ新規作成)
190
+ * @param {string} rootDir - プロジェクトルート
191
+ * @param {string} entry - 追加する CHANGELOG エントリ
192
+ */
193
+ function updateChangelog(rootDir, entry) {
194
+ const changelogPath = path.join(rootDir, 'CHANGELOG.md');
195
+ const header = '# Changelog\n\n';
196
+
197
+ if (fs.existsSync(changelogPath)) {
198
+ const existing = fs.readFileSync(changelogPath, 'utf8');
199
+ const withoutHeader = existing.replace(/^# Changelog\s*\n*/, '');
200
+ fs.writeFileSync(changelogPath, header + entry + '\n' + withoutHeader);
201
+ } else {
202
+ fs.writeFileSync(changelogPath, header + entry);
203
+ }
204
+ }
205
+
206
+ /**
207
+ * 変更ファイルをステージング → commit → tag
208
+ * @param {string} rootDir - プロジェクトルート
209
+ * @param {string} version - リリースバージョン
210
+ */
211
+ function createGitCommitAndTag(rootDir, version) {
212
+ const filesToStage = collectFilesToStage(rootDir);
213
+
214
+ for (const file of filesToStage) {
215
+ execSync(`git add "${file}"`, { cwd: rootDir, stdio: 'pipe' });
216
+ }
217
+
218
+ execSync(`git commit -m "release: v${version}"`, {
219
+ cwd: rootDir,
220
+ stdio: 'pipe',
221
+ env: { ...process.env, USER_APPROVED_COMMIT: '1' },
222
+ });
223
+
224
+ execSync(`git tag -a "v${version}" -m "v${version}"`, {
225
+ cwd: rootDir,
226
+ stdio: 'pipe',
227
+ });
228
+ }
229
+
230
+ /**
231
+ * ステージング対象のファイルパスを収集
232
+ * @param {string} rootDir - プロジェクトルート
233
+ * @returns {string[]} 相対パスの配列
234
+ */
235
+ function collectFilesToStage(rootDir) {
236
+ const files = ['package.json', 'CHANGELOG.md'];
237
+ const dirs = discoverPackageDirs(rootDir);
238
+
239
+ for (const dir of dirs) {
240
+ if (dir === rootDir) continue;
241
+ const relative = path.relative(rootDir, dir);
242
+ files.push(path.join(relative, 'package.json'));
243
+ }
244
+
245
+ return files;
246
+ }
247
+
248
+ /**
249
+ * リリース結果のサマリーを表示
250
+ * @param {string} oldVersion - 旧バージョン
251
+ * @param {string} newVersion - 新バージョン
252
+ */
253
+ function printSummary(oldVersion, newVersion) {
254
+ console.log('');
255
+ console.log('=== Release Summary ===');
256
+ console.log(` Version: ${oldVersion} -> ${newVersion}`);
257
+ console.log(` Tag: v${newVersion}`);
258
+ console.log(` Commit: release: v${newVersion}`);
259
+ console.log('');
260
+ console.log('Next steps:');
261
+ console.log(' git push && git push --tags');
262
+ console.log('');
263
+ }
264
+
265
+ // ============================================
266
+ // コマンド実行ヘルパー
267
+ // ============================================
268
+
269
+ /**
270
+ * シェルコマンドを実行し、失敗時に done コールバックへエラーを渡す
271
+ * @param {string} command - 実行するコマンド
272
+ * @param {string} rootDir - 実行ディレクトリ
273
+ * @param {Function} done - コールバック
274
+ */
275
+ function runCommandInDir(command, rootDir, done) {
276
+ try {
277
+ execSync(command, { cwd: rootDir, stdio: 'inherit' });
278
+ done();
279
+ } catch (error) {
280
+ done(error);
281
+ }
282
+ }
283
+
284
+ // ============================================
285
+ // タスク登録
286
+ // ============================================
287
+
288
+ /**
289
+ * 指定されたタイプのリリースタスクを生成
290
+ * @param {string} rootDir - プロジェクトルート
291
+ * @param {string} type - "patch" | "minor" | "major"
292
+ * @returns {Function} gulp タスク関数
293
+ */
294
+ function createReleaseTask(rootDir, type) {
295
+ const task = (done) => {
296
+ try {
297
+ const oldVersion = getCurrentVersion(rootDir);
298
+ console.log(`[1/4] バージョンを更新 (${type})...`);
299
+ const newVersion = bumpVersions(rootDir, type);
300
+
301
+ console.log('[2/4] CHANGELOG を生成...');
302
+ const entry = generateChangelog(rootDir, newVersion);
303
+ updateChangelog(rootDir, entry);
304
+
305
+ console.log('[3/4] git commit + tag...');
306
+ createGitCommitAndTag(rootDir, newVersion);
307
+
308
+ console.log('[4/4] サマリー表示');
309
+ printSummary(oldVersion, newVersion);
310
+
311
+ done();
312
+ } catch (error) {
313
+ done(error);
314
+ }
315
+ };
316
+ task.displayName = `release:${type}:execute`;
317
+ return task;
318
+ }
319
+
320
+ /**
321
+ * リリースタスクを gulp に登録する
322
+ * @param {import('gulp').Gulp} gulp - Gulp インスタンス
323
+ * @param {{ rootDir?: string }} [options] - オプション
324
+ * @param {string} [options.rootDir] - プロジェクトルート(省略時は gulpfile の 2 階層上)
325
+ */
326
+ export default function (gulp, options = {}) {
327
+ const rootDir = options.rootDir || path.resolve(process.cwd());
328
+
329
+ // ──────────────────────────────────────────────
330
+ // preflight: 品質ゲート
331
+ // ──────────────────────────────────────────────
332
+
333
+ gulp.task('release:preflight:clean', (done) => {
334
+ console.log('=== Release Preflight ===');
335
+ console.log('[1/5] Working tree がクリーンか確認...');
336
+ try {
337
+ const status = execSync('git status --porcelain', {
338
+ cwd: rootDir,
339
+ stdio: 'pipe',
340
+ encoding: 'utf8',
341
+ }).trim();
342
+ if (status) {
343
+ done(new Error('Working tree is not clean. Commit or stash your changes first.\n' + status));
344
+ return;
345
+ }
346
+ console.log(' -> Clean');
347
+ done();
348
+ } catch (error) {
349
+ done(error);
350
+ }
351
+ });
352
+
353
+ gulp.task('release:preflight:lint', (done) => {
354
+ console.log('[2/5] Lint...');
355
+ runCommandInDir('npm run lint', rootDir, done);
356
+ });
357
+
358
+ gulp.task('release:preflight:test', (done) => {
359
+ console.log('[3/5] Test...');
360
+ runCommandInDir('npm run test', rootDir, done);
361
+ });
362
+
363
+ gulp.task('release:preflight:build', (done) => {
364
+ console.log('[4/5] Build...');
365
+ runCommandInDir('npm run build', rootDir, done);
366
+ });
367
+
368
+ gulp.task('release:preflight:e2e', (done) => {
369
+ console.log('[5/5] E2E Test...');
370
+ runCommandInDir('npm run test:e2e', rootDir, done);
371
+ });
372
+
373
+ gulp.task(
374
+ 'release:preflight',
375
+ gulp.series(
376
+ 'release:preflight:clean',
377
+ 'release:preflight:lint',
378
+ 'release:preflight:test',
379
+ 'release:preflight:build',
380
+ 'release:preflight:e2e'
381
+ )
382
+ );
383
+
384
+ // ──────────────────────────────────────────────
385
+ // release:patch / minor / major
386
+ // ──────────────────────────────────────────────
387
+
388
+ gulp.task('release:patch', gulp.series('release:preflight', createReleaseTask(rootDir, 'patch')));
389
+ gulp.task('release:minor', gulp.series('release:preflight', createReleaseTask(rootDir, 'minor')));
390
+ gulp.task('release:major', gulp.series('release:preflight', createReleaseTask(rootDir, 'major')));
391
+
392
+ // ──────────────────────────────────────────────
393
+ // release:dry-run
394
+ // ──────────────────────────────────────────────
395
+
396
+ gulp.task('release:dry-run', (done) => {
397
+ try {
398
+ const currentVersion = getCurrentVersion(rootDir);
399
+ console.log('=== Release Dry Run ===');
400
+ console.log('');
401
+ console.log(`Current version: ${currentVersion}`);
402
+ console.log('');
403
+ console.log('Version preview:');
404
+ console.log(` patch: ${currentVersion} -> ${semverBump(currentVersion, 'patch')}`);
405
+ console.log(` minor: ${currentVersion} -> ${semverBump(currentVersion, 'minor')}`);
406
+ console.log(` major: ${currentVersion} -> ${semverBump(currentVersion, 'major')}`);
407
+ console.log('');
408
+ console.log('CHANGELOG preview:');
409
+ console.log('---');
410
+ const entry = generateChangelog(rootDir, semverBump(currentVersion, 'patch'));
411
+ console.log(entry);
412
+ console.log('---');
413
+ console.log('');
414
+ console.log('To release, run:');
415
+ console.log(' npm run release:patch # patch release');
416
+ console.log(' npm run release:minor # minor release');
417
+ console.log(' npm run release:major # major release');
418
+ done();
419
+ } catch (error) {
420
+ done(error);
421
+ }
422
+ });
423
+
424
+ // ──────────────────────────────────────────────
425
+ // release:deploy:* (release + deploy)
426
+ // ──────────────────────────────────────────────
427
+
428
+ gulp.task('release:deploy:patch', gulp.series('release:patch', 'deploy:prd'));
429
+ gulp.task('release:deploy:minor', gulp.series('release:minor', 'deploy:prd'));
430
+ gulp.task('release:deploy:major', gulp.series('release:major', 'deploy:prd'));
431
+ }