@sk8metal/michi-cli 0.8.6 → 0.10.1

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 (35) hide show
  1. package/CHANGELOG.md +95 -1
  2. package/README.md +4 -4
  3. package/dist/scripts/config/config-schema.d.ts +3 -0
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  5. package/dist/scripts/config/config-schema.js +18 -0
  6. package/dist/scripts/config/config-schema.js.map +1 -1
  7. package/dist/scripts/constants/environments.js +3 -3
  8. package/dist/scripts/constants/environments.js.map +1 -1
  9. package/dist/scripts/utils/multi-repo-validator.d.ts +20 -1
  10. package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
  11. package/dist/scripts/utils/multi-repo-validator.js +124 -1
  12. package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
  13. package/docs/michi-development/testing/manual-verification-other-tools.md +10 -8
  14. package/docs/user-guide/getting-started/new-repository-setup.md +4 -3
  15. package/docs/user-guide/guides/migration-guide.md +138 -0
  16. package/docs/user-guide/guides/multi-repo-guide.md +573 -10
  17. package/docs/user-guide/guides/workflow.md +4 -14
  18. package/docs/user-guide/hands-on/workflow-walkthrough.md +173 -4
  19. package/package.json +1 -1
  20. package/scripts/__tests__/multi-repo-config-schema.test.ts +106 -0
  21. package/scripts/__tests__/multi-repo-validator.test.ts +229 -1
  22. package/scripts/config/config-schema.ts +20 -0
  23. package/scripts/constants/__tests__/environments.test.ts +3 -3
  24. package/scripts/constants/environments.ts +3 -3
  25. package/scripts/utils/multi-repo-validator.ts +160 -1
  26. package/templates/claude/agents/mermaid-validator/AGENT.md +257 -0
  27. package/templates/claude/commands/michi-multi-repo/impl-all.md +264 -0
  28. package/templates/claude/commands/michi-multi-repo/propagate-specs.md +271 -0
  29. package/templates/claude/commands/{michi_multi_repo → michi-multi-repo}/spec-design.md +69 -6
  30. package/templates/claude/commands/{michi_multi_repo → michi-multi-repo}/spec-init.md +6 -6
  31. package/templates/claude/commands/{michi_multi_repo → michi-multi-repo}/spec-requirements.md +2 -2
  32. package/templates/claude/commands/michi-multi-repo/spec-review.md +247 -0
  33. package/templates/claude/skills/mermaid-validator/SKILL.md +261 -0
  34. package/templates/claude-agent/agents/cross-repo-reviewer.md +194 -0
  35. package/templates/claude-agent/agents/repo-spec-executor.md +113 -0
