@k2works/claude-code-booster 6.4.0 → 6.5.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 (297) 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/apply-okf-workspace/iteration-1/benchmark.json +20 -0
  33. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.md +13 -0
  34. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/eval_metadata.json +14 -0
  35. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/grading.json +39 -0
  36. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/001-db.md +12 -0
  37. 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 +20 -0
  38. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/index.md +4 -0
  39. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/data-model.md +12 -0
  40. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/index.md +3 -0
  41. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/index.md +10 -0
  42. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/log.md +7 -0
  43. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  44. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy.md +12 -0
  45. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/index.md +4 -0
  46. 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 +965 -0
  47. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/report.md +76 -0
  48. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/grading.json +39 -0
  49. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/001-db.md +12 -0
  50. 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 +20 -0
  51. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/index.md +4 -0
  52. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/data-model.md +12 -0
  53. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/index.md +3 -0
  54. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/index.md +10 -0
  55. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/log.md +7 -0
  56. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  57. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy.md +12 -0
  58. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/index.md +4 -0
  59. 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 +965 -0
  60. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/report.md +22 -0
  61. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/eval_metadata.json +13 -0
  62. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/grading.json +34 -0
  63. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/001-db.md +12 -0
  64. 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 +11 -0
  65. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/index.md +3 -0
  66. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/data-model.md +14 -0
  67. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/index.md +3 -0
  68. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/index.md +10 -0
  69. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/log.md +7 -0
  70. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  71. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy.md +12 -0
  72. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/index.md +4 -0
  73. 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 +965 -0
  74. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/report.md +61 -0
  75. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/grading.json +34 -0
  76. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/001-db.md +12 -0
  77. 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 +11 -0
  78. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/index.md +3 -0
  79. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/data-model.md +13 -0
  80. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/index.md +3 -0
  81. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/index.md +10 -0
  82. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/log.md +7 -0
  83. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  84. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy.md +12 -0
  85. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/index.md +4 -0
  86. 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 +965 -0
  87. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/report.md +18 -0
  88. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/eval_metadata.json +13 -0
  89. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/grading.json +34 -0
  90. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/001-db.md +12 -0
  91. 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 +11 -0
  92. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/index.md +3 -0
  93. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/data-model.md +12 -0
  94. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/index.md +3 -0
  95. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/index.md +10 -0
  96. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/log.md +7 -0
  97. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy-old.md +13 -0
  98. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy.md +12 -0
  99. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/index.md +7 -0
  100. 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 +965 -0
  101. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/report.md +83 -0
  102. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/grading.json +34 -0
  103. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/001-db.md +12 -0
  104. 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 +11 -0
  105. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/index.md +3 -0
  106. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/data-model.md +12 -0
  107. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/index.md +3 -0
  108. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/index.md +10 -0
  109. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/log.md +7 -0
  110. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy-old.md +14 -0
  111. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy.md +12 -0
  112. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/index.md +4 -0
  113. 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 +965 -0
  114. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/report.md +15 -0
  115. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/review.html +1325 -0
  116. package/lib/assets/.claude/skills/closing-iteration/SKILL.md +176 -176
  117. package/lib/assets/.claude/skills/creating-adr/SKILL.md +117 -117
  118. package/lib/assets/.claude/skills/creating-development-strategy/SKILL.md +187 -151
  119. package/lib/assets/.claude/skills/creating-iteration-report/SKILL.md +210 -210
  120. package/lib/assets/.claude/skills/creating-journal/SKILL.md +140 -140
  121. package/lib/assets/.claude/skills/creating-manual/SKILL.md +199 -199
  122. package/lib/assets/.claude/skills/creating-release-report/SKILL.md +161 -161
  123. package/lib/assets/.claude/skills/creating-slides/SKILL.md +86 -86
  124. package/lib/assets/.claude/skills/creating-slides/agents/openai.yaml +4 -4
  125. package/lib/assets/.claude/skills/creating-slides/references/manga-css.md +45 -45
  126. package/lib/assets/.claude/skills/creating-slides/scripts/slide_tools.py +239 -239
  127. package/lib/assets/.claude/skills/developing-backend/SKILL.md +138 -100
  128. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +131 -93
  129. package/lib/assets/.claude/skills/developing-release/SKILL.md +120 -120
  130. package/lib/assets/.claude/skills/developing-review/SKILL.md +175 -175
  131. package/lib/assets/.claude/skills/developing-uiux-review/SKILL.md +207 -207
  132. package/lib/assets/.claude/skills/generating-bmc/SKILL.md +123 -123
  133. package/lib/assets/.claude/skills/generating-slides/SKILL.md +94 -94
  134. package/lib/assets/.claude/skills/git-commit/SKILL.md +81 -81
  135. package/lib/assets/.claude/skills/killing-processes/SKILL.md +44 -44
  136. package/lib/assets/.claude/skills/migrating-ai-dlc/evals/evals.json +59 -59
  137. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.json +20 -0
  138. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.md +13 -0
  139. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/eval_metadata.json +15 -0
  140. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/grading.json +44 -0
  141. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/adr/index.md +10 -0
  142. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/index.md +15 -0
  143. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/log.md +5 -0
  144. 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 +966 -0
  145. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/index.md +6 -0
  146. 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 +261 -0
  147. 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 +480 -0
  148. 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 +681 -0
  149. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/report.md +85 -0
  150. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/grading.json +44 -0
  151. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/adr/index.md +8 -0
  152. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/index.md +11 -0
  153. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/log.md +7 -0
  154. 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 +964 -0
  155. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/index.md +9 -0
  156. 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 +250 -0
  157. 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 +469 -0
  158. 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 +677 -0
  159. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/report.md +49 -0
  160. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/eval_metadata.json +13 -0
  161. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/grading.json +34 -0
  162. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/index.md +7 -0
  163. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/log.md +7 -0
  164. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/metrics/churn.md +9 -0
  165. 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 +15 -0
  166. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/report.md +147 -0
  167. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/review.html +1325 -0
  168. package/lib/assets/.claude/skills/opening-iteration/SKILL.md +124 -124
  169. package/lib/assets/.claude/skills/operating-backup/SKILL.md +59 -59
  170. package/lib/assets/.claude/skills/operating-cicd/SKILL.md +54 -54
  171. package/lib/assets/.claude/skills/operating-deploy/SKILL.md +67 -67
  172. package/lib/assets/.claude/skills/operating-docs/SKILL.md +219 -219
  173. package/lib/assets/.claude/skills/operating-provision/SKILL.md +77 -77
  174. package/lib/assets/.claude/skills/operating-qt/SKILL.md +147 -147
  175. package/lib/assets/.claude/skills/operating-review/SKILL.md +171 -171
  176. package/lib/assets/.claude/skills/operating-script/SKILL.md +145 -145
  177. package/lib/assets/.claude/skills/operating-setup/SKILL.md +63 -63
  178. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +110 -110
  179. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +208 -172
  180. package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +161 -161
  181. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +149 -149
  182. package/lib/assets/.claude/skills/planning-releases/SKILL.md +121 -121
  183. package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +262 -262
  184. package/lib/assets/.claude/skills/syncing-github-project/SKILL.md +151 -151
  185. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +91 -91
  186. package/lib/assets/.claude/skills/validating-design/SKILL.md +130 -130
  187. package/lib/assets/.claude/skills/validating-iteration-plan/SKILL.md +238 -238
  188. package/lib/assets/.claude/skills/validating-operating-setup/SKILL.md +118 -118
  189. package/lib/assets/.devcontainer/devcontainer.json +37 -37
  190. package/lib/assets/.env.example +32 -32
  191. package/lib/assets/.gitattributes +4 -4
  192. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  193. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  194. package/lib/assets/AGENTS.md +102 -102
  195. package/lib/assets/README.md +304 -304
  196. package/lib/assets/docker-compose.yml +33 -33
  197. package/lib/assets/docs/adr/index.md +10 -10
  198. package/lib/assets/docs/article/index.md +1 -0
  199. package/lib/assets/docs/assets/css/extra.css +29 -29
  200. package/lib/assets/docs/assets/js/extra.js +48 -48
  201. package/lib/assets/docs/assets/js/mathjax.js +27 -27
  202. package/lib/assets/docs/design/index.md +44 -44
  203. package/lib/assets/docs/development/index.md +39 -39
  204. package/lib/assets/docs/index.md +37 -37
  205. package/lib/assets/docs/log.md +28 -28
  206. package/lib/assets/docs/operation/index.md +41 -41
  207. package/lib/assets/docs/reference/BDD/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +766 -766
  208. 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
  209. 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
  210. 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
  211. package/lib/assets/docs/reference/LivingDocumentation/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +400 -0
  212. 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
  213. 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
  214. 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
  215. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +460 -460
  216. 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
  217. package/lib/assets/docs/reference/images/Ansoff.drawio.svg +3 -3
  218. package/lib/assets/docs/reference/images/BMC.drawio.svg +3 -3
  219. package/lib/assets/docs/reference/images/BrandBasicStrategy.drawio.svg +3 -3
  220. package/lib/assets/docs/reference/images/BrandCategorization.drawio.svg +3 -3
  221. package/lib/assets/docs/reference/images/BrandRecurutementStrategy.drawio.svg +3 -3
  222. package/lib/assets/docs/reference/images/BrandValue.drawio.svg +3 -3
  223. package/lib/assets/docs/reference/images/BusinessActivitiy.svg +3 -3
  224. package/lib/assets/docs/reference/images/HRM.drawio.svg +3 -3
  225. package/lib/assets/docs/reference/images/MarketingStructure.drawio.svg +3 -3
  226. package/lib/assets/docs/reference/images/OrganizationElemnts.svg +3 -3
  227. package/lib/assets/docs/reference/images/PPM.drawio.svg +3 -3
  228. package/lib/assets/docs/reference/images/PositioningMap.drawio.svg +3 -3
  229. package/lib/assets/docs/reference/images/ProductLayer.drawio.svg +3 -3
  230. package/lib/assets/docs/reference/images/ProductMix.drawio.svg +3 -3
  231. package/lib/assets/docs/reference/images/SWOT.drawio.svg +3 -3
  232. package/lib/assets/docs/reference/images/TargetMarket.drawio.svg +3 -3
  233. package/lib/assets/docs/reference/images/ThreeGenericStrategies.drawio.svg +3 -3
  234. package/lib/assets/docs/reference/images/VRIO.drawio.svg +3 -3
  235. package/lib/assets/docs/reference/images/ValueChain.drawio.svg +3 -3
  236. package/lib/assets/docs/reference/index.md +66 -62
  237. 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
  238. package/lib/assets/docs/reference//343/202/242/343/203/216/343/203/206/343/203/274/343/202/267/343/203/247/343/203/263/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +268 -0
  239. 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
  240. 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
  241. 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
  242. package/lib/assets/docs/reference//343/202/254/343/202/244/343/203/211/343/203/204/343/202/242/343/203/274/343/203/273/343/202/265/343/202/244/343/203/210/343/202/267/343/203/274/343/202/244/343/203/263/343/202/260/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +192 -0
  243. 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
  244. package/lib/assets/docs/reference//343/203/200/343/202/244/343/203/212/343/203/237/343/203/203/343/202/257/343/202/255/343/203/245/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +191 -0
  245. 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
  246. 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
  247. 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
  248. 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
  249. 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
  250. 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
  251. 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
  252. 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
  253. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +2647 -2647
  254. 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
  255. 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
  256. 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
  257. 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
  258. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +1492 -1492
  259. 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
  260. 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
  261. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +314 -314
  262. 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
  263. package/lib/assets/docs/requirements/index.md +17 -17
  264. package/lib/assets/docs/review/index.md +5 -5
  265. package/lib/assets/docs/strategy/index.md +17 -17
  266. package/lib/assets/docs/template/ADR.md +39 -39
  267. 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
  268. 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
  269. package/lib/assets/docs/template/README.md +59 -59
  270. package/lib/assets/docs/template/index.md +24 -24
  271. 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
  272. 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
  273. 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
  274. 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
  275. 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
  276. 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
  277. 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
  278. 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
  279. package/lib/assets/docs/template//344/272/213/344/276/213/345/210/206/346/236/220.md +522 -522
  280. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +582 -582
  281. 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
  282. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  283. package/lib/assets/docs/template//350/250/255/350/250/210.md +183 -183
  284. 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
  285. package/lib/assets/gulpfile.js +29 -29
  286. package/lib/assets/mkdocs.yml +151 -147
  287. package/lib/assets/ops/docker/sonarqube-local/docker-compose.yml +57 -57
  288. package/lib/assets/ops/scripts/journal.js +180 -180
  289. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  290. package/lib/assets/ops/scripts/release.js +431 -431
  291. package/lib/assets/ops/scripts/sonar_local.js +726 -726
  292. package/lib/assets/ops/scripts/ssh.js +190 -190
  293. package/lib/assets/ops/scripts/vault.js +299 -299
  294. package/lib/assets/package-lock.json +1673 -1673
  295. package/lib/assets/package.json +45 -45
  296. package/lib/gulpfile.js +37 -37
  297. package/package.json +41 -41
