@sk8metal/michi-cli 0.2.1 → 0.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 (172) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/dist/scripts/config-global.d.ts +10 -0
  3. package/dist/scripts/config-global.d.ts.map +1 -0
  4. package/dist/scripts/config-global.js +111 -0
  5. package/dist/scripts/config-global.js.map +1 -0
  6. package/dist/scripts/confluence-sync.d.ts +22 -4
  7. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  8. package/dist/scripts/confluence-sync.js +22 -12
  9. package/dist/scripts/confluence-sync.js.map +1 -1
  10. package/dist/scripts/jira-sync.d.ts.map +1 -1
  11. package/dist/scripts/jira-sync.js +201 -167
  12. package/dist/scripts/jira-sync.js.map +1 -1
  13. package/dist/scripts/list-projects.js.map +1 -1
  14. package/dist/scripts/multi-project-estimate.js.map +1 -1
  15. package/dist/scripts/phase-runner.d.ts +1 -1
  16. package/dist/scripts/phase-runner.d.ts.map +1 -1
  17. package/dist/scripts/phase-runner.js +295 -522
  18. package/dist/scripts/phase-runner.js.map +1 -1
  19. package/dist/scripts/pre-flight-check.d.ts.map +1 -1
  20. package/dist/scripts/pre-flight-check.js +10 -6
  21. package/dist/scripts/pre-flight-check.js.map +1 -1
  22. package/dist/scripts/resource-dashboard.js.map +1 -1
  23. package/dist/scripts/spec-impl-workflow.js +1 -1
  24. package/dist/scripts/spec-impl-workflow.js.map +1 -1
  25. package/dist/scripts/template/renderer.d.ts +1 -1
  26. package/dist/scripts/template/renderer.d.ts.map +1 -1
  27. package/dist/scripts/test-interactive.d.ts.map +1 -1
  28. package/dist/scripts/test-interactive.js +0 -15
  29. package/dist/scripts/test-interactive.js.map +1 -1
  30. package/dist/scripts/test-new-features.js +6 -3
  31. package/dist/scripts/test-new-features.js.map +1 -1
  32. package/dist/scripts/test-spec-generator.d.ts.map +1 -1
  33. package/dist/scripts/test-spec-generator.js +1 -2
  34. package/dist/scripts/test-spec-generator.js.map +1 -1
  35. package/dist/scripts/utils/config-loader.d.ts +7 -2
  36. package/dist/scripts/utils/config-loader.d.ts.map +1 -1
  37. package/dist/scripts/utils/config-loader.js +79 -8
  38. package/dist/scripts/utils/config-loader.js.map +1 -1
  39. package/dist/scripts/utils/config-sections.d.ts +54 -0
  40. package/dist/scripts/utils/config-sections.d.ts.map +1 -0
  41. package/dist/scripts/utils/config-sections.js +178 -0
  42. package/dist/scripts/utils/config-sections.js.map +1 -0
  43. package/dist/scripts/utils/config-validator.d.ts +4 -0
  44. package/dist/scripts/utils/config-validator.d.ts.map +1 -1
  45. package/dist/scripts/utils/config-validator.js +57 -1
  46. package/dist/scripts/utils/config-validator.js.map +1 -1
  47. package/dist/scripts/utils/confluence-approval.d.ts.map +1 -1
  48. package/dist/scripts/utils/confluence-approval.js +5 -3
  49. package/dist/scripts/utils/confluence-approval.js.map +1 -1
  50. package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -1
  51. package/dist/scripts/utils/confluence-hierarchy.js.map +1 -1
  52. package/dist/scripts/utils/interactive-helpers.d.ts +32 -0
  53. package/dist/scripts/utils/interactive-helpers.d.ts.map +1 -0
  54. package/dist/scripts/utils/interactive-helpers.js +92 -0
  55. package/dist/scripts/utils/interactive-helpers.js.map +1 -0
  56. package/dist/scripts/utils/jira-issue-type-fetcher.d.ts.map +1 -1
  57. package/dist/scripts/utils/jira-issue-type-fetcher.js +27 -18
  58. package/dist/scripts/utils/jira-issue-type-fetcher.js.map +1 -1
  59. package/dist/scripts/utils/release-notes-generator.d.ts.map +1 -1
  60. package/dist/scripts/utils/release-notes-generator.js +2 -1
  61. package/dist/scripts/utils/release-notes-generator.js.map +1 -1
  62. package/dist/scripts/utils/spec-updater.d.ts +19 -0
  63. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  64. package/dist/scripts/utils/spec-updater.js.map +1 -1
  65. package/dist/scripts/utils/tasks-converter.d.ts.map +1 -1
  66. package/dist/scripts/utils/tasks-converter.js +2 -2
  67. package/dist/scripts/utils/tasks-converter.js.map +1 -1
  68. package/dist/scripts/utils/tasks-format-validator.d.ts.map +1 -1
  69. package/dist/scripts/utils/tasks-format-validator.js +0 -12
  70. package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
  71. package/dist/scripts/utils/test-runner.d.ts.map +1 -1
  72. package/dist/scripts/utils/test-runner.js +3 -2
  73. package/dist/scripts/utils/test-runner.js.map +1 -1
  74. package/dist/scripts/validate-phase.d.ts +1 -1
  75. package/dist/scripts/validate-phase.d.ts.map +1 -1
  76. package/dist/scripts/validate-phase.js +12 -62
  77. package/dist/scripts/validate-phase.js.map +1 -1
  78. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
  79. package/dist/scripts/workflow-orchestrator.js +11 -16
  80. package/dist/scripts/workflow-orchestrator.js.map +1 -1
  81. package/dist/src/__tests__/integration/setup/claude.test.js +8 -8
  82. package/dist/src/__tests__/integration/setup/claude.test.js.map +1 -1
  83. package/dist/src/__tests__/integration/setup/init.test.d.ts +5 -0
  84. package/dist/src/__tests__/integration/setup/init.test.d.ts.map +1 -0
  85. package/dist/src/__tests__/integration/setup/init.test.js +352 -0
  86. package/dist/src/__tests__/integration/setup/init.test.js.map +1 -0
  87. package/dist/src/cli.d.ts.map +1 -1
  88. package/dist/src/cli.js +29 -21
  89. package/dist/src/cli.js.map +1 -1
  90. package/dist/src/commands/init.d.ts +28 -0
  91. package/dist/src/commands/init.d.ts.map +1 -0
  92. package/dist/src/commands/init.js +490 -0
  93. package/dist/src/commands/init.js.map +1 -0
  94. package/dist/src/commands/setup-existing.d.ts +1 -1
  95. package/dist/src/commands/setup-existing.d.ts.map +1 -1
  96. package/dist/src/commands/setup-existing.js +49 -3
  97. package/dist/src/commands/setup-existing.js.map +1 -1
  98. package/docs/user-guide/getting-started/new-repository-setup.md +1 -1
  99. package/docs/user-guide/getting-started/setup.md +33 -5
  100. package/docs/user-guide/guides/agent-skills-integration.md +16 -11
  101. package/docs/user-guide/guides/customization.md +64 -11
  102. package/docs/user-guide/guides/workflow.md +35 -21
  103. package/docs/user-guide/hands-on/claude-agent-setup.md +192 -50
  104. package/docs/user-guide/hands-on/claude-setup.md +63 -9
  105. package/docs/user-guide/hands-on/cursor-setup.md +9 -8
  106. package/docs/user-guide/hands-on/verification-checklist.md +4 -3
  107. package/docs/user-guide/hands-on/workflow-walkthrough.md +3 -3
  108. package/docs/user-guide/reference/config.md +30 -5
  109. package/docs/user-guide/reference/quick-reference.md +70 -74
  110. package/docs/user-guide/testing/test-planning-flow.md +4 -0
  111. package/package.json +2 -4
  112. package/scripts/config-global.ts +160 -0
  113. package/scripts/confluence-sync.ts +91 -27
  114. package/scripts/jira-sync.ts +284 -218
  115. package/scripts/list-projects.ts +2 -2
  116. package/scripts/multi-project-estimate.ts +3 -3
  117. package/scripts/phase-runner.ts +391 -594
  118. package/scripts/pre-flight-check.ts +20 -9
  119. package/scripts/pre-publish-check.sh +3 -34
  120. package/scripts/resource-dashboard.ts +4 -4
  121. package/scripts/spec-impl-workflow.ts +1 -1
  122. package/scripts/template/renderer.ts +1 -1
  123. package/scripts/test-interactive.ts +0 -19
  124. package/scripts/test-new-features.ts +10 -7
  125. package/scripts/test-npm-package.sh +3 -34
  126. package/scripts/test-spec-generator.ts +3 -7
  127. package/scripts/utils/config-loader.ts +107 -26
  128. package/scripts/utils/config-sections.ts +316 -0
  129. package/scripts/utils/config-validator.ts +66 -1
  130. package/scripts/utils/confluence-approval.ts +8 -6
  131. package/scripts/utils/confluence-hierarchy.ts +27 -27
  132. package/scripts/utils/interactive-helpers.ts +135 -0
  133. package/scripts/utils/jira-issue-type-fetcher.ts +29 -21
  134. package/scripts/utils/release-notes-generator.ts +3 -2
  135. package/scripts/utils/spec-updater.ts +37 -15
  136. package/scripts/utils/tasks-converter.ts +4 -6
  137. package/scripts/utils/tasks-format-validator.ts +0 -13
  138. package/scripts/utils/test-runner.ts +4 -3
  139. package/scripts/validate-phase.ts +21 -80
  140. package/scripts/workflow-orchestrator.ts +16 -25
  141. package/templates/claude/commands/kiro/kiro-spec-impl.md +4 -0
  142. package/templates/claude/commands/kiro/kiro-spec-tasks.md +3 -1
  143. package/templates/claude/commands/michi/confluence-sync.md +8 -2
  144. package/templates/claude/commands/michi/design-review.md +4 -0
  145. package/templates/claude/commands/michi/e2e-plan.md +4 -0
  146. package/templates/claude/commands/michi/license-check.md +4 -0
  147. package/templates/claude/commands/michi/pr-resolve.md +4 -0
  148. package/templates/claude/commands/michi/project-switch.md +8 -2
  149. package/templates/claude/commands/michi/spec-design.md +78 -0
  150. package/templates/claude/commands/michi/spec-impl.md +716 -0
  151. package/templates/claude/commands/michi/test-planning.md +174 -0
  152. package/templates/claude/commands/michi/validate-design.md +58 -0
  153. package/templates/claude/commands/michi/version-audit.md +4 -0
  154. package/templates/michi/cc-sdd-overrides/README.md +58 -0
  155. package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +53 -0
  156. package/templates/michi/cc-sdd-overrides/settings/templates/specs/init.json +24 -0
  157. package/templates/michi/cc-sdd-overrides/settings/templates/specs/tasks.md +446 -0
  158. package/dist/scripts/config-interactive.d.ts +0 -10
  159. package/dist/scripts/config-interactive.d.ts.map +0 -1
  160. package/dist/scripts/config-interactive.js +0 -372
  161. package/dist/scripts/config-interactive.js.map +0 -1
  162. package/dist/scripts/setup-existing-project.d.ts +0 -15
  163. package/dist/scripts/setup-existing-project.d.ts.map +0 -1
  164. package/dist/scripts/setup-existing-project.js +0 -455
  165. package/dist/scripts/setup-existing-project.js.map +0 -1
  166. package/dist/scripts/setup-interactive.d.ts +0 -10
  167. package/dist/scripts/setup-interactive.d.ts.map +0 -1
  168. package/dist/scripts/setup-interactive.js +0 -413
  169. package/dist/scripts/setup-interactive.js.map +0 -1
  170. package/scripts/config-interactive.ts +0 -550
  171. package/scripts/setup-existing-project.ts +0 -585
  172. package/scripts/setup-interactive.ts +0 -565