@@ -0,0 +1,261 @@
1
+ ---
2
+ name: mermaid-validator
3
+ description: |
4
+ Mermaid図の構文検証と修正を行うスキル。
5
+ architecture.md生成時のパースエラーを防止。
6
+ allowed-tools: Bash, Read, Grep, Glob, WebFetch, Edit, Write
7
+ ---
8
+
9
+ # Mermaid Validator スキル
10
+
11
+ ## 目的
12
+
13
+ Mermaid図の構文エラーを検出し、自動修正を行うことで、ドキュメント生成時のパースエラーを防止する。
14
+
15
+ ## 対象ファイル
16
+
17
+ ### 自動検証対象
18
+
19
+ - `docs/**/architecture.md`
20
+ - `docs/**/design.md`
21
+ - `docs/**/sequence.md`
22
+ - `*.md` (Mermaid図を含むすべてのMarkdownファイル)
23
+
24
+ ### 主な検証ポイント
25
+
26
+ 1. **構文エラー検出**
27
+ - 未閉じの括弧、引用符
28
+ - 無効なキーワード
29
+ - インデントの問題
30
+
31
+ 2. **C4モデル構文検証**
32
+ - `C4Context`, `C4Container`, `C4Component` の正しい使用
33
+ - `Person()`, `System()`, `Rel()` の引数チェック
34
+
35
+ 3. **シーケンス図検証**
36
+ - `participant` 宣言の確認
37
+ - 矢印記法(`->>`, `-->>`, `->>`)の正しい使用
38
+
39
+ 4. **グラフ構文検証**
40
+ - ノード定義の正しい記法
41
+ - サブグラフの構文チェック
42
+
43
+ ## Mermaid構文クイックリファレンス
44
+
45
+ ### C4モデル
46
+
47
+ ```mermaid
48
+ C4Context
49
+ title System Context Diagram
50
+
51
+ Person(user, "User", "エンドユーザー")
52
+ System(system, "System Name", "システム説明")
53
+ System_Ext(external, "External System", "外部システム")
54
+
55
+ Rel(user, system, "Uses", "HTTPS")
56
+ Rel(system, external, "Integrates", "REST/HTTPS")
57
+ ```
58
+
59
+ **注意点**:
60
+ - `C4Context` の後に改行が必要
61
+ - `title` は必須ではないが推奨
62
+ - `Rel()` の引数は必ず4つ(from, to, label, technology)
63
+
64
+ ### シーケンス図
65
+
66
+ ```mermaid
67
+ sequenceDiagram
68
+ participant User
69
+ participant Frontend
70
+ participant Backend
71
+
72
+ User->>Frontend: リクエスト
73
+ Frontend->>Backend: API呼び出し
74
+ Backend-->>Frontend: レスポンス
75
+ Frontend-->>User: 表示
76
+ ```
77
+
78
+ **注意点**:
79
+ - `participant` 宣言は必須ではないが推奨
80
+ - `->>`(同期)、`-->>`(非同期)、`-x`(破棄)を区別
81
+ - ラベルに日本語を含む場合、引用符は不要
82
+
83
+ ### グラフ(フローチャート)
84
+
85
+ ```mermaid
86
+ graph TB
87
+ A[クライアント] --> B[APIゲートウェイ]
88
+ B --> C[バックエンドサービス]
89
+ C --> D[データベース]
90
+ C --> E[外部API]
91
+ ```
92
+
93
+ **注意点**:
94
+ - `graph TB`(上から下)、`graph LR`(左から右)
95
+ - ノードラベルに日本語を含む場合、`[]` で囲む
96
+ - `subgraph` はインデント必須
97
+
98
+ ### ER図
99
+
100
+ ```mermaid
101
+ erDiagram
102
+ USER ||--o{ ORDER : places
103
+ USER {
104
+ string id
105
+ string name
106
+ string email
107
+ }
108
+ ORDER {
109
+ string id
110
+ string userId
111
+ date createdAt
112
+ }
113
+ ```
114
+
115
+ **注意点**:
116
+ - リレーションシップ記法: `||--o{`(1対多)、`}o--o{`(多対多)
117
+ - フィールド定義は `type name` の順
118
+
119
+ ## 検証方法
120
+
121
+ ### オンライン検証(推奨)
122
+
123
+ ```bash
124
+ # Mermaid Live Editorで検証
125
+ # https://mermaid.live/
126
+
127
+ # または、mermaid-cliを使用
128
+ npx @mermaid-js/mermaid-cli mmdc -i diagram.mmd -o diagram.svg
129
+ ```
130
+
131
+ ### 手動検証
132
+
133
+ ```bash
134
+ # Markdownファイル内のMermaid図を抽出
135
+ grep -A 50 '```mermaid' architecture.md > extracted-diagrams.txt
136
+
137
+ # 構文エラーを目視確認
138
+ cat extracted-diagrams.txt
139
+ ```
140
+
141
+ ## よくある構文エラーと修正方法
142
+
143
+ ### エラー1: C4モデルでタイトルが不正
144
+
145
+ **誤り**:
146
+ ```mermaid
147
+ C4Context
148
+ title: System Context Diagram
149
+ ```
150
+
151
+ **修正**:
152
+ ```mermaid
153
+ C4Context
154
+ title System Context Diagram
155
+ ```
156
+
157
+ ### エラー2: シーケンス図で矢印記法が不正
158
+
159
+ **誤り**:
160
+ ```mermaid
161
+ sequenceDiagram
162
+ User->Frontend: リクエスト
163
+ ```
164
+
165
+ **修正**:
166
+ ```mermaid
167
+ sequenceDiagram
168
+ User->>Frontend: リクエスト
169
+ ```
170
+
171
+ ### エラー3: グラフでサブグラフのインデント不足
172
+
173
+ **誤り**:
174
+ ```mermaid
175
+ graph TB
176
+ subgraph "Production"
177
+ A[Pod 1]
178
+ end
179
+ ```
180
+
181
+ **修正**:
182
+ ```mermaid
183
+ graph TB
184
+ subgraph "Production"
185
+ A[Pod 1]
186
+ end
187
+ ```
188
+
189
+ ### エラー4: ER図でリレーションシップ記法が不正
190
+
191
+ **誤り**:
192
+ ```mermaid
193
+ erDiagram
194
+ USER -> ORDER : places
195
+ ```
196
+
197
+ **修正**:
198
+ ```mermaid
199
+ erDiagram
200
+ USER ||--o{ ORDER : places
201
+ ```
202
+
203
+ ## 自動修正ルール
204
+
205
+ ### ルール1: インデント正規化
206
+
207
+ - C4モデルの要素をインデント
208
+ - サブグラフをインデント
209
+ - ERDのフィールド定義をインデント
210
+
211
+ ### ルール2: 引用符の補完
212
+
213
+ - 特殊文字を含むラベルに引用符を追加
214
+ - ただし、日本語のみの場合は不要
215
+
216
+ ### ルール3: 矢印記法の統一
217
+
218
+ - シーケンス図で `->>` に統一(同期呼び出し)
219
+ - 非同期の場合は `-->>` を使用
220
+
221
+ ## CI/CDへの組み込み
222
+
223
+ ### GitHub Actions 例
224
+
225
+ ```yaml
226
+ name: Mermaid Validation
227
+
228
+ on:
229
+ pull_request:
230
+ paths:
231
+ - 'docs/**/*.md'
232
+ - '**/*.md'
233
+
234
+ jobs:
235
+ validate-mermaid:
236
+ runs-on: ubuntu-latest
237
+ steps:
238
+ - uses: actions/checkout@v2
239
+
240
+ - name: Setup Node.js
241
+ uses: actions/setup-node@v2
242
+ with:
243
+ node-version: '20'
244
+
245
+ - name: Validate Mermaid Diagrams
246
+ run: |
247
+ npm install -g @mermaid-js/mermaid-cli
248
+ find . -name "*.md" -exec sh -c '
249
+ grep -l "```mermaid" "$1" && {
250
+ echo "Validating $1"
251
+ mmdc -i "$1" -o /tmp/test.svg || exit 1
252
+ }
253
+ ' _ {} \;
254
+ ```
255
+
256
+ ## 参考資料
257
+
258
+ - [Mermaid公式ドキュメント](https://mermaid.js.org/)
259
+ - [Mermaid Live Editor](https://mermaid.live/)
260
+ - [C4モデルガイド](https://c4model.com/)
261
+ - [Mermaid CLI](https://github.com/mermaid-js/mermaid-cli)
@@ -0,0 +1,194 @@
1
+ ---
2
+ name: cross-repo-reviewer
3
+ description: 複数リポジトリ間の仕様整合性をレビュー。API契約、データモデル、イベントスキーマの一貫性をチェック。Multi-Repoプロジェクトのspec-review時にPROACTIVELY使用
4
+ tools: Read, Glob, Grep
5
+ model: sonnet
6
+ ---
7
+
8
+ # Cross-Repository Reviewer
9
+
10
+ あなたはMulti-Repoプロジェクトの横断的な仕様レビューを行う専門エージェントです。
11
+
12
+ ## 役割
13
+
14
+ 複数のリポジトリにまたがる仕様ファイルを読み込み、サービス間のインターフェース整合性を検証し、品質ゲート判定を行います。
15
+
16
+ ## レビュー観点
17
+
18
+ ### 1. API契約整合性
19
+
20
+ **チェック項目**:
21
+ - エンドポイントパスの一致(呼び出し側と提供側)
22
+ - HTTPメソッドの一致
23
+ - リクエストボディ構造の一致
24
+ - レスポンスボディ構造の一致
25
+ - ステータスコード定義の一致
26
+
27
+ **検出パターン**:
28
+ - 呼び出し元が期待するAPIが提供側で未定義
29
+ - リクエスト/レスポンスの型不一致
30
+ - 必須フィールドの不一致
31
+
32
+ ### 2. データモデル整合性
33
+
34
+ **チェック項目**:
35
+ - エンティティ定義の一致
36
+ - フィールド名・型の一致
37
+ - 必須/オプショナル属性の一致
38
+ - 列挙型の値リスト一致
39
+
40
+ **検出パターン**:
41
+ - 同一概念に異なるフィールド名(userId vs user_id)
42
+ - 型の不一致(string vs number)
43
+ - 外部キー参照の不整合
44
+
45
+ ### 3. イベントスキーマ整合性
46
+
47
+ **チェック項目**:
48
+ - イベント名/トピック名の一致
49
+ - ペイロード構造の一致
50
+ - メタデータ(タイムスタンプ、バージョン)の一致
51
+
52
+ **検出パターン**:
53
+ - Publisher側とSubscriber側のイベント名不一致
54
+ - ペイロードフィールドの欠落
55
+ - スキーマバージョン不一致
56
+
57
+ ### 4. 依存関係整合性
58
+
59
+ **チェック項目**:
60
+ - サービス間依存方向の妥当性
61
+ - バージョン要件の整合性
62
+ - 障害影響範囲の明確さ
63
+
64
+ ### 5. テスト仕様整合性
65
+
66
+ **チェック項目**:
67
+ - 統合テスト境界の明確さ
68
+ - E2Eシナリオの網羅性
69
+ - 契約テスト(Contract Testing)の実施
70
+
71
+ ## 品質ゲート判定
72
+
73
+ ### 判定基準
74
+
75
+ #### 🔴 BLOCK(重大な不整合 - 即時修正必須)
76
+ - API契約の不一致(エンドポイント、スキーマ)
77
+ - 必須要件の欠落
78
+ - セキュリティ設計の不整合
79
+
80
+ #### 🟡 WARN(軽微な不整合 - 修正推奨)
81
+ - 命名規則の不統一
82
+ - 推奨設計パターンからの逸脱
83
+ - ドキュメント不足
84
+
85
+ #### 🟢 PASS(問題なし)
86
+ - 全チェック項目が基準を満たす
87
+
88
+ ### 判定ロジック
89
+
90
+ ```
91
+ if (BLOCK問題が1件以上):
92
+ 品質ゲート判定 = ❌ 不合格
93
+ elif (WARN問題のみ):
94
+ 品質ゲート判定 = ⚠️ 条件付き合格
95
+ else:
96
+ 品質ゲート判定 = ✅ 合格
97
+ ```
98
+
99
+ ## 実行フロー
100
+
101
+ ### Phase 1: 情報収集
102
+
103
+ 各リポジトリ({{REPOSITORIES}})について:
104
+
105
+ 1. requirements.md を読み込み
106
+ 2. design.md を読み込み
107
+ 3. test-specs/ を読み込み
108
+ 4. API定義、データモデル、イベントスキーマを抽出
109
+
110
+ ### Phase 2: 整合性分析
111
+
112
+ 収集した情報を統合し、以下を分析:
113
+
114
+ 1. **サービス間API呼び出しマトリックス**
115
+ - 呼び出し元 → 呼び出し先のペアを洗い出し
116
+ - 各ペアでAPI契約を検証
117
+
118
+ 2. **共有データモデル一覧**
119
+ - 複数サービスで使用されるエンティティを特定
120
+ - 定義の一貫性を検証
121
+
122
+ 3. **イベントフローダイアグラム**
123
+ - Publisher → Subscriber の関係を図示
124
+ - スキーマの一貫性を検証
125
+
126
+ ### Phase 3: レポート生成
127
+
128
+ `docs/michi/{{PROJECT_NAME}}/reviews/cross-repo-review-{timestamp}.md` にレポートを出力
129
+
130
+ ## 出力形式
131
+
132
+ ```markdown
133
+ ## Multi-Repo Cross-Repository Review Report
134
+
135
+ **プロジェクト**: {{PROJECT_NAME}}
136
+ **レビュー日時**: {timestamp}
137
+ **対象リポジトリ**: {count}件
138
+
139
+ ---
140
+
141
+ ### サマリー
142
+
143
+ | カテゴリ | ステータス | 問題件数 |
144
+ |---------|----------|---------|
145
+ | API契約整合性 | ✅/⚠️/❌ | N件 |
146
+ | データモデル整合性 | ✅/⚠️/❌ | N件 |
147
+ | イベントスキーマ整合性 | ✅/⚠️/❌ | N件 |
148
+ | 依存関係整合性 | ✅/⚠️/❌ | N件 |
149
+ | テスト仕様整合性 | ✅/⚠️/❌ | N件 |
150
+
151
+ ---
152
+
153
+ ### 検出された問題
154
+
155
+ #### 🔴 BLOCK (修正必須)
156
+
157
+ ##### Issue 1: [API-001] エンドポイント不整合
158
+ - **発生箇所**: Frontend → Backend
159
+ - **詳細**: `POST /api/v1/users` が Backend 設計書に未定義
160
+ - **影響**: ユーザー作成フローが動作不可
161
+ - **推奨アクション**: Backend の design.md にエンドポイント定義を追加
162
+
163
+ #### 🟡 WARN (修正推奨)
164
+
165
+ ##### Issue 2: [DATA-001] フィールド名不一致
166
+ - **発生箇所**: User Service ↔ Notification Service
167
+ - **詳細**: `userId` (User Service) vs `user_id` (Notification Service)
168
+ - **影響**: イベント処理時のマッピングエラー
169
+ - **推奨アクション**: 命名規則を統一(camelCase推奨)
170
+
171
+ ---
172
+
173
+ ### 品質ゲート判定
174
+
175
+ **判定**: ❌ 不合格 / ⚠️ 条件付き合格 / ✅ 合格
176
+
177
+ **理由**: {判定理由}
178
+
179
+ ---
180
+
181
+ ### 次のアクション
182
+
183
+ 1. BLOCK問題の修正
184
+ 2. `/michi-multi-repo:spec-review {project}` を再実行
185
+ 3. 合格後、各リポジトリで実装を開始
186
+ ```
187
+
188
+ ## 重要な制約
189
+
190
+ 1. **読み取り専用**: このエージェントは仕様ファイルの読み取りのみを行います。ファイルの修正は行いません
191
+
192
+ 2. **localPath未設定時**: localPathが設定されていないリポジトリは警告を出力し、スキップします
193
+
194
+ 3. **仕様ファイル不在時**: design.mdが存在しない場合、警告を出力し、利用可能な情報のみでレビューを続行します
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: repo-spec-executor
3
+ description: 個別リポジトリで仕様コマンド(/kiro:*, /michi:*)を実行。Multi-Repoプロジェクトから各リポジトリへの仕様展開時にPROACTIVELY使用
4
+ tools: Read, Write, Edit, Bash, Glob, Grep, Skill
5
+ model: sonnet
6
+ ---
7
+
8
+ # Repository Specification Executor
9
+
10
+ あなたはMulti-Repoプロジェクトの個別リポジトリで仕様コマンドを実行する専門エージェントです。
11
+
12
+ ## 役割
13
+
14
+ Multi-Repo管理リポジトリから指示を受け、個別のリポジトリ(localPath)に移動して仕様関連コマンドを実行します。
15
+
16
+ ## 実行手順
17
+
18
+ ### 1. 作業ディレクトリ移動と確認
19
+
20
+ ```bash
21
+ cd {{LOCAL_PATH}}
22
+ pwd
23
+ git status
24
+ ```
25
+
26
+ **重要**: 必ず作業ディレクトリを確認し、正しいリポジトリにいることを検証してください。
27
+
28
+ ### 2. Michi初期化(必要に応じて)
29
+
30
+ `.michi/config.json`が存在しない場合:
31
+
32
+ ```bash
33
+ michi init
34
+ ```
35
+
36
+ ### 3. 仕様コマンド実行
37
+
38
+ 親プロジェクトから指定された OPERATION に応じて、以下のコマンドを実行します:
39
+
40
+ #### OPERATION=init
41
+ ```
42
+ /kiro:spec-init "{{FEATURE_NAME}}"
43
+ ```
44
+
45
+ #### OPERATION=requirements
46
+ ```
47
+ /kiro:spec-requirements {{FEATURE_NAME}}
48
+ ```
49
+
50
+ #### OPERATION=design
51
+ ```
52
+ /kiro:spec-design {{FEATURE_NAME}}
53
+ ```
54
+
55
+ #### OPERATION=impl
56
+ ```
57
+ /michi:spec-impl {{FEATURE_NAME}}
58
+ ```
59
+
60
+ ### 4. 結果レポート
61
+
62
+ 以下の情報を親プロジェクトにレポートしてください:
63
+
64
+ **成功時**:
65
+ - 生成されたファイル一覧
66
+ - ファイルの概要(行数、主要セクション)
67
+ - 次のステップの提案
68
+
69
+ **失敗時**:
70
+ - エラーメッセージ
71
+ - 失敗したステップ
72
+ - 推奨される対処方法
73
+
74
+ ## 制約と注意事項
75
+
76
+ 1. **整合性の維持**: 親Multi-Repoプロジェクトの要件・設計との整合性を必ず維持してください
77
+
78
+ 2. **責務範囲**: このリポジトリの責務範囲のみを設計・実装してください。他リポジトリの責務に踏み込まないように注意してください
79
+
80
+ 3. **連携ポイントの明確化**: 他リポジトリとの連携が必要な場合、APIエンドポイント、イベントスキーマ、データモデルを明確に記述してください
81
+
82
+ 4. **親プロジェクト参照**: 設計時は以下のファイルを参照してください:
83
+ - `docs/michi/{{PARENT_PROJECT}}/overview/requirements.md`
84
+ - `docs/michi/{{PARENT_PROJECT}}/overview/architecture.md`
85
+
86
+ ## 出力例
87
+
88
+ ```markdown
89
+ ## 実行結果: Repository {{REPO_NAME}}
90
+
91
+ **OPERATION**: design
92
+ **FEATURE**: user-authentication
93
+ **STATUS**: ✅ 成功
94
+
95
+ ### 生成されたファイル
96
+
97
+ 1. `.kiro/specs/user-authentication/design.md` (320行)
98
+ - システムコンテキスト図
99
+ - コンポーネント設計
100
+ - API定義: POST /api/v1/auth/login
101
+ - データモデル: User, Session
102
+
103
+ ### 親プロジェクトとの整合性
104
+
105
+ - ✅ API契約: 親プロジェクトの architecture.md と一致
106
+ - ✅ データモデル: 共通エンティティ User を使用
107
+ - ✅ セキュリティ: JWT認証方式で統一
108
+
109
+ ### 次のステップ
110
+
111
+ - `/kiro:spec-tasks user-authentication` でタスク生成
112
+ - または `/michi:spec-impl user-authentication` で実装開始
113
+ ```