@@ -1,321 +1,321 @@
1
- ---
2
- type: Reference
3
- title: "データモデル設計ガイド"
4
- description: "データベース設計は、アプリケーションの基盤となる重要な活動です。"
5
- tags: [reference]
6
- status: stable
7
- generated: { by: human:kakimomokuri, at: 2025-09-11T10:30:55Z }
8
- ---
9
-
10
- # データモデル設計ガイド
11
-
12
- ## はじめに
13
-
14
- データベース設計は、アプリケーションの基盤となる重要な活動です。このガイドでは、テスト駆動開発(TDD)の原則をデータベース設計に応用し、要求の変化に柔軟に対応できる堅牢なデータモデルを段階的に構築する方法論を説明します。
15
-
16
- 従来の「最初に完璧なER図を描く」アプローチではなく、小さな要求から始めて徐々にデータモデルを育てていく実践的なアプローチを推奨します。
17
-
18
- ## TDDデータベース設計の基本原則
19
-
20
- ### なぜTDDでデータベース設計?
21
-
22
- 1. **要求が明確になる**: テストという形で、その時点で必要なデータ要求を具体的に定義します
23
- 2. **設計がシンプルに保たれる**: 今必要なことだけを実装するため、過剰な設計を防ぎます
24
- 3. **変更に強くなる**: テストが既存の要求を守るため、安心してリファクタリング(設計改善)を行えます
25
-
26
- ### TDDサイクル
27
-
28
- ```plantuml
29
- @startuml
30
- start
31
- :要求の定義;
32
- :レッド (Red)\n失敗するテストを書く;
33
- :グリーン (Green)\n最小限のスキーマで\nテストを通す;
34
- :リファクタリング (Refactor)\nER図で設計を可視化・改善;
35
- if (新しい要求?) then (yes)
36
- else (no)
37
- :完了;
38
- stop
39
- endif
40
- @enduml
41
- ```
42
-
43
- ## 設計プロセス
44
-
45
- ### 1. レッド(Red):要求をテストコードで表現
46
-
47
- まず、「どのようなデータを、どのように扱いたいか」を具体的なテストコードで示します。
48
-
49
- ```typescript
50
- describe("部門マスタ", () => {
51
- test("部門を登録できる", async () => {
52
- // 1. テストデータを作成
53
- await prisma.department.create({ data: departments[0] });
54
- // 2. 取得したデータが期待通りか検証
55
- const result = await prisma.department.findMany();
56
- expect(result).toEqual(departments);
57
- });
58
-
59
- test("部門を更新できる", async () => {
60
- const expected = { ...departments[0], name: "更新部署" };
61
- await prisma.department.update({
62
- where: { deptCode_startDate: {
63
- deptCode: departments[0].deptCode,
64
- startDate: departments[0].startDate
65
- }},
66
- data: { name: "更新部署" },
67
- });
68
- const result = await prisma.department.findUnique({
69
- where: { deptCode_startDate: {
70
- deptCode: departments[0].deptCode,
71
- startDate: departments[0].startDate
72
- }}
73
- });
74
- expect(result).toEqual(expected);
75
- });
76
- });
77
- ```
78
-
79
- ### 2. グリーン(Green):最小限のスキーマ定義
80
-
81
- テストをパスさせるための最小限のスキーマを定義します。
82
-
83
- ```prisma
84
- model Department {
85
- deptCode String @map("部門コード") @db.VarChar(6)
86
- startDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("開始日") @db.Timestamp(6)
87
- endDate DateTime? @default(dbgenerated("'2100-12-31 00:00:00'::timestamp without time zone")) @map("終了日") @db.Timestamp(6)
88
- name String? @map("部門名") @db.VarChar(40)
89
- layer Int @default(0) @map("組織階層")
90
- psth String @map("部門パス") @db.VarChar(100)
91
- lowestType Int @default(0) @map("最下層区分")
92
- slitYn Int @default(1) @map("伝票入力可否")
93
- createDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("作成日時") @db.Timestamp(6)
94
- creator String? @map("作成者名") @db.VarChar(12)
95
- updateDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("更新日時") @db.Timestamp(6)
96
- updater String? @map("更新者名") @db.VarChar(12)
97
-
98
- // 履歴管理のため、部門コードと適用開始日で複合主キー
99
- @@id([deptCode, startDate], map: "pk_department")
100
- @@map("部門マスタ")
101
- }
102
- ```
103
-
104
- ### 3. リファクタリング(Refactor):ER図で設計を可視化・改善
105
-
106
- テストがパスした状態で、設計をER図で可視化し、必要に応じて改善します。
107
-
108
- ```plantuml
109
- @startuml
110
- entity "部門マスタ (Department)" as Department {
111
- * **deptCode**: VARCHAR(6) <<PK>>
112
- * **startDate**: TIMESTAMP <<PK>>
113
- --
114
- name: VARCHAR(40)
115
- layer: INTEGER
116
- psth: VARCHAR(100)
117
- lowestType: INTEGER
118
- ...
119
- }
120
-
121
- entity "社員マスタ (Employee)" as Employee {
122
- * **empCode**: VARCHAR(10) <<PK>>
123
- --
124
- name: VARCHAR(20)
125
- deptCode: VARCHAR(6) <<FK>>
126
- startDate: TIMESTAMP
127
- ...
128
- }
129
-
130
- Department "1" -- "0..*" Employee : 所属する
131
- @enduml
132
- ```
133
-
134
- ## 設計パターンとベストプラクティス
135
-
136
- ### 1. マスタデータの設計
137
-
138
- #### 履歴管理
139
- - 組織変更などで同じコードでも期間が異なるデータを管理する場合は複合主キーを使用
140
- - `{コード, 開始日}`の組み合わせを主キーとする
141
-
142
- #### 命名規則
143
- - テーブル名:業務上の意味を表す日本語名
144
- - カラム名:英語名(データベースレベル)と日本語名(アプリケーションレベル)の対応
145
-
146
- ### 2. トランザクションデータの設計
147
-
148
- #### ヘッダ・明細パターン
149
- 一回の取引に複数の項目が含まれる場合、ヘッダテーブルと明細テーブルに分離します。
150
-
151
- ```prisma
152
- model Order {
153
- orderNo String @id @map("受注番号") @db.VarChar(10)
154
- orderDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("受注日")
155
- custCode String @map("顧客コード") @db.VarChar(8)
156
- orderDetails OrderDetail[]
157
- @@map("受注データ")
158
- }
159
-
160
- model OrderDetail {
161
- orderNo String @map("受注番号") @db.VarChar(10)
162
- soRowNo Int @map("受注行番号")
163
- prodCode String @map("商品コード") @db.VarChar(16)
164
- quantity Int @default(1) @map("受注数量")
165
- order Order @relation(fields: [orderNo], references: [orderNo])
166
-
167
- @@id([orderNo, soRowNo])
168
- @@map("受注データ明細")
169
- }
170
- ```
171
-
172
- ### 3. リレーションシップの設計
173
-
174
- #### パーティモデル
175
- 取引先のように複数の役割を持つエンティティは、共通部分(Party)と役割特化部分(Role)に分離します。
176
-
177
- ```prisma
178
- // 共通情報
179
- model Company {
180
- compCode String @id @map("取引先コード") @db.VarChar(8)
181
- name String @map("取引先名") @db.VarChar(40)
182
- customers Customer[]
183
- suppliers Supplier[]
184
- @@map("取引先マスタ")
185
- }
186
-
187
- // 顧客としての役割情報
188
- model Customer {
189
- custCode String @map("顧客コード") @db.VarChar(8)
190
- custSubNo Int @map("顧客枝番")
191
- arCode String @map("請求先コード") @db.VarChar(8)
192
- company Company @relation(fields: [custCode], references: [compCode])
193
- @@id([custCode, custSubNo])
194
- @@map("顧客マスタ")
195
- }
196
-
197
- // 仕入先としての役割情報
198
- model Supplier {
199
- supCode String @map("仕入先コード") @db.VarChar(8)
200
- supSubNo Int @map("仕入先枝番")
201
- company Company @relation(fields: [supCode], references: [compCode])
202
- @@id([supCode, supSubNo])
203
- @@map("仕入先マスタ")
204
- }
205
- ```
206
-
207
- ## テスト戦略
208
-
209
- ### 1. マスタデータのテスト
210
-
211
- ```typescript
212
- describe("マスタデータ", () => {
213
- beforeAll(async () => {
214
- // テスト前にデータをクリア
215
- await prisma.department.deleteMany();
216
- });
217
-
218
- test("CRUD操作が正常に動作する", async () => {
219
- // Create
220
- await prisma.department.create({ data: testData });
221
-
222
- // Read
223
- const result = await prisma.department.findMany();
224
- expect(result).toEqual([testData]);
225
-
226
- // Update
227
- await prisma.department.update({
228
- where: { id: testData.id },
229
- data: { name: "更新後の名前" }
230
- });
231
-
232
- // Delete
233
- await prisma.department.delete({ where: { id: testData.id } });
234
- const empty = await prisma.department.findMany();
235
- expect(empty).toEqual([]);
236
- });
237
- });
238
- ```
239
-
240
- ### 2. 関連データのテスト
241
-
242
- ```typescript
243
- describe("関連データ", () => {
244
- test("関連するデータを一括で取得できる", async () => {
245
- // 関連するマスタを先に登録
246
- await prisma.$transaction(async (prisma) => {
247
- await prisma.department.createMany({ data: departments });
248
- await prisma.employee.createMany({ data: employees });
249
- });
250
-
251
- // 関連データを含めて取得
252
- const result = await prisma.department.findMany({
253
- include: { employees: true }
254
- });
255
-
256
- expect(result[0].employees).toHaveLength(expectedEmployeeCount);
257
- });
258
- });
259
- ```
260
-
261
- ## 段階的な発展プロセス
262
-
263
- ### フェーズ1:基本マスタ
264
- 1. 部門・社員
265
- 2. 商品・商品分類
266
- 3. 取引先(Company, Customer, Supplier)
267
-
268
- ### フェーズ2:基本トランザクション
269
- 1. 受注・受注明細
270
- 2. 売上・売上明細
271
-
272
- ### フェーズ3:調達プロセス
273
- 1. 発注・発注明細
274
- 2. 仕入・仕入明細
275
- 3. 在庫管理
276
-
277
- ### フェーズ4:財務プロセス
278
- 1. 請求・請求明細
279
- 2. 入金管理
280
- 3. 支払管理
281
-
282
- ### フェーズ5:補助機能
283
- 1. 与信管理
284
- 2. 自動採番
285
- 3. その他運用支援機能
286
-
287
- ## 共通設計原則
288
-
289
- ### 1. 監査証跡の設計
290
-
291
- すべてのテーブルに以下のカラムを含めます:
292
-
293
- ```prisma
294
- createDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("作成日時") @db.Timestamp(6)
295
- creator String? @map("作成者名") @db.VarChar(12)
296
- updateDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("更新日時") @db.Timestamp(6)
297
- updater String? @map("更新者名") @db.VarChar(12)
298
- ```
299
-
300
- ### 2. 論理削除vs物理削除
301
-
302
- - マスタデータ:論理削除(削除フラグ)
303
- - トランザクションデータ:物理削除または履歴保持
304
-
305
- ### 3. パフォーマンス考慮
306
-
307
- - 検索頻度の高いカラムにはインデックスを設定
308
- - 大量データが予想されるテーブルは分割を検討
309
- - 集計用のサマリテーブルを必要に応じて作成
310
-
311
- ## まとめ
312
-
313
- TDDアプローチによるデータベース設計では:
314
-
315
- 1. **小さく始める**: 完璧な初期設計を目指さず、最小限の要求から開始
316
- 2. **テストファースト**: 要求をテストコードで明確に定義
317
- 3. **段階的改善**: テストに守られながら継続的にスキーマを改善
318
- 4. **可視化**: ER図で設計の全体像を把握
319
- 5. **一貫性**: 命名規則や設計パターンを統一
320
-
321
- このアプローチにより、変化する要求に柔軟に対応しながら、保守性の高いデータベース設計を実現できます。
1
+ ---
2
+ type: Reference
3
+ title: "データモデル設計ガイド"
4
+ description: "データベース設計は、アプリケーションの基盤となる重要な活動です。"
5
+ tags: [reference]
6
+ status: stable
7
+ generated: { by: human:kakimomokuri, at: 2025-09-11T10:30:55Z }
8
+ ---
9
+
10
+ # データモデル設計ガイド
11
+
12
+ ## はじめに
13
+
14
+ データベース設計は、アプリケーションの基盤となる重要な活動です。このガイドでは、テスト駆動開発(TDD)の原則をデータベース設計に応用し、要求の変化に柔軟に対応できる堅牢なデータモデルを段階的に構築する方法論を説明します。
15
+
16
+ 従来の「最初に完璧なER図を描く」アプローチではなく、小さな要求から始めて徐々にデータモデルを育てていく実践的なアプローチを推奨します。
17
+
18
+ ## TDDデータベース設計の基本原則
19
+
20
+ ### なぜTDDでデータベース設計?
21
+
22
+ 1. **要求が明確になる**: テストという形で、その時点で必要なデータ要求を具体的に定義します
23
+ 2. **設計がシンプルに保たれる**: 今必要なことだけを実装するため、過剰な設計を防ぎます
24
+ 3. **変更に強くなる**: テストが既存の要求を守るため、安心してリファクタリング(設計改善)を行えます
25
+
26
+ ### TDDサイクル
27
+
28
+ ```plantuml
29
+ @startuml
30
+ start
31
+ :要求の定義;
32
+ :レッド (Red)\n失敗するテストを書く;
33
+ :グリーン (Green)\n最小限のスキーマで\nテストを通す;
34
+ :リファクタリング (Refactor)\nER図で設計を可視化・改善;
35
+ if (新しい要求?) then (yes)
36
+ else (no)
37
+ :完了;
38
+ stop
39
+ endif
40
+ @enduml
41
+ ```
42
+
43
+ ## 設計プロセス
44
+
45
+ ### 1. レッド(Red):要求をテストコードで表現
46
+
47
+ まず、「どのようなデータを、どのように扱いたいか」を具体的なテストコードで示します。
48
+
49
+ ```typescript
50
+ describe("部門マスタ", () => {
51
+ test("部門を登録できる", async () => {
52
+ // 1. テストデータを作成
53
+ await prisma.department.create({ data: departments[0] });
54
+ // 2. 取得したデータが期待通りか検証
55
+ const result = await prisma.department.findMany();
56
+ expect(result).toEqual(departments);
57
+ });
58
+
59
+ test("部門を更新できる", async () => {
60
+ const expected = { ...departments[0], name: "更新部署" };
61
+ await prisma.department.update({
62
+ where: { deptCode_startDate: {
63
+ deptCode: departments[0].deptCode,
64
+ startDate: departments[0].startDate
65
+ }},
66
+ data: { name: "更新部署" },
67
+ });
68
+ const result = await prisma.department.findUnique({
69
+ where: { deptCode_startDate: {
70
+ deptCode: departments[0].deptCode,
71
+ startDate: departments[0].startDate
72
+ }}
73
+ });
74
+ expect(result).toEqual(expected);
75
+ });
76
+ });
77
+ ```
78
+
79
+ ### 2. グリーン(Green):最小限のスキーマ定義
80
+
81
+ テストをパスさせるための最小限のスキーマを定義します。
82
+
83
+ ```prisma
84
+ model Department {
85
+ deptCode String @map("部門コード") @db.VarChar(6)
86
+ startDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("開始日") @db.Timestamp(6)
87
+ endDate DateTime? @default(dbgenerated("'2100-12-31 00:00:00'::timestamp without time zone")) @map("終了日") @db.Timestamp(6)
88
+ name String? @map("部門名") @db.VarChar(40)
89
+ layer Int @default(0) @map("組織階層")
90
+ psth String @map("部門パス") @db.VarChar(100)
91
+ lowestType Int @default(0) @map("最下層区分")
92
+ slitYn Int @default(1) @map("伝票入力可否")
93
+ createDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("作成日時") @db.Timestamp(6)
94
+ creator String? @map("作成者名") @db.VarChar(12)
95
+ updateDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("更新日時") @db.Timestamp(6)
96
+ updater String? @map("更新者名") @db.VarChar(12)
97
+
98
+ // 履歴管理のため、部門コードと適用開始日で複合主キー
99
+ @@id([deptCode, startDate], map: "pk_department")
100
+ @@map("部門マスタ")
101
+ }
102
+ ```
103
+
104
+ ### 3. リファクタリング(Refactor):ER図で設計を可視化・改善
105
+
106
+ テストがパスした状態で、設計をER図で可視化し、必要に応じて改善します。
107
+
108
+ ```plantuml
109
+ @startuml
110
+ entity "部門マスタ (Department)" as Department {
111
+ * **deptCode**: VARCHAR(6) <<PK>>
112
+ * **startDate**: TIMESTAMP <<PK>>
113
+ --
114
+ name: VARCHAR(40)
115
+ layer: INTEGER
116
+ psth: VARCHAR(100)
117
+ lowestType: INTEGER
118
+ ...
119
+ }
120
+
121
+ entity "社員マスタ (Employee)" as Employee {
122
+ * **empCode**: VARCHAR(10) <<PK>>
123
+ --
124
+ name: VARCHAR(20)
125
+ deptCode: VARCHAR(6) <<FK>>
126
+ startDate: TIMESTAMP
127
+ ...
128
+ }
129
+
130
+ Department "1" -- "0..*" Employee : 所属する
131
+ @enduml
132
+ ```
133
+
134
+ ## 設計パターンとベストプラクティス
135
+
136
+ ### 1. マスタデータの設計
137
+
138
+ #### 履歴管理
139
+ - 組織変更などで同じコードでも期間が異なるデータを管理する場合は複合主キーを使用
140
+ - `{コード, 開始日}`の組み合わせを主キーとする
141
+
142
+ #### 命名規則
143
+ - テーブル名:業務上の意味を表す日本語名
144
+ - カラム名:英語名(データベースレベル)と日本語名(アプリケーションレベル)の対応
145
+
146
+ ### 2. トランザクションデータの設計
147
+
148
+ #### ヘッダ・明細パターン
149
+ 一回の取引に複数の項目が含まれる場合、ヘッダテーブルと明細テーブルに分離します。
150
+
151
+ ```prisma
152
+ model Order {
153
+ orderNo String @id @map("受注番号") @db.VarChar(10)
154
+ orderDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("受注日")
155
+ custCode String @map("顧客コード") @db.VarChar(8)
156
+ orderDetails OrderDetail[]
157
+ @@map("受注データ")
158
+ }
159
+
160
+ model OrderDetail {
161
+ orderNo String @map("受注番号") @db.VarChar(10)
162
+ soRowNo Int @map("受注行番号")
163
+ prodCode String @map("商品コード") @db.VarChar(16)
164
+ quantity Int @default(1) @map("受注数量")
165
+ order Order @relation(fields: [orderNo], references: [orderNo])
166
+
167
+ @@id([orderNo, soRowNo])
168
+ @@map("受注データ明細")
169
+ }
170
+ ```
171
+
172
+ ### 3. リレーションシップの設計
173
+
174
+ #### パーティモデル
175
+ 取引先のように複数の役割を持つエンティティは、共通部分(Party)と役割特化部分(Role)に分離します。
176
+
177
+ ```prisma
178
+ // 共通情報
179
+ model Company {
180
+ compCode String @id @map("取引先コード") @db.VarChar(8)
181
+ name String @map("取引先名") @db.VarChar(40)
182
+ customers Customer[]
183
+ suppliers Supplier[]
184
+ @@map("取引先マスタ")
185
+ }
186
+
187
+ // 顧客としての役割情報
188
+ model Customer {
189
+ custCode String @map("顧客コード") @db.VarChar(8)
190
+ custSubNo Int @map("顧客枝番")
191
+ arCode String @map("請求先コード") @db.VarChar(8)
192
+ company Company @relation(fields: [custCode], references: [compCode])
193
+ @@id([custCode, custSubNo])
194
+ @@map("顧客マスタ")
195
+ }
196
+
197
+ // 仕入先としての役割情報
198
+ model Supplier {
199
+ supCode String @map("仕入先コード") @db.VarChar(8)
200
+ supSubNo Int @map("仕入先枝番")
201
+ company Company @relation(fields: [supCode], references: [compCode])
202
+ @@id([supCode, supSubNo])
203
+ @@map("仕入先マスタ")
204
+ }
205
+ ```
206
+
207
+ ## テスト戦略
208
+
209
+ ### 1. マスタデータのテスト
210
+
211
+ ```typescript
212
+ describe("マスタデータ", () => {
213
+ beforeAll(async () => {
214
+ // テスト前にデータをクリア
215
+ await prisma.department.deleteMany();
216
+ });
217
+
218
+ test("CRUD操作が正常に動作する", async () => {
219
+ // Create
220
+ await prisma.department.create({ data: testData });
221
+
222
+ // Read
223
+ const result = await prisma.department.findMany();
224
+ expect(result).toEqual([testData]);
225
+
226
+ // Update
227
+ await prisma.department.update({
228
+ where: { id: testData.id },
229
+ data: { name: "更新後の名前" }
230
+ });
231
+
232
+ // Delete
233
+ await prisma.department.delete({ where: { id: testData.id } });
234
+ const empty = await prisma.department.findMany();
235
+ expect(empty).toEqual([]);
236
+ });
237
+ });
238
+ ```
239
+
240
+ ### 2. 関連データのテスト
241
+
242
+ ```typescript
243
+ describe("関連データ", () => {
244
+ test("関連するデータを一括で取得できる", async () => {
245
+ // 関連するマスタを先に登録
246
+ await prisma.$transaction(async (prisma) => {
247
+ await prisma.department.createMany({ data: departments });
248
+ await prisma.employee.createMany({ data: employees });
249
+ });
250
+
251
+ // 関連データを含めて取得
252
+ const result = await prisma.department.findMany({
253
+ include: { employees: true }
254
+ });
255
+
256
+ expect(result[0].employees).toHaveLength(expectedEmployeeCount);
257
+ });
258
+ });
259
+ ```
260
+
261
+ ## 段階的な発展プロセス
262
+
263
+ ### フェーズ1:基本マスタ
264
+ 1. 部門・社員
265
+ 2. 商品・商品分類
266
+ 3. 取引先(Company, Customer, Supplier)
267
+
268
+ ### フェーズ2:基本トランザクション
269
+ 1. 受注・受注明細
270
+ 2. 売上・売上明細
271
+
272
+ ### フェーズ3:調達プロセス
273
+ 1. 発注・発注明細
274
+ 2. 仕入・仕入明細
275
+ 3. 在庫管理
276
+
277
+ ### フェーズ4:財務プロセス
278
+ 1. 請求・請求明細
279
+ 2. 入金管理
280
+ 3. 支払管理
281
+
282
+ ### フェーズ5:補助機能
283
+ 1. 与信管理
284
+ 2. 自動採番
285
+ 3. その他運用支援機能
286
+
287
+ ## 共通設計原則
288
+
289
+ ### 1. 監査証跡の設計
290
+
291
+ すべてのテーブルに以下のカラムを含めます:
292
+
293
+ ```prisma
294
+ createDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("作成日時") @db.Timestamp(6)
295
+ creator String? @map("作成者名") @db.VarChar(12)
296
+ updateDate DateTime @default(dbgenerated("CURRENT_DATE")) @map("更新日時") @db.Timestamp(6)
297
+ updater String? @map("更新者名") @db.VarChar(12)
298
+ ```
299
+
300
+ ### 2. 論理削除vs物理削除
301
+
302
+ - マスタデータ:論理削除(削除フラグ)
303
+ - トランザクションデータ:物理削除または履歴保持
304
+
305
+ ### 3. パフォーマンス考慮
306
+
307
+ - 検索頻度の高いカラムにはインデックスを設定
308
+ - 大量データが予想されるテーブルは分割を検討
309
+ - 集計用のサマリテーブルを必要に応じて作成
310
+
311
+ ## まとめ
312
+
313
+ TDDアプローチによるデータベース設計では:
314
+
315
+ 1. **小さく始める**: 完璧な初期設計を目指さず、最小限の要求から開始
316
+ 2. **テストファースト**: 要求をテストコードで明確に定義
317
+ 3. **段階的改善**: テストに守られながら継続的にスキーマを改善
318
+ 4. **可視化**: ER図で設計の全体像を把握
319
+ 5. **一貫性**: 命名規則や設計パターンを統一
320
+
321
+ このアプローチにより、変化する要求に柔軟に対応しながら、保守性の高いデータベース設計を実現できます。