@@ -0,0 +1,716 @@
1
+ ---
2
+ name: /michi:spec-impl
3
+ description: Execute spec tasks using TDD methodology with quality automation (Michi version)
4
+ allowed-tools: Task, Bash, Read, Write, Edit, MultiEdit, Grep, Glob, LS, WebFetch, WebSearch
5
+ argument-hint: <feature-name> [task-numbers] [--mutation] [--skip-license] [--skip-version] [--skip-design]
6
+ ---
7
+
8
+ # Michi: Spec Implementation with Quality Automation
9
+
10
+ ## Base Command Reference
11
+ @.claude/commands/kiro/spec-impl.md
12
+
13
+ ## Development Guidelines
14
+
15
+ {{DEV_GUIDELINES}}
16
+
17
+ ---
18
+
19
+ ## Michi Extension: Quality Automation & Parallel Execution
20
+
21
+ このコマンドは cc-sdd 標準の `/kiro:spec-impl` を拡張し、以下のMichi固有機能を追加します:
22
+
23
+ ### 追加機能
24
+ 1. **事前品質監査(Phase 1)**: サブエージェント並行実行でライセンス・バージョンリスクを早期検出
25
+ 2. **自動修正ループ(Phase 2)**: type-check、lint、test を自動修正(最大5回)
26
+ 3. **事後品質レビュー(Phase 3)**: コードレビュー、デザインレビュー(Frontend時)
27
+ 4. **最終品質ゲート(Phase 4)**: カバレッジ95%、Mutation Testing(オプション)
28
+
29
+ ### コマンドシグネチャ
30
+
31
+ ```bash
32
+ /michi:spec-impl <feature-name> [task-numbers] [options]
33
+
34
+ Arguments:
35
+ feature-name 機能名(必須)
36
+ task-numbers タスク番号(オプション、例: "1.1" or "1,2,3")
37
+
38
+ Options:
39
+ --mutation Mutation Testing を実行(Phase 4)
40
+ --skip-license ライセンスチェックをスキップ
41
+ --skip-version バージョンチェックをスキップ
42
+ --skip-design デザインレビューをスキップ(Frontend検出時)
43
+ ```
44
+
45
+ ---
46
+
47
+ ## 実行フロー
48
+
49
+ ```plaintext
50
+ Phase 0: コンテキストロード(kiro:spec-impl継承)
51
+
52
+ Phase 1: 事前品質監査(Michi拡張)
53
+ ├─ oss-license-checker(並行)
54
+ ├─ stable-version-auditor(並行)
55
+ └─ Frontend検出判定(並行)
56
+
57
+ Phase 2: TDD実装サイクル(kiro:spec-impl継承 + 自動修正ループ拡張)
58
+ RED → GREEN → REFACTOR → VERIFY(最大5回) → MARK
59
+
60
+ Phase 3: 事後品質レビュー(Michi拡張)
61
+ ├─ コードレビュー(常に)
62
+ └─ デザインレビュー(Frontend時のみ)
63
+
64
+ Phase 4: 最終検証(Michi拡張)
65
+ type-check + lint + test + coverage 95% + Mutation Testing(オプション)
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Phase 1: 事前品質監査(Michi拡張)
71
+
72
+ ### 目的
73
+ 実装前にライセンス・バージョンリスクを早期検出し、Critical問題を事前に解決。
74
+
75
+ ### 実行手順
76
+
77
+ #### Step 1.1: オプション解析
78
+
79
+ ```bash
80
+ # コマンドライン引数を解析
81
+ SKIP_LICENSE=false
82
+ SKIP_VERSION=false
83
+ SKIP_DESIGN=false
84
+ MUTATION=false
85
+
86
+ if echo "$@" | grep -q -- '--skip-license'; then
87
+ SKIP_LICENSE=true
88
+ fi
89
+
90
+ if echo "$@" | grep -q -- '--skip-version'; then
91
+ SKIP_VERSION=true
92
+ fi
93
+
94
+ if echo "$@" | grep -q -- '--skip-design'; then
95
+ SKIP_DESIGN=true
96
+ fi
97
+
98
+ if echo "$@" | grep -q -- '--mutation'; then
99
+ MUTATION=true
100
+ fi
101
+
102
+ # レポート出力用の変数初期化
103
+ COMPLETED_TASKS=0
104
+ TOTAL_TASKS=0
105
+ OSS_LICENSE_STATUS="UNKNOWN"
106
+ VERSION_AUDIT_STATUS="UNKNOWN"
107
+ DESIGN_REVIEW_STATUS="SKIPPED"
108
+ CODE_REVIEW_CRITICAL=0
109
+ DESIGN_REVIEW_CRITICAL=0
110
+ ```
111
+
112
+ #### Step 1.2: サブエージェント並行起動
113
+
114
+ **重要**: 以下の3つのタスクは独立しているため、**並行実行**してください。単一メッセージで複数のTaskツール呼び出しを行います。
115
+
116
+ ```markdown
117
+ ## サブエージェント並行起動(Phase 1)
118
+
119
+ Phase 1では以下の3つのサブエージェントを**並行起動**します:
120
+
121
+ ### 1. oss-license-checker
122
+ ```yaml
123
+ Task tool:
124
+ subagent_type: oss-license-checker
125
+ prompt: |
126
+ プロジェクトの依存パッケージライセンスを監査してください。
127
+
128
+ **監査対象**:
129
+ - package.json / package-lock.json(Node.js)
130
+ - requirements.txt / pyproject.toml(Python)
131
+ - build.gradle / pom.xml(Java)
132
+ - composer.json(PHP)
133
+
134
+ **検出すべきライセンス**:
135
+ - 🔴 Critical: GPL, AGPL, SSPL → 即時停止
136
+ - 🟡 Warning: LGPL, MPL → 警告表示
137
+
138
+ **出力形式**:
139
+ - Critical件数: X件
140
+ - Warning件数: Y件
141
+ - 代替パッケージ提案(Critical時)
142
+ ```
143
+
144
+ ### 2. stable-version-auditor
145
+ ```yaml
146
+ Task tool:
147
+ subagent_type: stable-version-auditor
148
+ prompt: |
149
+ プロジェクトの技術スタックバージョンを監査してください。
150
+
151
+ **監査対象**:
152
+ - Node.js version(package.json, .nvmrc, Dockerfile)
153
+ - Python version(pyproject.toml, .python-version)
154
+ - Java version(pom.xml, build.gradle)
155
+
156
+ **検出すべきリスク**:
157
+ - 🔴 Critical: EOL済み → 即時停止
158
+ - 🟡 Warning: EOL 6ヶ月以内 → 警告表示
159
+ - 🟢 Info: 最新LTSでない → 情報表示
160
+
161
+ **出力形式**:
162
+ - Critical件数: X件
163
+ - Warning件数: Y件
164
+ - アップグレードパス提案(Critical時)
165
+ ```
166
+
167
+ ### 3. Frontend検出
168
+ ```bash
169
+ # 並行実行タスク:
170
+ # ローカル検出ロジック(Task toolは使用せず、直接実行)
171
+
172
+ # Frontend変更を検出
173
+ FRONTEND_DETECTED=false
174
+
175
+ # 対象ファイル拡張子
176
+ if find . -type f \( \
177
+ -name "*.tsx" -o \
178
+ -name "*.jsx" -o \
179
+ -name "*.vue" -o \
180
+ -name "*.svelte" \
181
+ \) | head -1 | grep -q .; then
182
+ FRONTEND_DETECTED=true
183
+ fi
184
+
185
+ # CSSファイル
186
+ if find . -type f \( \
187
+ -name "*.css" -o \
188
+ -name "*.scss" -o \
189
+ -name "*.sass" -o \
190
+ -name "*.less" \
191
+ \) | head -1 | grep -q .; then
192
+ FRONTEND_DETECTED=true
193
+ fi
194
+
195
+ # Tailwind設定
196
+ if [ -f "tailwind.config.js" ] || [ -f "tailwind.config.ts" ]; then
197
+ FRONTEND_DETECTED=true
198
+ fi
199
+
200
+ # Frontendディレクトリ
201
+ if [ -d "components" ] || [ -d "pages" ] || [ -d "views" ]; then
202
+ FRONTEND_DETECTED=true
203
+ fi
204
+
205
+ echo "Frontend detected: $FRONTEND_DETECTED"
206
+ ```
207
+
208
+ **並行実行の実装例**:
209
+ ```plaintext
210
+ 単一メッセージで以下を実行:
211
+ - Task tool(oss-license-checker)
212
+ - Task tool(stable-version-auditor)
213
+ - Bash tool(Frontend検出)
214
+ ```
215
+
216
+ #### Step 1.3: 結果集約とゲート判定
217
+
218
+ ```bash
219
+ # 結果集約
220
+ TOTAL_CRITICAL=0
221
+ TOTAL_WARNING=0
222
+
223
+ # oss-license-checker結果
224
+ if [ "$OSS_LICENSE_CRITICAL" -gt 0 ]; then
225
+ TOTAL_CRITICAL=$((TOTAL_CRITICAL + OSS_LICENSE_CRITICAL))
226
+ fi
227
+
228
+ # stable-version-auditor結果
229
+ if [ "$VERSION_AUDIT_CRITICAL" -gt 0 ]; then
230
+ TOTAL_CRITICAL=$((TOTAL_CRITICAL + VERSION_AUDIT_CRITICAL))
231
+ fi
232
+
233
+ # ゲート判定
234
+ if [ "$TOTAL_CRITICAL" -gt 0 ]; then
235
+ echo "🔴 Critical issues detected: $TOTAL_CRITICAL"
236
+ echo ""
237
+ echo "以下の対応が必要です:"
238
+ echo "1. 禁止ライセンス(GPL/AGPL/SSPL)を使用しているパッケージを代替"
239
+ echo "2. EOL済みバージョンをアップグレード"
240
+ echo ""
241
+ echo "次のアクション:"
242
+ echo "A) 代替パッケージ/アップグレードを実施する"
243
+ echo "B) 詳細レポートを確認する"
244
+ echo "C) 実装を中止する"
245
+
246
+ # ユーザー確認
247
+ read -p "どの対応を希望しますか? (A/B/C): " ACTION
248
+
249
+ if [ "$ACTION" != "A" ]; then
250
+ echo "実装を中止します"
251
+ exit 1
252
+ fi
253
+ else
254
+ echo "✅ Phase 1: 事前品質監査 完了(Critical: 0, Warning: $TOTAL_WARNING)"
255
+ fi
256
+ ```
257
+
258
+ ---
259
+
260
+ ## Phase 2: TDD実装サイクル(自動修正ループ拡張)
261
+
262
+ ### 目的
263
+ kiro:spec-implの基本TDDサイクルに、**自動修正ループ**を追加。
264
+
265
+ ### Step 2.4: VERIFY - 品質チェック(自動修正ループ)
266
+
267
+ ```bash
268
+ # 各タスク実装後、品質チェックを実行
269
+ ITERATION=0
270
+ MAX_ITERATIONS=5
271
+
272
+ while [ $ITERATION -lt $MAX_ITERATIONS ]; do
273
+ echo "=== 品質チェック(試行 $((ITERATION + 1))/$MAX_ITERATIONS)==="
274
+
275
+ # Type Check
276
+ if ! npm run type-check 2>&1 | tee /tmp/type-check.log; then
277
+ echo "❌ Type check failed"
278
+ TYPE_CHECK_FAILED=true
279
+ else
280
+ echo "✅ Type check passed"
281
+ TYPE_CHECK_FAILED=false
282
+ fi
283
+
284
+ # Lint
285
+ if ! npm run lint 2>&1 | tee /tmp/lint.log; then
286
+ echo "❌ Lint failed"
287
+ LINT_FAILED=true
288
+ else
289
+ echo "✅ Lint passed"
290
+ LINT_FAILED=false
291
+ fi
292
+
293
+ # Test
294
+ if ! npm run test:run 2>&1 | tee /tmp/test.log; then
295
+ echo "❌ Test failed"
296
+ TEST_FAILED=true
297
+ else
298
+ echo "✅ Test passed"
299
+ TEST_FAILED=false
300
+ fi
301
+
302
+ # 全て成功したらループ終了
303
+ if [ "$TYPE_CHECK_FAILED" = false ] && [ "$LINT_FAILED" = false ] && [ "$TEST_FAILED" = false ]; then
304
+ echo "✅ 全ての品質チェックが成功しました"
305
+ break
306
+ fi
307
+
308
+ # 自動修正を試行
309
+ echo "⚙️ 自動修正を試行します..."
310
+
311
+ # Lint修正
312
+ if [ "$LINT_FAILED" = true ]; then
313
+ echo "🔧 Lint自動修正を実行"
314
+ npm run lint:fix
315
+ fi
316
+
317
+ # 型エラー修正(簡易的な自動修正)
318
+ if [ "$TYPE_CHECK_FAILED" = true ]; then
319
+ echo "🔧 型エラーを分析中..."
320
+ # 型エラーログを分析して修正案を提示
321
+ # (実際の修正はAIによる判断が必要)
322
+ fi
323
+
324
+ # テスト失敗修正(実装バグの可能性)
325
+ if [ "$TEST_FAILED" = true ]; then
326
+ echo "🔧 テスト失敗を分析中..."
327
+ # テストログを分析して修正案を提示
328
+ # ⚠️ 注意: テストは仕様。仕様変更の場合のみテストを修正
329
+ fi
330
+
331
+ ITERATION=$((ITERATION + 1))
332
+ done
333
+
334
+ # 最大試行回数に達した場合
335
+ if [ $ITERATION -eq $MAX_ITERATIONS ]; then
336
+ echo "❌ 自動修正ループが最大試行回数($MAX_ITERATIONS)に達しました"
337
+ echo ""
338
+ echo "以下の問題が残っています:"
339
+ [ "$TYPE_CHECK_FAILED" = true ] && echo "- Type check失敗"
340
+ [ "$LINT_FAILED" = true ] && echo "- Lint失敗"
341
+ [ "$TEST_FAILED" = true ] && echo "- Test失敗"
342
+ echo ""
343
+ echo "次のアクション:"
344
+ echo "A) 手動で修正を続ける"
345
+ echo "B) 現在のタスクをスキップ"
346
+ echo "C) 実装を中止"
347
+
348
+ # ユーザー確認
349
+ read -p "どの対応を希望しますか? (A/B/C): " ACTION
350
+
351
+ if [ "$ACTION" = "C" ]; then
352
+ echo "実装を中止します"
353
+ exit 1
354
+ fi
355
+ fi
356
+ ```
357
+
358
+ ---
359
+
360
+ ## Phase 3: 事後品質レビュー(Michi拡張)
361
+
362
+ ### 目的
363
+ 実装完了後、コードレビューとデザインレビュー(Frontend時)を実行。
364
+
365
+ ### Step 3.1: コードレビュー(常に実行)
366
+
367
+ ```markdown
368
+ ## コードレビュー実行
369
+
370
+ Task tool:
371
+ subagent_type: review-cq
372
+ prompt: |
373
+ 実装完了したコードをレビューしてください。
374
+
375
+ **レビュー対象機能**: $1
376
+
377
+ **レビュー観点**:
378
+ - コード品質: 可読性、保守性、DRY原則
379
+ - セキュリティ: 入力検証、XSS、SQLインジェクション
380
+ - パフォーマンス: アルゴリズム効率、メモリ使用量
381
+ - テスト: テストカバレッジ、テストの質
382
+
383
+ **重要度分類**:
384
+ - 🔴 Critical: 即時修正必須
385
+ - 🟡 Warning: 対応推奨
386
+ - 🟢 Info: 改善提案
387
+
388
+ **出力形式**:
389
+ - Critical件数: X件
390
+ - Warning件数: Y件
391
+ - 修正推奨箇所の詳細リスト
392
+ ```
393
+
394
+ ### Step 3.2: デザインレビュー(Frontend検出時のみ)
395
+
396
+ ```bash
397
+ # Frontend検出結果に基づいて実行
398
+ if [ "$FRONTEND_DETECTED" = true ] && [ "$SKIP_DESIGN" = false ]; then
399
+ echo "=== Frontend変更を検出 → デザインレビューを実行 ==="
400
+ ```
401
+
402
+ ```markdown
403
+ Task tool:
404
+ subagent_type: design-reviewer
405
+ prompt: |
406
+ Frontend実装をレビューしてください。
407
+
408
+ **レビュー対象URL**: http://localhost:3000(開発サーバーが起動している前提)
409
+
410
+ **レビュー観点**:
411
+ - アクセシビリティ(WCAG 2.1)
412
+ - レスポンシブデザイン(375px, 768px, 1280px)
413
+ - UXパターン
414
+ - パフォーマンス(Core Web Vitals)
415
+
416
+ **実行手順**:
417
+ 1. Playwright MCPでページアクセス
418
+ 2. 各ブレークポイントでスクリーンショット取得
419
+ 3. アクセシビリティツリー分析
420
+ 4. コントラスト比チェック
421
+ 5. LCP/CLS測定
422
+
423
+ **出力先**: docs/tmp/design-review-report.md
424
+ ```
425
+
426
+ ```bash
427
+ else
428
+ echo "✅ Frontend変更なし → デザインレビューをスキップ"
429
+ fi
430
+ ```
431
+
432
+ ### Step 3.3: レビューループ(最大5回)
433
+
434
+ ```bash
435
+ # レビュー結果に基づいて自動修正
436
+ REVIEW_ITERATION=0
437
+ MAX_REVIEW_ITERATIONS=5
438
+
439
+ while [ $REVIEW_ITERATION -lt $MAX_REVIEW_ITERATIONS ]; do
440
+ echo "=== レビュー修正(試行 $((REVIEW_ITERATION + 1))/$MAX_REVIEW_ITERATIONS)==="
441
+
442
+ # コードレビュー結果
443
+ CODE_REVIEW_CRITICAL=$(cat /tmp/code-review.json | jq '.critical_count')
444
+
445
+ # デザインレビュー結果(Frontend時のみ)
446
+ if [ "$FRONTEND_DETECTED" = true ]; then
447
+ DESIGN_REVIEW_CRITICAL=$(cat /tmp/design-review.json | jq '.critical_count')
448
+ else
449
+ DESIGN_REVIEW_CRITICAL=0
450
+ fi
451
+
452
+ # Critical問題がなければループ終了
453
+ if [ "$CODE_REVIEW_CRITICAL" -eq 0 ] && [ "$DESIGN_REVIEW_CRITICAL" -eq 0 ]; then
454
+ echo "✅ レビュー完了(Critical: 0)"
455
+ break
456
+ fi
457
+
458
+ # 自動修正を試行
459
+ echo "⚙️ レビュー指摘事項を自動修正中..."
460
+
461
+ # コードレビュー指摘の修正
462
+ # (実際の修正はAIによる判断が必要)
463
+
464
+ # デザインレビュー指摘の修正
465
+ # (CSS、HTML、ARIA属性の修正)
466
+
467
+ REVIEW_ITERATION=$((REVIEW_ITERATION + 1))
468
+ done
469
+
470
+ # 最大試行回数に達した場合
471
+ if [ $REVIEW_ITERATION -eq $MAX_REVIEW_ITERATIONS ]; then
472
+ echo "❌ レビュー修正ループが最大試行回数($MAX_REVIEW_ITERATIONS)に達しました"
473
+ echo ""
474
+ echo "次のアクション:"
475
+ echo "A) 手動で修正を続ける"
476
+ echo "B) 残りの問題を後回しにして続行"
477
+ echo "C) 実装を中止"
478
+
479
+ # ユーザー確認
480
+ read -p "どの対応を希望しますか? (A/B/C): " ACTION
481
+
482
+ if [ "$ACTION" = "C" ]; then
483
+ echo "実装を中止します"
484
+ exit 1
485
+ fi
486
+ fi
487
+ ```
488
+
489
+ ---
490
+
491
+ ## Phase 4: 最終検証(Michi拡張)
492
+
493
+ ### 目的
494
+ 全品質基準の最終確認。カバレッジ95%以上、Mutation Testing(オプション)。
495
+
496
+ ### Step 4.1: 品質チェック最終実行
497
+
498
+ ```bash
499
+ echo "=== Phase 4: 最終検証 ==="
500
+
501
+ # 言語検出
502
+ LANGUAGE="unknown"
503
+ if [ -f "package.json" ]; then
504
+ LANGUAGE="nodejs"
505
+ elif [ -f "build.gradle" ]; then
506
+ LANGUAGE="java"
507
+ elif [ -f "pyproject.toml" ]; then
508
+ LANGUAGE="python"
509
+ elif [ -f "composer.json" ]; then
510
+ LANGUAGE="php"
511
+ fi
512
+
513
+ echo "🔍 Detected language: $LANGUAGE"
514
+
515
+ # 言語別品質チェック
516
+ case "$LANGUAGE" in
517
+ nodejs)
518
+ echo "▶ Running Node.js quality checks..."
519
+ npm run type-check
520
+ if [ $? -ne 0 ]; then
521
+ echo "❌ Type check failed"
522
+ exit 1
523
+ fi
524
+
525
+ npm run lint
526
+ if [ $? -ne 0 ]; then
527
+ echo "❌ Lint failed"
528
+ exit 1
529
+ fi
530
+
531
+ npm run test:coverage
532
+ if [ $? -ne 0 ]; then
533
+ echo "❌ Test failed"
534
+ exit 1
535
+ fi
536
+
537
+ COVERAGE=$(cat coverage/coverage-summary.json | jq '.total.lines.pct')
538
+ ;;
539
+
540
+ java)
541
+ echo "▶ Running Java quality checks..."
542
+ ./gradlew check
543
+ if [ $? -ne 0 ]; then
544
+ echo "❌ Gradle check failed"
545
+ exit 1
546
+ fi
547
+
548
+ # JaCoCo coverage report parsing (堅牢な実装)
549
+ if [ -f "build/reports/jacoco/test/jacocoTestReport.xml" ]; then
550
+ COVERAGE=$(grep -oP '<counter type="LINE"\s+missed="\K[0-9]+|covered="\K[0-9]+' build/reports/jacoco/test/jacocoTestReport.xml | \
551
+ awk 'NR==1{m=$1} NR==2{c=$1} END {if(m+c>0) printf "%.1f", c*100/(m+c); else print 100}')
552
+ else
553
+ echo "⚠ JaCoCo report not found, skipping coverage check"
554
+ COVERAGE=100
555
+ fi
556
+ ;;
557
+
558
+ python)
559
+ echo "▶ Running Python quality checks..."
560
+ pytest --cov=. --cov-report=json --cov-fail-under=95
561
+ if [ $? -ne 0 ]; then
562
+ echo "❌ Pytest failed"
563
+ exit 1
564
+ fi
565
+
566
+ COVERAGE=$(cat coverage.json | jq '.totals.percent_covered')
567
+ ;;
568
+
569
+ php)
570
+ echo "▶ Running PHP quality checks..."
571
+ ./vendor/bin/phpunit --coverage-clover=coverage/clover.xml
572
+ if [ $? -ne 0 ]; then
573
+ echo "❌ PHPUnit failed"
574
+ exit 1
575
+ fi
576
+
577
+ # Clover XML coverage parsing (堅牢な実装)
578
+ if [ -f "coverage/clover.xml" ]; then
579
+ TOTAL_STATEMENTS=$(grep -oP '<metrics.*?statements="\K[0-9]+' coverage/clover.xml | awk '{sum+=$1} END {print sum}')
580
+ COVERED_STATEMENTS=$(grep -oP '<metrics.*?coveredstatements="\K[0-9]+' coverage/clover.xml | awk '{sum+=$1} END {print sum}')
581
+ if [ -n "$TOTAL_STATEMENTS" ] && [ "$TOTAL_STATEMENTS" -gt 0 ]; then
582
+ COVERAGE=$(echo "scale=1; $COVERED_STATEMENTS * 100 / $TOTAL_STATEMENTS" | bc)
583
+ else
584
+ COVERAGE=100
585
+ fi
586
+ else
587
+ echo "⚠ Clover report not found, skipping coverage check"
588
+ COVERAGE=100
589
+ fi
590
+ ;;
591
+
592
+ *)
593
+ echo "❌ Unsupported language: $LANGUAGE"
594
+ exit 1
595
+ ;;
596
+ esac
597
+
598
+ # カバレッジ判定(95%以上)
599
+ if (( $(echo "$COVERAGE < 95" | bc -l) )); then
600
+ echo "❌ Coverage failed: ${COVERAGE}% (required: 95%)"
601
+ exit 1
602
+ else
603
+ echo "✅ Coverage passed: ${COVERAGE}%"
604
+ fi
605
+ ```
606
+
607
+ ### Step 4.2: Mutation Testing(オプション)
608
+
609
+ ```bash
610
+ if [ "$MUTATION" = true ]; then
611
+ echo "=== Mutation Testing ==="
612
+
613
+ # Step 4.1 で検出済みの $LANGUAGE 変数を再利用
614
+ case "$LANGUAGE" in
615
+ nodejs)
616
+ echo "🔍 Node.js/TypeScript → Stryker"
617
+ npx stryker run
618
+ MUTATION_SCORE=$(cat reports/mutation/mutation.json | jq '.mutationScore')
619
+ ;;
620
+
621
+ java)
622
+ echo "🔍 Java → PITest"
623
+ ./gradlew pitest
624
+ MUTATION_SCORE=$(cat build/reports/pitest/index.html | grep -oP 'mutation score: \K[0-9]+')
625
+ ;;
626
+
627
+ python)
628
+ echo "🔍 Python → mutmut"
629
+ mutmut run
630
+ MUTATION_SCORE=$(mutmut show | grep -oP 'score: \K[0-9]+')
631
+ ;;
632
+
633
+ php)
634
+ echo "🔍 PHP → Infection"
635
+ ./vendor/bin/infection
636
+ MUTATION_SCORE=$(cat infection.json | jq '.mutation_score')
637
+ ;;
638
+
639
+ *)
640
+ echo "❌ Mutation Testing not supported for: $LANGUAGE"
641
+ exit 1
642
+ ;;
643
+ esac
644
+
645
+ # Mutation Score判定(80%以上)
646
+ if (( $(echo "$MUTATION_SCORE < 80" | bc -l) )); then
647
+ echo "❌ Mutation Testing failed: ${MUTATION_SCORE}% (required: 80%)"
648
+ exit 1
649
+ else
650
+ echo "✅ Mutation Testing passed: ${MUTATION_SCORE}%"
651
+ fi
652
+ fi
653
+ ```
654
+
655
+ ### Step 4.3: 最終レポート出力
656
+
657
+ ```bash
658
+ echo ""
659
+ echo "======================================"
660
+ echo " /michi:spec-impl 実行結果"
661
+ echo "======================================"
662
+ echo ""
663
+ echo "## サマリー"
664
+ echo "- 機能名: $1"
665
+ echo "- 実行タスク: ${COMPLETED_TASKS}/${TOTAL_TASKS} 完了"
666
+ echo "- 最終ステータス: SUCCESS"
667
+ echo ""
668
+ echo "## 事前監査結果"
669
+ echo "- OSS License: ${OSS_LICENSE_STATUS}"
670
+ echo "- Version Audit: ${VERSION_AUDIT_STATUS}"
671
+ echo "- Frontend検出: ${FRONTEND_DETECTED}"
672
+ echo ""
673
+ echo "## 品質チェック結果"
674
+ echo "- Type Check: PASS"
675
+ echo "- Lint: PASS"
676
+ echo "- Test: PASS (Coverage: ${COVERAGE}%)"
677
+ echo "- Code Review: PASS"
678
+ echo "- Design Review: ${DESIGN_REVIEW_STATUS}"
679
+ if [ "$MUTATION" = true ]; then
680
+ echo "- Mutation Testing: PASS (Score: ${MUTATION_SCORE}%)"
681
+ fi
682
+ echo ""
683
+ echo "======================================"
684
+ ```
685
+
686
+ ---
687
+
688
+ ## 安全性ルール
689
+
690
+ ### 必須確認ケース
691
+
692
+ 1. **Phase 1でCritical検出時**: 必ずユーザー確認、代替案提示
693
+ 2. **Phase 2で自動修正失敗時**: 最大5回試行後、ユーザー確認
694
+ 3. **Phase 3でレビュー失敗時**: 最大5回修正後、ユーザー確認
695
+ 4. **Phase 4でカバレッジ不足時**: 即時停止、ユーザー確認
696
+
697
+ ### 禁止事項
698
+
699
+ - ❌ ユーザー確認なしでのパッケージ変更
700
+ - ❌ ユーザー確認なしでのバージョン変更
701
+ - ❌ テストの仕様変更(実装に合わせてテストを変更しない)
702
+ - ❌ Critical問題を無視して処理を続行
703
+
704
+ ---
705
+
706
+ ## 参考資料
707
+
708
+ ### Web調査結果(ベストプラクティス)
709
+ - [TDD Best Practices 2025](https://www.nopaccelerate.com/test-driven-development-guide-2025/) - AI活用TDD
710
+ - [Parallel Testing Guide](https://www.accelq.com/blog/parallel-testing/) - 並行実行のベストプラクティス
711
+ - [AI Agent Orchestration](https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/ai-agent-design-patterns) - 並行実行パターン
712
+
713
+ ### 関連コマンド
714
+ - `/kiro:spec-impl` - ベースコマンド(TDD実装)
715
+ - `/michi:spec-design` - 設計書生成(Phase 0.3-0.4ガイダンス付き)
716
+ - `/michi:validate-design` - 設計レビュー(テスト計画確認付き)