@sk8metal/michi-cli 0.0.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.
- package/LICENSE +22 -0
- package/README.md +465 -0
- package/dist/scripts/config/config-schema.d.ts +707 -0
- package/dist/scripts/config/config-schema.d.ts.map +1 -0
- package/dist/scripts/config/config-schema.js +100 -0
- package/dist/scripts/config/config-schema.js.map +1 -0
- package/dist/scripts/config-interactive.d.ts +10 -0
- package/dist/scripts/config-interactive.d.ts.map +1 -0
- package/dist/scripts/config-interactive.js +357 -0
- package/dist/scripts/config-interactive.js.map +1 -0
- package/dist/scripts/confluence-sync.d.ts +54 -0
- package/dist/scripts/confluence-sync.d.ts.map +1 -0
- package/dist/scripts/confluence-sync.js +407 -0
- package/dist/scripts/confluence-sync.js.map +1 -0
- package/dist/scripts/create-project.d.ts +12 -0
- package/dist/scripts/create-project.d.ts.map +1 -0
- package/dist/scripts/create-project.js +244 -0
- package/dist/scripts/create-project.js.map +1 -0
- package/dist/scripts/jira-sync.d.ts +39 -0
- package/dist/scripts/jira-sync.d.ts.map +1 -0
- package/dist/scripts/jira-sync.js +549 -0
- package/dist/scripts/jira-sync.js.map +1 -0
- package/dist/scripts/list-projects.d.ts +7 -0
- package/dist/scripts/list-projects.d.ts.map +1 -0
- package/dist/scripts/list-projects.js +61 -0
- package/dist/scripts/list-projects.js.map +1 -0
- package/dist/scripts/markdown-to-confluence.d.ts +19 -0
- package/dist/scripts/markdown-to-confluence.d.ts.map +1 -0
- package/dist/scripts/markdown-to-confluence.js +121 -0
- package/dist/scripts/markdown-to-confluence.js.map +1 -0
- package/dist/scripts/multi-project-estimate.d.ts +27 -0
- package/dist/scripts/multi-project-estimate.d.ts.map +1 -0
- package/dist/scripts/multi-project-estimate.js +202 -0
- package/dist/scripts/multi-project-estimate.js.map +1 -0
- package/dist/scripts/phase-runner.d.ts +19 -0
- package/dist/scripts/phase-runner.d.ts.map +1 -0
- package/dist/scripts/phase-runner.js +260 -0
- package/dist/scripts/phase-runner.js.map +1 -0
- package/dist/scripts/pr-automation.d.ts +12 -0
- package/dist/scripts/pr-automation.d.ts.map +1 -0
- package/dist/scripts/pr-automation.js +45 -0
- package/dist/scripts/pr-automation.js.map +1 -0
- package/dist/scripts/pre-flight-check.d.ts +15 -0
- package/dist/scripts/pre-flight-check.d.ts.map +1 -0
- package/dist/scripts/pre-flight-check.js +244 -0
- package/dist/scripts/pre-flight-check.js.map +1 -0
- package/dist/scripts/resource-dashboard.d.ts +7 -0
- package/dist/scripts/resource-dashboard.d.ts.map +1 -0
- package/dist/scripts/resource-dashboard.js +100 -0
- package/dist/scripts/resource-dashboard.js.map +1 -0
- package/dist/scripts/setup-existing-project.d.ts +13 -0
- package/dist/scripts/setup-existing-project.d.ts.map +1 -0
- package/dist/scripts/setup-existing-project.js +334 -0
- package/dist/scripts/setup-existing-project.js.map +1 -0
- package/dist/scripts/utils/config-loader.d.ts +20 -0
- package/dist/scripts/utils/config-loader.d.ts.map +1 -0
- package/dist/scripts/utils/config-loader.js +291 -0
- package/dist/scripts/utils/config-loader.js.map +1 -0
- package/dist/scripts/utils/config-validator.d.ts +34 -0
- package/dist/scripts/utils/config-validator.d.ts.map +1 -0
- package/dist/scripts/utils/config-validator.js +286 -0
- package/dist/scripts/utils/config-validator.js.map +1 -0
- package/dist/scripts/utils/confluence-hierarchy.d.ts +47 -0
- package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -0
- package/dist/scripts/utils/confluence-hierarchy.js +516 -0
- package/dist/scripts/utils/confluence-hierarchy.js.map +1 -0
- package/dist/scripts/utils/feature-name-validator.d.ts +25 -0
- package/dist/scripts/utils/feature-name-validator.d.ts.map +1 -0
- package/dist/scripts/utils/feature-name-validator.js +113 -0
- package/dist/scripts/utils/feature-name-validator.js.map +1 -0
- package/dist/scripts/utils/project-meta.d.ts +23 -0
- package/dist/scripts/utils/project-meta.d.ts.map +1 -0
- package/dist/scripts/utils/project-meta.js +50 -0
- package/dist/scripts/utils/project-meta.js.map +1 -0
- package/dist/scripts/validate-phase.d.ts +17 -0
- package/dist/scripts/validate-phase.d.ts.map +1 -0
- package/dist/scripts/validate-phase.js +234 -0
- package/dist/scripts/validate-phase.js.map +1 -0
- package/dist/scripts/workflow-orchestrator.d.ts +35 -0
- package/dist/scripts/workflow-orchestrator.d.ts.map +1 -0
- package/dist/scripts/workflow-orchestrator.js +130 -0
- package/dist/scripts/workflow-orchestrator.js.map +1 -0
- package/dist/src/cli.d.ts +11 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +229 -0
- package/dist/src/cli.js.map +1 -0
- package/docs/config-reference.md +666 -0
- package/docs/customization-guide.md +432 -0
- package/docs/multi-project.md +233 -0
- package/docs/new-project-setup.md +576 -0
- package/docs/phase-automation.md +361 -0
- package/docs/quick-reference.md +291 -0
- package/docs/setup.md +404 -0
- package/docs/tasks-template.md +550 -0
- package/docs/testing.md +202 -0
- package/docs/workflow.md +342 -0
- package/env.example +44 -0
- package/mcp.json.example +14 -0
- package/package.json +97 -0
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
# カスタマイズ機能ガイド
|
|
2
|
+
|
|
3
|
+
> **凡例について**: `<feature>` などの記号の意味は [README.md#凡例の記号説明](../README.md#凡例の記号説明) を参照してください。
|
|
4
|
+
|
|
5
|
+
## 概要
|
|
6
|
+
|
|
7
|
+
Michiでは、チームごとに異なる開発フローに対応するため、Confluence/JIRAの作成粒度やワークフロー設定をカスタマイズ可能にしています。
|
|
8
|
+
|
|
9
|
+
## 設定ファイルの構造
|
|
10
|
+
|
|
11
|
+
### デフォルト設定
|
|
12
|
+
|
|
13
|
+
`scripts/config/default-config.json` - Michiリポジトリに含まれるデフォルト設定
|
|
14
|
+
|
|
15
|
+
### プロジェクト固有設定
|
|
16
|
+
|
|
17
|
+
`.kiro/config.json` - プロジェクトルートに配置(オプション)
|
|
18
|
+
|
|
19
|
+
**重要**: `.kiro/config.json`は`.gitignore`に追加することを推奨します(チーム固有設定のため)
|
|
20
|
+
|
|
21
|
+
### 設定のマージ順序
|
|
22
|
+
|
|
23
|
+
1. デフォルト設定を読み込み
|
|
24
|
+
2. プロジェクト固有設定があればマージ(深いマージ)
|
|
25
|
+
3. 環境変数で最終上書き(既存の動作を維持)
|
|
26
|
+
|
|
27
|
+
### 設定値の詳細
|
|
28
|
+
|
|
29
|
+
すべての設定値の詳細は [設定値リファレンス](./config-reference.md) を参照してください。
|
|
30
|
+
|
|
31
|
+
## Confluence階層構造のカスタマイズ
|
|
32
|
+
|
|
33
|
+
### パターン1: フラット構造(デフォルト)
|
|
34
|
+
|
|
35
|
+
**設定**: 設定ファイル不要、または`pageCreationGranularity: "single"`
|
|
36
|
+
|
|
37
|
+
**動作**: 1ドキュメント = 1ページ(現在の動作を維持)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Confluenceスペース
|
|
41
|
+
└── [Michi] health-check-endpoint 要件定義
|
|
42
|
+
└── [Michi] health-check-endpoint 設計
|
|
43
|
+
└── [Michi] health-check-endpoint タスク分割
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**設定例**:
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"confluence": {
|
|
50
|
+
"pageCreationGranularity": "single"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### パターン2: 機能ごとの親ページ(simple階層)
|
|
56
|
+
|
|
57
|
+
**設定**: `pageCreationGranularity: "by-hierarchy"` + `hierarchy.mode: "simple"`
|
|
58
|
+
|
|
59
|
+
**動作**: 親ページを作成し、要件定義/設計/タスク分割を子ページとして配置
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Confluenceスペース
|
|
63
|
+
└── [Michi] health-check-endpoint(親ページ)
|
|
64
|
+
├── 要件定義
|
|
65
|
+
├── 設計
|
|
66
|
+
└── タスク分割
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**設定例**:
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"confluence": {
|
|
73
|
+
"pageCreationGranularity": "by-hierarchy",
|
|
74
|
+
"hierarchy": {
|
|
75
|
+
"mode": "simple",
|
|
76
|
+
"parentPageTitle": "[{projectName}] {featureName}"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### パターン3: セクション分割
|
|
83
|
+
|
|
84
|
+
**設定**: `pageCreationGranularity: "by-section"`
|
|
85
|
+
|
|
86
|
+
**動作**: Markdownの`##`セクションごとにページを作成(フラット)
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Confluenceスペース
|
|
90
|
+
└── [Michi] health-check-endpoint 要件定義 - 概要
|
|
91
|
+
└── [Michi] health-check-endpoint 要件定義 - 機能要件
|
|
92
|
+
└── [Michi] health-check-endpoint 要件定義 - 非機能要件
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**設定例**:
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"confluence": {
|
|
99
|
+
"pageCreationGranularity": "by-section",
|
|
100
|
+
"pageTitleFormat": "[{projectName}] {featureName} {docTypeLabel} - {sectionTitle}"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### パターン4: 階層構造(nested階層)
|
|
106
|
+
|
|
107
|
+
**設定**: `pageCreationGranularity: "by-hierarchy"` + `hierarchy.mode: "nested"`
|
|
108
|
+
|
|
109
|
+
**動作**: 親ページ → ドキュメントタイプ親 → セクション子ページの3階層
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
Confluenceスペース
|
|
113
|
+
└── [Michi] health-check-endpoint(親ページ)
|
|
114
|
+
├── 要件定義(親)
|
|
115
|
+
│ ├── 概要
|
|
116
|
+
│ ├── 機能要件
|
|
117
|
+
│ └── 非機能要件
|
|
118
|
+
├── 設計(親)
|
|
119
|
+
│ ├── アーキテクチャ
|
|
120
|
+
│ └── API仕様
|
|
121
|
+
└── タスク分割
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**設定例**:
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"confluence": {
|
|
128
|
+
"pageCreationGranularity": "by-hierarchy",
|
|
129
|
+
"hierarchy": {
|
|
130
|
+
"mode": "nested",
|
|
131
|
+
"parentPageTitle": "[{projectName}] {featureName}",
|
|
132
|
+
"createDocTypeParents": true
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### パターン5: 手動指定(manual)
|
|
139
|
+
|
|
140
|
+
**設定**: `pageCreationGranularity: "manual"` + `hierarchy.structure`で明示的に定義
|
|
141
|
+
|
|
142
|
+
**動作**: 設定ファイルで指定した通りにページを作成
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Confluenceスペース
|
|
146
|
+
└── [Michi] health-check-endpoint(親ページ)
|
|
147
|
+
├── 要件定義 - 概要
|
|
148
|
+
├── 要件定義 - 機能要件
|
|
149
|
+
├── 要件定義 - 非機能要件
|
|
150
|
+
├── 設計 - アーキテクチャ
|
|
151
|
+
└── 設計 - API仕様
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**設定例**:
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"confluence": {
|
|
158
|
+
"pageCreationGranularity": "manual",
|
|
159
|
+
"hierarchy": {
|
|
160
|
+
"parentPageTitle": "[{projectName}] {featureName}",
|
|
161
|
+
"structure": {
|
|
162
|
+
"requirements": {
|
|
163
|
+
"pages": [
|
|
164
|
+
{
|
|
165
|
+
"title": "[{projectName}] {featureName} 要件定義 - 概要",
|
|
166
|
+
"sections": ["## 1. 概要", "## 1.1 背景"],
|
|
167
|
+
"labels": ["requirements", "overview"]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"title": "[{projectName}] {featureName} 要件定義 - 機能要件",
|
|
171
|
+
"sections": ["## 2. 機能要件", "## 2.1 ユーザー機能"],
|
|
172
|
+
"labels": ["requirements", "functional"]
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
"design": {
|
|
177
|
+
"pages": [
|
|
178
|
+
{
|
|
179
|
+
"title": "[{projectName}] {featureName} 設計 - アーキテクチャ",
|
|
180
|
+
"sections": ["## 1. アーキテクチャ概要"],
|
|
181
|
+
"labels": ["design", "architecture"]
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## タイトル形式のカスタマイズ
|
|
192
|
+
|
|
193
|
+
`pageTitleFormat`でページタイトルの形式をカスタマイズできます。
|
|
194
|
+
|
|
195
|
+
**利用可能な変数**:
|
|
196
|
+
- `{projectName}` - プロジェクト名
|
|
197
|
+
- `{featureName}` - 機能名
|
|
198
|
+
- `{docTypeLabel}` - ドキュメントタイプ(要件定義、設計、タスク分割)
|
|
199
|
+
- `{sectionTitle}` - セクションタイトル(by-sectionの場合)
|
|
200
|
+
|
|
201
|
+
**設定例**:
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"confluence": {
|
|
205
|
+
"pageTitleFormat": "{projectName} - {featureName} - {docTypeLabel}"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## ラベルのカスタマイズ
|
|
211
|
+
|
|
212
|
+
`autoLabels`で自動付与されるラベルをカスタマイズできます。
|
|
213
|
+
|
|
214
|
+
**利用可能な変数**:
|
|
215
|
+
- `{projectLabel}` - プロジェクトラベル(`.kiro/project.json`の`confluenceLabels[0]`)
|
|
216
|
+
- `{docType}` - ドキュメントタイプ(requirements, design, tasks)
|
|
217
|
+
- `{featureName}` - 機能名
|
|
218
|
+
|
|
219
|
+
**設定例**:
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"confluence": {
|
|
223
|
+
"autoLabels": [
|
|
224
|
+
"{projectLabel}",
|
|
225
|
+
"{docType}",
|
|
226
|
+
"{featureName}",
|
|
227
|
+
"custom-label"
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## JIRA設定のカスタマイズ
|
|
234
|
+
|
|
235
|
+
### Story作成粒度
|
|
236
|
+
|
|
237
|
+
**設定例1: 全Storyを作成(デフォルト)**
|
|
238
|
+
```json
|
|
239
|
+
{
|
|
240
|
+
"jira": {
|
|
241
|
+
"storyCreationGranularity": "all"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**設定例2: 指定フェーズのみ作成**
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"jira": {
|
|
250
|
+
"storyCreationGranularity": "selected-phases",
|
|
251
|
+
"selectedPhases": ["implementation", "testing"]
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Epic作成の制御
|
|
257
|
+
|
|
258
|
+
**設定例: Epic作成をスキップ**
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"jira": {
|
|
262
|
+
"createEpic": false
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Story Points設定
|
|
268
|
+
|
|
269
|
+
**設定例1: 自動抽出(デフォルト)**
|
|
270
|
+
```json
|
|
271
|
+
{
|
|
272
|
+
"jira": {
|
|
273
|
+
"storyPoints": "auto"
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**設定例2: Story Pointsを設定しない**
|
|
279
|
+
```json
|
|
280
|
+
{
|
|
281
|
+
"jira": {
|
|
282
|
+
"storyPoints": "disabled"
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## ワークフロー設定のカスタマイズ
|
|
288
|
+
|
|
289
|
+
### フェーズの有効化
|
|
290
|
+
|
|
291
|
+
**設定例: 設計フェーズをスキップ**
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"workflow": {
|
|
295
|
+
"enabledPhases": ["requirements", "tasks"]
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 承認ゲートの設定
|
|
301
|
+
|
|
302
|
+
**設定例: 日本語ロール名を使用**
|
|
303
|
+
```json
|
|
304
|
+
{
|
|
305
|
+
"workflow": {
|
|
306
|
+
"approvalGates": {
|
|
307
|
+
"requirements": ["企画", "部長"],
|
|
308
|
+
"design": ["アーキテクト", "部長"],
|
|
309
|
+
"release": ["SM", "部長"]
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## 対話式設定ツール
|
|
316
|
+
|
|
317
|
+
`.kiro/config.json`を対話的に作成・更新できます:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# 対話式設定ツールを実行
|
|
321
|
+
npx @michi/cli config:interactive
|
|
322
|
+
|
|
323
|
+
# または
|
|
324
|
+
npm run config:interactive
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 使い方
|
|
328
|
+
|
|
329
|
+
1. **コマンド実行**: `npx @michi/cli config:interactive`
|
|
330
|
+
2. **設定項目を選択**:
|
|
331
|
+
- Confluence設定のカスタマイズ
|
|
332
|
+
- JIRA設定のカスタマイズ
|
|
333
|
+
- ワークフロー設定のカスタマイズ
|
|
334
|
+
3. **各設定を対話的に入力**: プロンプトに従って選択・入力
|
|
335
|
+
4. **設定を確認**: 最終的な設定内容を確認
|
|
336
|
+
5. **保存**: 設定ファイルを`.kiro/config.json`に保存
|
|
337
|
+
|
|
338
|
+
### 設定項目
|
|
339
|
+
|
|
340
|
+
- **Confluence階層構造**: 5つのパターンから選択
|
|
341
|
+
- **ページタイトル形式**: カスタマイズ可能
|
|
342
|
+
- **JIRA Story作成粒度**: 全作成/フェーズごと/選択フェーズのみ
|
|
343
|
+
- **ワークフロー有効化フェーズ**: 要件定義/設計/タスク分割から選択
|
|
344
|
+
- **承認ゲート**: 各フェーズの承認者を設定
|
|
345
|
+
|
|
346
|
+
## 設定ファイルのバリデーション
|
|
347
|
+
|
|
348
|
+
設定ファイルの妥当性をチェックするには、以下のコマンドを実行します:
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
# 設定ファイルのバリデーション
|
|
352
|
+
npx @michi/cli config:validate
|
|
353
|
+
|
|
354
|
+
# または
|
|
355
|
+
npm run config:validate
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
## 完全な設定例
|
|
359
|
+
|
|
360
|
+
```json
|
|
361
|
+
{
|
|
362
|
+
"confluence": {
|
|
363
|
+
"pageCreationGranularity": "by-hierarchy",
|
|
364
|
+
"pageTitleFormat": "[{projectName}] {featureName} {docTypeLabel}",
|
|
365
|
+
"autoLabels": [
|
|
366
|
+
"{projectLabel}",
|
|
367
|
+
"{docType}",
|
|
368
|
+
"{featureName}",
|
|
369
|
+
"github-sync"
|
|
370
|
+
],
|
|
371
|
+
"hierarchy": {
|
|
372
|
+
"mode": "simple",
|
|
373
|
+
"parentPageTitle": "[{projectName}] {featureName}"
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
"jira": {
|
|
377
|
+
"storyCreationGranularity": "all",
|
|
378
|
+
"createEpic": true,
|
|
379
|
+
"storyPoints": "auto",
|
|
380
|
+
"autoLabels": [
|
|
381
|
+
"{projectLabel}",
|
|
382
|
+
"{featureName}",
|
|
383
|
+
"{phaseLabel}"
|
|
384
|
+
]
|
|
385
|
+
},
|
|
386
|
+
"workflow": {
|
|
387
|
+
"enabledPhases": [
|
|
388
|
+
"requirements",
|
|
389
|
+
"design",
|
|
390
|
+
"tasks"
|
|
391
|
+
],
|
|
392
|
+
"approvalGates": {
|
|
393
|
+
"requirements": ["pm", "director"],
|
|
394
|
+
"design": ["architect", "director"],
|
|
395
|
+
"release": ["sm", "director"]
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
## 後方互換性
|
|
402
|
+
|
|
403
|
+
- 設定ファイルが存在しない場合はデフォルト設定を使用(既存動作を維持)
|
|
404
|
+
- 環境変数は引き続き優先(既存の`.env`設定が動作)
|
|
405
|
+
- 段階的な移行を可能にする
|
|
406
|
+
|
|
407
|
+
## トラブルシューティング
|
|
408
|
+
|
|
409
|
+
### 設定ファイルが読み込まれない
|
|
410
|
+
|
|
411
|
+
1. `.kiro/config.json`がプロジェクトルートに存在するか確認
|
|
412
|
+
2. JSONの構文エラーがないか確認
|
|
413
|
+
3. 設定ファイルのパスが正しいか確認
|
|
414
|
+
|
|
415
|
+
### 階層構造が作成されない
|
|
416
|
+
|
|
417
|
+
1. `pageCreationGranularity`が正しく設定されているか確認
|
|
418
|
+
2. `hierarchy`設定が適切に設定されているか確認
|
|
419
|
+
3. Confluence APIの権限を確認
|
|
420
|
+
|
|
421
|
+
### バリデーションエラー
|
|
422
|
+
|
|
423
|
+
1. エラーメッセージを確認
|
|
424
|
+
2. スキーマに準拠しているか確認
|
|
425
|
+
3. 必須フィールドが設定されているか確認
|
|
426
|
+
|
|
427
|
+
## 参考リンク
|
|
428
|
+
|
|
429
|
+
- [セットアップガイド](./setup.md)
|
|
430
|
+
- [ワークフローガイド](./workflow.md)
|
|
431
|
+
- [新規プロジェクトセットアップ](./new-project-setup.md)
|
|
432
|
+
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# マルチプロジェクト管理ガイド
|
|
2
|
+
|
|
3
|
+
> **凡例について**: `<feature>` などの記号の意味は [README.md#凡例の記号説明](../README.md#凡例の記号説明) を参照してください。
|
|
4
|
+
|
|
5
|
+
## 概要
|
|
6
|
+
|
|
7
|
+
Michiは、複数プロジェクト(3-5案件)を同時並行で管理できるように設計されています。
|
|
8
|
+
|
|
9
|
+
## アーキテクチャ
|
|
10
|
+
|
|
11
|
+
### マイクロサービス構成
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
organization/
|
|
15
|
+
├── customer-a-service-1/ ← A社 サービス1
|
|
16
|
+
│ └── .kiro/
|
|
17
|
+
│ ├── project.json
|
|
18
|
+
│ └── specs/
|
|
19
|
+
├── customer-a-service-2/ ← A社 サービス2
|
|
20
|
+
│ └── .kiro/
|
|
21
|
+
├── customer-b-api/ ← B社 API
|
|
22
|
+
│ └── .kiro/
|
|
23
|
+
└── michi/ ← 統合ハブ(本プロジェクト)
|
|
24
|
+
└── .kiro/
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 統合管理
|
|
28
|
+
|
|
29
|
+
**Confluence**: 共有スペース(PRD, QA, RELEASE)
|
|
30
|
+
- ラベルでプロジェクトを識別
|
|
31
|
+
- プロジェクト横断ダッシュボード
|
|
32
|
+
|
|
33
|
+
**JIRA**: プロジェクトキー別
|
|
34
|
+
- PRJA(A社案件)
|
|
35
|
+
- PRJB(B社案件)
|
|
36
|
+
- MICHI(統合ハブ)
|
|
37
|
+
|
|
38
|
+
## プロジェクトのセットアップ
|
|
39
|
+
|
|
40
|
+
### 新規プロジェクト追加
|
|
41
|
+
|
|
42
|
+
詳細な手順は [新規プロジェクトセットアップガイド](./new-project-setup.md) を参照してください。
|
|
43
|
+
|
|
44
|
+
**クイックスタート**:
|
|
45
|
+
1. 既存リポジトリに追加: `bash /path/to/michi/scripts/setup-existing.sh`
|
|
46
|
+
2. 新規リポジトリ作成: `npm run create-project -- --name <id> --project-name <name> --jira-key <key>`
|
|
47
|
+
|
|
48
|
+
**マルチプロジェクト特有の注意点**:
|
|
49
|
+
- 各プロジェクトは独立したリポジトリで管理
|
|
50
|
+
- `.kiro/project.json`でプロジェクトを識別
|
|
51
|
+
- Confluenceラベルでプロジェクト横断検索が可能
|
|
52
|
+
|
|
53
|
+
### 環境変数設定
|
|
54
|
+
|
|
55
|
+
各プロジェクトで`.env`ファイルを設定します。詳細は [新規プロジェクトセットアップガイド](./new-project-setup.md#step-5-環境変数設定) を参照してください。
|
|
56
|
+
|
|
57
|
+
### 動作確認
|
|
58
|
+
|
|
59
|
+
セットアップ完了後、プロジェクト情報を確認します:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# プロジェクト情報を表示
|
|
63
|
+
cat .kiro/project.json
|
|
64
|
+
|
|
65
|
+
# テスト機能で確認(オプション)
|
|
66
|
+
/kiro:spec-init テスト機能
|
|
67
|
+
/kiro:spec-requirements test-feature
|
|
68
|
+
npx @michi/cli phase:run test-feature requirements
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## プロジェクト切り替え
|
|
72
|
+
|
|
73
|
+
### Cursorで切り替え
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
/kiro:project-switch customer-a-service-1
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### ターミナルで切り替え
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
cd ~/work/projects/customer-a-service-1
|
|
83
|
+
cat .kiro/project.json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## プロジェクト横断操作
|
|
87
|
+
|
|
88
|
+
### すべてのプロジェクトを一覧表示
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm run project:list
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
出力例:
|
|
95
|
+
```
|
|
96
|
+
📋 プロジェクト一覧:
|
|
97
|
+
|
|
98
|
+
| プロジェクト | ID | ステータス | JIRA | チーム |
|
|
99
|
+
|------------|-------|----------|------|--------|
|
|
100
|
+
| Michi | michi | active | MICHI | @developer1 |
|
|
101
|
+
| A社 サービス1 | customer-a-service-1 | active | PRJA | @dev1, @dev2 |
|
|
102
|
+
| B社 API | customer-b-api | active | PRJB | @dev3 |
|
|
103
|
+
|
|
104
|
+
合計: 3 プロジェクト
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### リソースダッシュボード生成
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npm run project:dashboard
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Confluenceに「プロジェクトリソースダッシュボード」ページを作成します。
|
|
114
|
+
|
|
115
|
+
### プロジェクト横断見積もり集計
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npm run multi-estimate
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
すべてのプロジェクトの見積もりを集計し、Excelファイルに出力します。
|
|
122
|
+
|
|
123
|
+
## Confluenceダッシュボード
|
|
124
|
+
|
|
125
|
+
### プロジェクト一覧ページ
|
|
126
|
+
|
|
127
|
+
Confluenceで作成:
|
|
128
|
+
|
|
129
|
+
**ページタイトル**: プロジェクト一覧
|
|
130
|
+
|
|
131
|
+
**コンテンツ**:
|
|
132
|
+
```
|
|
133
|
+
{report-table:space=PRD|label=requirements|columns=title,labels,status}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**フィルタ例**:
|
|
137
|
+
- A社案件のみ: `label = "project:a"`
|
|
138
|
+
- レビュー待ち: `status = "レビュー待ち"`
|
|
139
|
+
- 設計フェーズ: `label = "design"`
|
|
140
|
+
|
|
141
|
+
### JIRAダッシュボード
|
|
142
|
+
|
|
143
|
+
**フィルタ**:
|
|
144
|
+
```
|
|
145
|
+
project IN (MICHI, PRJA, PRJB) AND status IN ("In Progress", "In Review")
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**グルーピング**: プロジェクトキー別
|
|
149
|
+
|
|
150
|
+
**集計**: ストーリーポイント合計
|
|
151
|
+
|
|
152
|
+
## プロジェクト間の依存関係
|
|
153
|
+
|
|
154
|
+
プロジェクトは基本的に独立していますが、共通基盤がある場合:
|
|
155
|
+
|
|
156
|
+
### 共通ライブラリプロジェクト
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
shared-infrastructure/
|
|
160
|
+
└── .kiro/
|
|
161
|
+
└── project.json
|
|
162
|
+
{
|
|
163
|
+
"projectId": "shared-infra",
|
|
164
|
+
"projectName": "共通基盤",
|
|
165
|
+
"jiraProjectKey": "INFRA",
|
|
166
|
+
...
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 依存関係の記述
|
|
171
|
+
|
|
172
|
+
各プロジェクトの `.kiro/project.json` に追加:
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"dependencies": ["shared-infra"],
|
|
176
|
+
"dependents": ["customer-a-service-1", "customer-b-api"]
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## ベストプラクティス
|
|
181
|
+
|
|
182
|
+
### 命名規則の統一
|
|
183
|
+
|
|
184
|
+
**プロジェクトID**: `customer-{id}-{service}`
|
|
185
|
+
- 例: `customer-a-service-1`, `customer-b-api`
|
|
186
|
+
|
|
187
|
+
**JIRA プロジェクトキー**: 3-4文字
|
|
188
|
+
- 例: `PRJA`, `PRJB`, `MICHI`
|
|
189
|
+
|
|
190
|
+
**Confluenceラベル**: `project:{projectId}, service:{service}`
|
|
191
|
+
- 例: `project:customer-a-service-1, service:s1`
|
|
192
|
+
|
|
193
|
+
**ラベル生成ロジック**: 詳細は [新規プロジェクトセットアップガイド](./new-project-setup.md#ラベル生成ロジック) を参照してください。
|
|
194
|
+
### チーム構成の明確化
|
|
195
|
+
|
|
196
|
+
各プロジェクトの `team` フィールドに担当者を記載:
|
|
197
|
+
```json
|
|
198
|
+
{
|
|
199
|
+
"team": ["@tech-lead", "@frontend-dev", "@backend-dev"]
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### ステータス管理
|
|
204
|
+
|
|
205
|
+
プロジェクトのステータスを適切に更新:
|
|
206
|
+
- `active`: 開発中
|
|
207
|
+
- `maintenance`: 保守フェーズ
|
|
208
|
+
- `completed`: 完了
|
|
209
|
+
- `inactive`: 休止中
|
|
210
|
+
|
|
211
|
+
## トラブルシューティング
|
|
212
|
+
|
|
213
|
+
### プロジェクトが一覧に表示されない
|
|
214
|
+
|
|
215
|
+
`.kiro/project.json` が正しく作成されているか確認:
|
|
216
|
+
```bash
|
|
217
|
+
cat .kiro/project.json
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Confluenceで他のプロジェクトが見える
|
|
221
|
+
|
|
222
|
+
ラベルでフィルタリング:
|
|
223
|
+
```
|
|
224
|
+
label = "project:michi"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### JIRA チケットが混在
|
|
228
|
+
|
|
229
|
+
プロジェクトキーでフィルタリング:
|
|
230
|
+
```
|
|
231
|
+
project = MICHI
|
|
232
|
+
```
|
|
233
|
+
|