@sk8metal/michi-cli 0.8.7 → 0.11.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.
- package/CHANGELOG.md +70 -1
- package/README.md +77 -847
- package/dist/scripts/config/config-schema.d.ts +3 -0
- package/dist/scripts/config/config-schema.d.ts.map +1 -1
- package/dist/scripts/config/config-schema.js +18 -0
- package/dist/scripts/config/config-schema.js.map +1 -1
- package/dist/scripts/phase-runner.js +1 -1
- package/dist/scripts/phase-runner.js.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.d.ts +38 -1
- package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.js +166 -1
- package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
- package/dist/scripts/utils/tasks-format-validator.js +3 -3
- package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
- package/docs/README.md +20 -83
- package/docs/getting-started/configuration.md +379 -0
- package/docs/getting-started/installation.md +59 -0
- package/docs/getting-started/quick-start.md +76 -0
- package/docs/guides/ai-tools.md +311 -0
- package/docs/guides/atlassian-integration.md +116 -0
- package/docs/guides/claude-code.md +155 -0
- package/docs/guides/multi-repo.md +117 -0
- package/docs/guides/workflow.md +382 -0
- package/docs/reference/ai-commands.md +92 -0
- package/docs/reference/cli.md +756 -0
- package/docs/reference/environment-variables.md +192 -0
- package/docs/troubleshooting.md +543 -0
- package/package.json +1 -1
- package/scripts/__tests__/multi-repo-config-schema.test.ts +106 -0
- package/scripts/__tests__/multi-repo-validator.test.ts +229 -1
- package/scripts/config/config-schema.ts +20 -0
- package/scripts/phase-runner.ts +1 -1
- package/scripts/utils/__tests__/multi-repo-validator.test.ts +159 -1
- package/scripts/utils/multi-repo-validator.ts +210 -1
- package/scripts/utils/tasks-format-validator.ts +3 -3
- package/templates/claude/agents/e2e-first-planner/AGENT.md +1 -1
- package/templates/claude/agents/mermaid-validator/AGENT.md +257 -0
- package/templates/claude/agents/pr-resolver/AGENT.md +15 -3
- package/templates/claude/commands/michi/e2e-plan.md +1 -1
- package/templates/claude/commands/michi/spec-design.md +2 -2
- package/templates/claude/commands/michi/spec-tasks.md +156 -0
- package/templates/claude/commands/michi/test-planning.md +1 -1
- package/templates/claude/commands/michi/validate-design.md +3 -3
- package/templates/claude/commands/michi-multi-repo/impl-all.md +293 -0
- package/templates/claude/commands/michi-multi-repo/propagate-specs.md +284 -0
- package/templates/claude/commands/michi-multi-repo/spec-design.md +66 -3
- package/templates/claude/commands/michi-multi-repo/spec-review.md +261 -0
- package/templates/claude/skills/mermaid-validator/SKILL.md +261 -0
- package/templates/claude-agent/agents/cross-repo-reviewer.md +194 -0
- package/templates/claude-agent/agents/repo-spec-executor.md +113 -0
- package/templates/claude-agent/commands/michi/spec-tasks.md +117 -0
- package/templates/claude-agent/rules/code-size-monitor.md +26 -0
- package/templates/claude-agent/rules/code-size-rules.md +32 -0
- package/templates/codex/AGENTS.override.md +1 -1
- package/templates/codex/rules/README.md +2 -2
- package/templates/cursor/commands/michi/spec-tasks.md +117 -0
- package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +1 -1
- package/docs/context.md +0 -59
- package/docs/michi-development/contributing/development.md +0 -341
- package/docs/michi-development/contributing/release.md +0 -365
- package/docs/michi-development/design/config-unification.md +0 -733
- package/docs/michi-development/design/design-config-current-state.md +0 -330
- package/docs/michi-development/design/design-config-implementation.md +0 -628
- package/docs/michi-development/design/design-config-migration.md +0 -952
- package/docs/michi-development/design/design-config-security.md +0 -771
- package/docs/michi-development/design/design-config-solution.md +0 -583
- package/docs/michi-development/design/design-config-testing.md +0 -892
- package/docs/michi-development/testing/manual-verification-flow.md +0 -871
- package/docs/michi-development/testing/manual-verification-other-tools.md +0 -1279
- package/docs/michi-development/testing/manual-verification-troubleshooting.md +0 -122
- package/docs/michi-development/testing/pre-publish-checklist.md +0 -560
- package/docs/michi-development/testing-strategy.md +0 -87
- package/docs/plan.md +0 -275
- package/docs/user-guide/getting-started/github-token-setup.md +0 -510
- package/docs/user-guide/getting-started/new-repository-setup.md +0 -704
- package/docs/user-guide/getting-started/quick-start.md +0 -212
- package/docs/user-guide/getting-started/setup.md +0 -819
- package/docs/user-guide/guides/agent-skills-integration.md +0 -222
- package/docs/user-guide/guides/customization.md +0 -537
- package/docs/user-guide/guides/internationalization.md +0 -540
- package/docs/user-guide/guides/migration-guide.md +0 -138
- package/docs/user-guide/guides/multi-project.md +0 -368
- package/docs/user-guide/guides/multi-repo-guide.md +0 -1147
- package/docs/user-guide/guides/phase-automation.md +0 -419
- package/docs/user-guide/guides/workflow.md +0 -584
- package/docs/user-guide/hands-on/README.md +0 -142
- package/docs/user-guide/hands-on/claude-agent-setup.md +0 -597
- package/docs/user-guide/hands-on/claude-setup.md +0 -452
- package/docs/user-guide/hands-on/cursor-setup.md +0 -353
- package/docs/user-guide/hands-on/troubleshooting.md +0 -964
- package/docs/user-guide/hands-on/verification-checklist.md +0 -439
- package/docs/user-guide/hands-on/workflow-walkthrough.md +0 -909
- package/docs/user-guide/reference/config.md +0 -589
- package/docs/user-guide/reference/multi-repo-api.md +0 -771
- package/docs/user-guide/reference/quick-reference.md +0 -297
- package/docs/user-guide/reference/security-test-payloads.md +0 -50
- package/docs/user-guide/reference/tasks-template.md +0 -550
- package/docs/user-guide/release/ci-setup-java.md +0 -114
- package/docs/user-guide/release/ci-setup-nodejs.md +0 -94
- package/docs/user-guide/release/ci-setup-php.md +0 -102
- package/docs/user-guide/release/ci-setup-troubleshooting.md +0 -94
- package/docs/user-guide/release/ci-setup.md +0 -188
- package/docs/user-guide/release/release-flow.md +0 -476
- package/docs/user-guide/templates/test-specs/README.md +0 -173
- package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +0 -553
- package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +0 -435
- package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +0 -454
- package/docs/user-guide/templates/test-specs/security-test-spec-template.md +0 -625
- package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +0 -328
- package/docs/user-guide/testing/integration-tests.md +0 -312
- package/docs/user-guide/testing/tdd-cycle.md +0 -349
- package/docs/user-guide/testing/test-execution-flow.md +0 -396
- package/docs/user-guide/testing/test-failure-handling.md +0 -521
- package/docs/user-guide/testing/test-planning-flow.md +0 -185
- package/docs/user-guide/testing-strategy.md +0 -185
- package/docs/verification-guide.md +0 -518
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Multi-Repoプロジェクトのクロスリポジトリ仕様レビューを実行
|
|
3
|
+
allowed-tools: Task, Bash, Read, Write, Edit, Glob, Grep
|
|
4
|
+
argument-hint: <project-name> [--focus api|data|event|deps|test|all]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Multi-Repo Cross-Repository Review
|
|
8
|
+
|
|
9
|
+
<background_information>
|
|
10
|
+
- **Mission**: 複数リポジトリにまたがる仕様の整合性を検証
|
|
11
|
+
- **Success Criteria**:
|
|
12
|
+
- 全リポジトリの仕様を収集・分析
|
|
13
|
+
- API契約、データモデル、イベントスキーマの整合性を検証
|
|
14
|
+
- 品質ゲート判定を実行
|
|
15
|
+
- 修正が必要な箇所を明確に報告
|
|
16
|
+
</background_information>
|
|
17
|
+
|
|
18
|
+
<instructions>
|
|
19
|
+
## Core Task
|
|
20
|
+
Multi-Repoプロジェクト **$1** の全リポジトリを対象に、クロスリポジトリレビューを実行します。
|
|
21
|
+
|
|
22
|
+
## 引数解析
|
|
23
|
+
|
|
24
|
+
引数の形式:
|
|
25
|
+
```
|
|
26
|
+
/michi-multi-repo:spec-review <project-name> [--focus <focus>]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
パラメータ:
|
|
30
|
+
- **$1**: プロジェクト名(必須)
|
|
31
|
+
- **--focus**: レビュー観点(オプション、デフォルト: all)
|
|
32
|
+
- `api`: API契約整合性のみ
|
|
33
|
+
- `data`: データモデル整合性のみ
|
|
34
|
+
- `event`: イベントスキーマ整合性のみ
|
|
35
|
+
- `deps`: 依存関係整合性のみ
|
|
36
|
+
- `test`: テスト仕様整合性のみ
|
|
37
|
+
- `all`: 全観点(デフォルト)
|
|
38
|
+
|
|
39
|
+
## Execution Steps
|
|
40
|
+
|
|
41
|
+
### Step 1: コンテキスト読み込み
|
|
42
|
+
|
|
43
|
+
1. `.michi/config.json` からプロジェクト情報取得
|
|
44
|
+
- プロジェクト名
|
|
45
|
+
- 登録リポジトリ一覧
|
|
46
|
+
|
|
47
|
+
2. 各リポジトリの `localPath` を取得
|
|
48
|
+
|
|
49
|
+
3. 親プロジェクトの仕様を読み込み
|
|
50
|
+
- `docs/michi/$1/overview/requirements.md`
|
|
51
|
+
- `docs/michi/$1/overview/architecture.md`
|
|
52
|
+
|
|
53
|
+
### Step 2: localPath 検証
|
|
54
|
+
|
|
55
|
+
各リポジトリについて以下を確認:
|
|
56
|
+
- localPathが設定されているか
|
|
57
|
+
- ディレクトリが存在するか
|
|
58
|
+
- Gitリポジトリか (`.git/`ディレクトリ確認)
|
|
59
|
+
- Michiがセットアップ済みか (`.kiro/project.json`確認)
|
|
60
|
+
- 仕様ファイルが存在するか
|
|
61
|
+
|
|
62
|
+
**検証失敗時の対応**:
|
|
63
|
+
- localPath未設定: 警告を出力し、スキップ
|
|
64
|
+
- ディレクトリ不存在: エラーを出力し、スキップ
|
|
65
|
+
- Michi未セットアップ: 警告を出力し、スキップ
|
|
66
|
+
- 仕様ファイル不存在: 警告を出力し、利用可能情報でレビュー続行
|
|
67
|
+
|
|
68
|
+
### Step 3: サブエージェント起動
|
|
69
|
+
|
|
70
|
+
cross-repo-reviewerサブエージェントを使用して、以下のプロジェクトをレビューしてください:
|
|
71
|
+
|
|
72
|
+
- PROJECT_NAME: $1
|
|
73
|
+
- REPOSITORIES:
|
|
74
|
+
- {repo1.name}: {repo1.localPath}
|
|
75
|
+
- {repo2.name}: {repo2.localPath}
|
|
76
|
+
- ...
|
|
77
|
+
- REVIEW_FOCUS: {指定されたfocus}
|
|
78
|
+
|
|
79
|
+
品質ゲート判定結果をレポートしてください。
|
|
80
|
+
|
|
81
|
+
### Step 4: レビューレポート出力
|
|
82
|
+
|
|
83
|
+
出力先: `docs/michi/$1/reviews/cross-repo-review-{timestamp}.md`
|
|
84
|
+
|
|
85
|
+
レポート形式:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
## Multi-Repo Cross-Repository Review Report
|
|
89
|
+
|
|
90
|
+
**プロジェクト**: $1
|
|
91
|
+
**レビュー日時**: {timestamp}
|
|
92
|
+
**対象リポジトリ**: {count}件
|
|
93
|
+
**レビュー観点**: {focus}
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### サマリー
|
|
98
|
+
|
|
99
|
+
| カテゴリ | ステータス | 問題件数 |
|
|
100
|
+
|---------|----------|---------|
|
|
101
|
+
| API契約整合性 | ✅/⚠️/❌ | N件 |
|
|
102
|
+
| データモデル整合性 | ✅/⚠️/❌ | N件 |
|
|
103
|
+
| イベントスキーマ整合性 | ✅/⚠️/❌ | N件 |
|
|
104
|
+
| 依存関係整合性 | ✅/⚠️/❌ | N件 |
|
|
105
|
+
| テスト仕様整合性 | ✅/⚠️/❌ | N件 |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### 検出された問題
|
|
110
|
+
|
|
111
|
+
#### 🔴 BLOCK (修正必須)
|
|
112
|
+
|
|
113
|
+
(cross-repo-reviewerが検出した重大な不整合)
|
|
114
|
+
|
|
115
|
+
#### 🟡 WARN (修正推奨)
|
|
116
|
+
|
|
117
|
+
(cross-repo-reviewerが検出した軽微な不整合)
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### 品質ゲート判定
|
|
122
|
+
|
|
123
|
+
**判定**: ❌ 不合格 / ⚠️ 条件付き合格 / ✅ 合格
|
|
124
|
+
|
|
125
|
+
**理由**: {判定理由}
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### 次のアクション
|
|
130
|
+
|
|
131
|
+
1. BLOCK問題の修正
|
|
132
|
+
2. `/michi-multi-repo:spec-review $1` を再実行
|
|
133
|
+
3. 合格後、各リポジトリで実装を開始
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Step 5: 判定結果の表示
|
|
137
|
+
|
|
138
|
+
**合格時(✅ PASS)**:
|
|
139
|
+
```markdown
|
|
140
|
+
🎉 品質ゲート合格
|
|
141
|
+
|
|
142
|
+
全リポジトリの仕様が整合性基準を満たしています。
|
|
143
|
+
|
|
144
|
+
### 次のステップ
|
|
145
|
+
|
|
146
|
+
1. 各リポジトリでタスク生成:
|
|
147
|
+
各リポジトリで `/michi:spec-tasks {feature}` を実行
|
|
148
|
+
|
|
149
|
+
2. 全リポジトリで実装を開始:
|
|
150
|
+
`/michi-multi-repo:impl-all $1`
|
|
151
|
+
|
|
152
|
+
3. CI/CD設定:
|
|
153
|
+
`michi multi-repo:ci-status $1` でCI結果を監視
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**条件付き合格時(⚠️ WARN)**:
|
|
157
|
+
```markdown
|
|
158
|
+
⚠️ 品質ゲート条件付き合格
|
|
159
|
+
|
|
160
|
+
WARN問題が検出されましたが、修正は任意です。
|
|
161
|
+
|
|
162
|
+
### 検出された問題
|
|
163
|
+
- {WARN問題のリスト}
|
|
164
|
+
|
|
165
|
+
### 次のステップ(選択可能)
|
|
166
|
+
|
|
167
|
+
A) WARN問題を修正してから実装開始(推奨)
|
|
168
|
+
- 各リポジトリのdesign.mdを修正
|
|
169
|
+
- `/michi-multi-repo:spec-review $1` を再実行
|
|
170
|
+
|
|
171
|
+
B) そのまま実装開始
|
|
172
|
+
- `/michi-multi-repo:impl-all $1`
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**不合格時(❌ BLOCK)**:
|
|
176
|
+
```markdown
|
|
177
|
+
❌ 品質ゲート不合格
|
|
178
|
+
|
|
179
|
+
BLOCK問題が検出されました。修正が必須です。
|
|
180
|
+
|
|
181
|
+
### BLOCK問題
|
|
182
|
+
- {BLOCK問題のリスト}
|
|
183
|
+
|
|
184
|
+
### 対処方法
|
|
185
|
+
|
|
186
|
+
1. 該当リポジトリのdesign.mdを修正
|
|
187
|
+
2. `/michi-multi-repo:spec-review $1` を再実行
|
|
188
|
+
3. 合格後に実装を開始
|
|
189
|
+
|
|
190
|
+
**注意**: BLOCK問題を未解決のまま実装を開始すると、サービス間通信が失敗する可能性があります。
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Important Constraints
|
|
194
|
+
- 読み取り操作のみ(各リポジトリへの書き込みは行わない)
|
|
195
|
+
- localPath未設定のリポジトリはスキップ(警告を出力)
|
|
196
|
+
- 大規模リポジトリの場合は主要ファイルのみ分析
|
|
197
|
+
|
|
198
|
+
</instructions>
|
|
199
|
+
|
|
200
|
+
## Tool Guidance
|
|
201
|
+
- **Task**: cross-repo-reviewerサブエージェント起動に使用
|
|
202
|
+
- **Read**: プロジェクト仕様、各リポジトリ仕様の読み込み
|
|
203
|
+
- **Write**: レビューレポートの出力
|
|
204
|
+
- **Glob/Grep**: 仕様ファイルの検索
|
|
205
|
+
|
|
206
|
+
## Output Description
|
|
207
|
+
|
|
208
|
+
日本語で以下の情報を出力してください:
|
|
209
|
+
|
|
210
|
+
1. **レビュー対象リポジトリ一覧**: 各リポジトリのlocalPathと仕様状態
|
|
211
|
+
2. **検出された問題**: BLOCK/WARN分類と詳細
|
|
212
|
+
3. **品質ゲート判定結果**: 合格/不合格と理由
|
|
213
|
+
4. **次のアクション**: 修正が必要な場合の具体的な手順
|
|
214
|
+
|
|
215
|
+
## Safety & Fallback
|
|
216
|
+
|
|
217
|
+
### Error Scenarios
|
|
218
|
+
|
|
219
|
+
- **プロジェクト未登録**:
|
|
220
|
+
```
|
|
221
|
+
エラー: プロジェクト '$1' が見つかりません。
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
- **親プロジェクト仕様未作成**:
|
|
225
|
+
```
|
|
226
|
+
エラー: 親プロジェクトの設計書が見つかりません: docs/michi/$1/overview/architecture.md
|
|
227
|
+
|
|
228
|
+
先に親プロジェクトの設計を作成してください:
|
|
229
|
+
/michi-multi-repo:spec-design $1
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
- **localPath未設定**:
|
|
233
|
+
```
|
|
234
|
+
警告: リポジトリ '{name}' の localPath が未設定です。スキップします。
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
- **Michi未セットアップ**:
|
|
238
|
+
```
|
|
239
|
+
⚠️ リポジトリ '{name}' にMichiがセットアップされていません。スキップします。
|
|
240
|
+
|
|
241
|
+
セットアップコマンド:
|
|
242
|
+
cd {localPath} && npx @sk8metal/michi-cli@latest init
|
|
243
|
+
|
|
244
|
+
セットアップ完了後、このコマンドを再実行してください。
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
- **仕様ファイル不存在**:
|
|
248
|
+
```
|
|
249
|
+
警告: リポジトリ '{name}' に仕様ファイルがありません。
|
|
250
|
+
|
|
251
|
+
仕様を展開してください:
|
|
252
|
+
/michi-multi-repo:propagate-specs $1
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Fallback Strategy
|
|
256
|
+
- localPath未設定: 該当リポジトリをスキップし、他のリポジトリでレビュー続行
|
|
257
|
+
- Michi未セットアップ: 該当リポジトリをスキップし、他のリポジトリでレビュー続行
|
|
258
|
+
- 仕様ファイル不存在: 警告を出力し、利用可能な情報でレビュー
|
|
259
|
+
- 通信エラー: リトライ後、該当リポジトリをスキップ
|
|
260
|
+
|
|
261
|
+
think hard
|
|
@@ -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が存在しない場合、警告を出力し、利用可能な情報のみでレビューを続行します
|