@sk8metal/michi-cli 0.0.4 → 0.0.5
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 +18 -0
- package/README.md +24 -25
- package/dist/scripts/config-interactive.d.ts +1 -1
- package/dist/scripts/config-interactive.d.ts.map +1 -1
- package/dist/scripts/config-interactive.js +4 -4
- package/dist/scripts/config-interactive.js.map +1 -1
- package/dist/scripts/confluence-sync.js +2 -2
- package/dist/scripts/confluence-sync.js.map +1 -1
- package/dist/scripts/create-project.d.ts +2 -2
- package/dist/scripts/create-project.js +2 -2
- package/dist/scripts/jira-sync.js +3 -3
- package/dist/scripts/jira-sync.js.map +1 -1
- package/dist/scripts/utils/__tests__/config-loader.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/config-loader.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/config-loader.test.js +201 -0
- package/dist/scripts/utils/__tests__/config-loader.test.js.map +1 -0
- package/dist/scripts/utils/__tests__/config-validator.test.js +29 -16
- package/dist/scripts/utils/__tests__/config-validator.test.js.map +1 -1
- package/dist/scripts/utils/config-loader.d.ts +4 -0
- package/dist/scripts/utils/config-loader.d.ts.map +1 -1
- package/dist/scripts/utils/config-loader.js +24 -2
- package/dist/scripts/utils/config-loader.js.map +1 -1
- package/dist/scripts/utils/config-validator.js +8 -9
- package/dist/scripts/utils/config-validator.js.map +1 -1
- package/dist/src/cli.js +2 -2
- package/dist/src/cli.js.map +1 -1
- package/docs/config-reference.md +76 -197
- package/docs/customization-guide.md +61 -9
- package/docs/multi-project.md +157 -25
- package/docs/new-project-setup.md +36 -36
- package/docs/quick-reference.md +23 -20
- package/docs/setup.md +5 -3
- package/env.example +3 -1
- package/package.json +1 -1
- package/scripts/config-interactive.ts +4 -3
- package/scripts/confluence-sync.ts +2 -2
- package/scripts/create-project.ts +4 -4
- package/scripts/jira-sync.ts +3 -3
- package/scripts/setup-existing.sh +1 -1
- package/scripts/utils/__tests__/config-loader.test.ts +254 -0
- package/scripts/utils/__tests__/config-validator.test.ts +32 -16
- package/scripts/utils/config-loader.ts +30 -2
- package/scripts/utils/config-validator.ts +8 -8
- package/docs/testing.md +0 -202
package/docs/multi-project.md
CHANGED
|
@@ -8,22 +8,30 @@ Michiは、複数プロジェクト(3-5案件)を同時並行で管理でき
|
|
|
8
8
|
|
|
9
9
|
## アーキテクチャ
|
|
10
10
|
|
|
11
|
-
###
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
│
|
|
19
|
-
|
|
20
|
-
│
|
|
21
|
-
|
|
22
|
-
│
|
|
23
|
-
└──
|
|
11
|
+
### プロジェクト構成
|
|
12
|
+
|
|
13
|
+
**構成**: 1つのリポジトリ内で複数プロジェクトを管理します。各プロジェクトは独立したディレクトリに配置され、それぞれに`.kiro/project.json`を持ちます。
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
repository/ ← 1つのGitHubリポジトリ
|
|
17
|
+
├── projects/
|
|
18
|
+
│ ├── 20240115-payment-api/ ← プロジェクトA
|
|
19
|
+
│ │ └── .kiro/
|
|
20
|
+
│ │ ├── project.json
|
|
21
|
+
│ │ └── specs/
|
|
22
|
+
│ ├── 20240201-user-management/ ← プロジェクトB
|
|
23
|
+
│ │ └── .kiro/
|
|
24
|
+
│ └── 20240310-analytics-api/ ← プロジェクトC
|
|
25
|
+
│ └── .kiro/
|
|
26
|
+
└── michi/ ← 統合ハブ(オプション)
|
|
24
27
|
└── .kiro/
|
|
25
28
|
```
|
|
26
29
|
|
|
30
|
+
**プロジェクト識別方法**:
|
|
31
|
+
- 各プロジェクトディレクトリに`.kiro/project.json`を配置
|
|
32
|
+
- 作業ディレクトリ(`process.cwd()`)から`.kiro/project.json`を読み込んでプロジェクトを識別
|
|
33
|
+
- プロジェクト切り替えは、該当ディレクトリに移動するだけ
|
|
34
|
+
|
|
27
35
|
### 統合管理
|
|
28
36
|
|
|
29
37
|
**Confluence**: 共有スペース(PRD, QA, RELEASE)
|
|
@@ -31,8 +39,8 @@ organization/
|
|
|
31
39
|
- プロジェクト横断ダッシュボード
|
|
32
40
|
|
|
33
41
|
**JIRA**: プロジェクトキー別
|
|
34
|
-
- PRJA
|
|
35
|
-
- PRJB
|
|
42
|
+
- PRJA(プロジェクトA)
|
|
43
|
+
- PRJB(プロジェクトB)
|
|
36
44
|
- MICHI(統合ハブ)
|
|
37
45
|
|
|
38
46
|
## プロジェクトのセットアップ
|
|
@@ -46,9 +54,11 @@ organization/
|
|
|
46
54
|
2. 新規リポジトリ作成: `npm run create-project -- --name <id> --project-name <name> --jira-key <key>`
|
|
47
55
|
|
|
48
56
|
**マルチプロジェクト特有の注意点**:
|
|
49
|
-
-
|
|
57
|
+
- 1つのリポジトリ内で複数プロジェクトを管理
|
|
58
|
+
- 各プロジェクトは独立したディレクトリに配置
|
|
50
59
|
- `.kiro/project.json`でプロジェクトを識別
|
|
51
60
|
- Confluenceラベルでプロジェクト横断検索が可能
|
|
61
|
+
- プロジェクト切り替えは、該当ディレクトリに移動するだけ
|
|
52
62
|
|
|
53
63
|
### 環境変数設定
|
|
54
64
|
|
|
@@ -70,19 +80,138 @@ npx @michi/cli phase:run test-feature requirements
|
|
|
70
80
|
|
|
71
81
|
## プロジェクト切り替え
|
|
72
82
|
|
|
83
|
+
### 現在のプロジェクトを確認
|
|
84
|
+
|
|
85
|
+
作業中のプロジェクトを確認するには:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# 現在のディレクトリを確認
|
|
89
|
+
pwd
|
|
90
|
+
|
|
91
|
+
# プロジェクト情報を表示
|
|
92
|
+
cat .kiro/project.json
|
|
93
|
+
|
|
94
|
+
# プロジェクトIDのみ表示
|
|
95
|
+
cat .kiro/project.json | grep projectId
|
|
96
|
+
```
|
|
97
|
+
|
|
73
98
|
### Cursorで切り替え
|
|
74
99
|
|
|
100
|
+
Cursor IDE内でプロジェクトを切り替える場合:
|
|
101
|
+
|
|
102
|
+
**対話式切り替え(推奨)**:
|
|
75
103
|
```
|
|
76
|
-
/kiro:project-switch
|
|
104
|
+
/kiro:project-switch
|
|
77
105
|
```
|
|
78
106
|
|
|
107
|
+
パラメータを指定しない場合、リポジトリ内のプロジェクトリストが表示され、対話的に選択できます:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
📋 利用可能なプロジェクト:
|
|
111
|
+
1. 20240115-payment-api (プロジェクトA サービス1) [active]
|
|
112
|
+
2. 20240201-user-management (プロジェクトA サービス2) [active]
|
|
113
|
+
3. 20240310-analytics-api (プロジェクトB API) [active]
|
|
114
|
+
|
|
115
|
+
選択してください (1-3): 1
|
|
116
|
+
|
|
117
|
+
✅ プロジェクト切り替え: 20240115-payment-api
|
|
118
|
+
📁 ディレクトリ: projects/20240115-payment-api
|
|
119
|
+
|
|
120
|
+
プロジェクト情報:
|
|
121
|
+
名前: プロジェクトA サービス1
|
|
122
|
+
JIRA: PRJA
|
|
123
|
+
Confluence Labels: project:20240115-payment-api, service:payment
|
|
124
|
+
ステータス: active
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**直接指定**:
|
|
128
|
+
```
|
|
129
|
+
/kiro:project-switch 20240115-payment-api
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**実行内容**:
|
|
133
|
+
1. プロジェクトIDに対応するディレクトリを特定(`projects/20240115-payment-api`)
|
|
134
|
+
2. 該当ディレクトリに移動(Cursorの作業ディレクトリを変更)
|
|
135
|
+
3. `.kiro/project.json` を読み込んで表示
|
|
136
|
+
4. プロジェクト情報を表示
|
|
137
|
+
|
|
79
138
|
### ターミナルで切り替え
|
|
80
139
|
|
|
140
|
+
ターミナルでプロジェクトを切り替える場合:
|
|
141
|
+
|
|
81
142
|
```bash
|
|
82
|
-
|
|
143
|
+
# リポジトリルートに移動
|
|
144
|
+
cd /path/to/repository
|
|
145
|
+
|
|
146
|
+
# プロジェクトAに切り替え
|
|
147
|
+
cd projects/20240115-payment-api
|
|
148
|
+
|
|
149
|
+
# プロジェクト情報を確認
|
|
150
|
+
cat .kiro/project.json
|
|
151
|
+
|
|
152
|
+
# プロジェクトBに切り替え
|
|
153
|
+
cd ../20240310-analytics-api
|
|
154
|
+
|
|
155
|
+
# プロジェクト情報を確認
|
|
156
|
+
cat .kiro/project.json
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**ショートカット**:
|
|
160
|
+
```bash
|
|
161
|
+
# プロジェクトディレクトリへのエイリアスを設定(.zshrc または .bashrc)
|
|
162
|
+
alias pj-a='cd /path/to/repository/projects/20240115-payment-api'
|
|
163
|
+
alias pj-b='cd /path/to/repository/projects/20240310-analytics-api'
|
|
164
|
+
|
|
165
|
+
# 使用例
|
|
166
|
+
pj-a
|
|
83
167
|
cat .kiro/project.json
|
|
84
168
|
```
|
|
85
169
|
|
|
170
|
+
### 切り替え後の確認
|
|
171
|
+
|
|
172
|
+
プロジェクト切り替え後、以下のコマンドで正しく切り替わったか確認:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# 現在のディレクトリを確認
|
|
176
|
+
pwd
|
|
177
|
+
|
|
178
|
+
# プロジェクト情報を表示
|
|
179
|
+
cat .kiro/project.json
|
|
180
|
+
|
|
181
|
+
# プロジェクトIDを確認
|
|
182
|
+
cat .kiro/project.json | jq .projectId
|
|
183
|
+
|
|
184
|
+
# 仕様書の一覧を確認
|
|
185
|
+
ls -la .kiro/specs/
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### よくあるトラブル
|
|
189
|
+
|
|
190
|
+
#### プロジェクトが見つからない
|
|
191
|
+
|
|
192
|
+
**症状**: `/kiro:project-switch`でエラーが発生する
|
|
193
|
+
|
|
194
|
+
**原因と解決方法**:
|
|
195
|
+
1. プロジェクトディレクトリが存在するか確認
|
|
196
|
+
```bash
|
|
197
|
+
ls -la projects/
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
2. プロジェクトIDが正しいか確認
|
|
201
|
+
```bash
|
|
202
|
+
cat projects/20240115-payment-api/.kiro/project.json | grep projectId
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
3. パスが正しいか確認(絶対パスまたはリポジトリルートからの相対パス)
|
|
206
|
+
|
|
207
|
+
#### `.kiro/project.json`が見つからない
|
|
208
|
+
|
|
209
|
+
**症状**: プロジェクトディレクトリに移動したが、`.kiro/project.json`が存在しない
|
|
210
|
+
|
|
211
|
+
**解決方法**:
|
|
212
|
+
1. プロジェクトディレクトリが正しいか確認
|
|
213
|
+
2. `.kiro/project.json`を作成([新規プロジェクトセットアップガイド](./new-project-setup.md)を参照)
|
|
214
|
+
|
|
86
215
|
## プロジェクト横断操作
|
|
87
216
|
|
|
88
217
|
### すべてのプロジェクトを一覧表示
|
|
@@ -98,8 +227,8 @@ npm run project:list
|
|
|
98
227
|
| プロジェクト | ID | ステータス | JIRA | チーム |
|
|
99
228
|
|------------|-------|----------|------|--------|
|
|
100
229
|
| Michi | michi | active | MICHI | @developer1 |
|
|
101
|
-
| A
|
|
102
|
-
| B
|
|
230
|
+
| プロジェクトA サービス1 | 20240115-payment-api | active | PRJA | @dev1, @dev2 |
|
|
231
|
+
| プロジェクトB API | 20240310-analytics-api | active | PRJB | @dev3 |
|
|
103
232
|
|
|
104
233
|
合計: 3 プロジェクト
|
|
105
234
|
```
|
|
@@ -134,7 +263,7 @@ Confluenceで作成:
|
|
|
134
263
|
```
|
|
135
264
|
|
|
136
265
|
**フィルタ例**:
|
|
137
|
-
- A
|
|
266
|
+
- プロジェクトAのみ: `label = "project:20240115-payment-api"`
|
|
138
267
|
- レビュー待ち: `status = "レビュー待ち"`
|
|
139
268
|
- 設計フェーズ: `label = "design"`
|
|
140
269
|
|
|
@@ -173,7 +302,7 @@ shared-infrastructure/
|
|
|
173
302
|
```json
|
|
174
303
|
{
|
|
175
304
|
"dependencies": ["shared-infra"],
|
|
176
|
-
"dependents": ["
|
|
305
|
+
"dependents": ["20240115-payment-api", "20240310-analytics-api"]
|
|
177
306
|
}
|
|
178
307
|
```
|
|
179
308
|
|
|
@@ -181,14 +310,17 @@ shared-infrastructure/
|
|
|
181
310
|
|
|
182
311
|
### 命名規則の統一
|
|
183
312
|
|
|
184
|
-
**プロジェクトID**: `
|
|
185
|
-
- 例: `
|
|
313
|
+
**プロジェクトID**: `{YYYYMMDD}-{PJ名}`
|
|
314
|
+
- 例: `20240115-payment-api`, `20240201-user-management`
|
|
315
|
+
- 形式: `YYYYMMDD-{kebab-case-name}`
|
|
316
|
+
- 開始日はプロジェクト開始日(YYYYMMDD形式、ハイフンなし)
|
|
317
|
+
- プロジェクトディレクトリ名としても使用
|
|
186
318
|
|
|
187
319
|
**JIRA プロジェクトキー**: 3-4文字
|
|
188
320
|
- 例: `PRJA`, `PRJB`, `MICHI`
|
|
189
321
|
|
|
190
322
|
**Confluenceラベル**: `project:{projectId}, service:{service}`
|
|
191
|
-
- 例: `project:
|
|
323
|
+
- 例: `project:20240115-payment-api, service:payment`
|
|
192
324
|
|
|
193
325
|
**ラベル生成ロジック**: 詳細は [新規プロジェクトセットアップガイド](./new-project-setup.md#ラベル生成ロジック) を参照してください。
|
|
194
326
|
### チーム構成の明確化
|
|
@@ -22,8 +22,8 @@ npm run create-project -- \
|
|
|
22
22
|
|
|
23
23
|
# 具体例
|
|
24
24
|
npm run create-project -- \
|
|
25
|
-
--name "
|
|
26
|
-
--project-name "A
|
|
25
|
+
--name "20240115-payment-api" \
|
|
26
|
+
--project-name "プロジェクトA" \
|
|
27
27
|
--jira-key "PRJA"
|
|
28
28
|
```
|
|
29
29
|
|
|
@@ -91,24 +91,24 @@ cursor .
|
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
93
|
# GitHub CLI で新規リポジトリ作成
|
|
94
|
-
gh repo create your-org/
|
|
94
|
+
gh repo create your-org/20240115-payment-api --private --description "プロジェクトA"
|
|
95
95
|
|
|
96
96
|
# ローカルにクローン
|
|
97
97
|
cd ~/work/projects
|
|
98
|
-
jj git clone https://github.com/your-org/
|
|
99
|
-
cd
|
|
98
|
+
jj git clone https://github.com/your-org/20240115-payment-api
|
|
99
|
+
cd 20240115-payment-api
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
#### Git を使用する場合
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
105
|
# GitHub CLI で新規リポジトリ作成
|
|
106
|
-
gh repo create your-org/
|
|
106
|
+
gh repo create your-org/20240115-payment-api --private --description "プロジェクトA"
|
|
107
107
|
|
|
108
108
|
# ローカルにクローン
|
|
109
109
|
cd ~/work/projects
|
|
110
|
-
git clone https://github.com/your-org/
|
|
111
|
-
cd
|
|
110
|
+
git clone https://github.com/your-org/20240115-payment-api
|
|
111
|
+
cd 20240115-payment-api
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
### Step 2: cc-sdd 導入
|
|
@@ -128,15 +128,15 @@ npx cc-sdd@latest --cursor --lang ja --yes
|
|
|
128
128
|
|
|
129
129
|
```json
|
|
130
130
|
{
|
|
131
|
-
"projectId": "
|
|
132
|
-
"projectName": "A
|
|
131
|
+
"projectId": "20240115-payment-api",
|
|
132
|
+
"projectName": "プロジェクトA",
|
|
133
133
|
"jiraProjectKey": "PRJA",
|
|
134
|
-
"confluenceLabels": ["project:
|
|
134
|
+
"confluenceLabels": ["project:20240115-payment-api", "service:payment"],
|
|
135
135
|
"status": "active",
|
|
136
136
|
"team": ["@dev1", "@dev2"],
|
|
137
137
|
"stakeholders": ["@企画", "@部長"],
|
|
138
|
-
"repository": "https://github.com/your-org/
|
|
139
|
-
"description": "A
|
|
138
|
+
"repository": "https://github.com/your-org/20240115-payment-api",
|
|
139
|
+
"description": "プロジェクトA向け決済APIの開発"
|
|
140
140
|
}
|
|
141
141
|
```
|
|
142
142
|
|
|
@@ -152,12 +152,12 @@ npx cc-sdd@latest --cursor --lang ja --yes
|
|
|
152
152
|
- **プロジェクトラベル**: `project:{projectId}` を常に生成
|
|
153
153
|
- **サービスラベル**: ハイフン(`-`)が含まれる場合のみ生成
|
|
154
154
|
- ハイフンがない場合: `project:michi` のみ(サービスラベルなし)
|
|
155
|
-
- ハイフンがある場合: `project:
|
|
155
|
+
- ハイフンがある場合: `project:20240115-payment-api, service:payment`
|
|
156
156
|
- 重複防止: サービスラベルがプロジェクトラベルと同一の場合は追加しない
|
|
157
157
|
|
|
158
158
|
**動作例**:
|
|
159
159
|
- `projectId: 'michi'` → `['project:michi']`(サービスラベルなし)
|
|
160
|
-
- `projectId: '
|
|
160
|
+
- `projectId: '20240115-payment-api'` → `['project:20240115-payment-api', 'service:payment']`
|
|
161
161
|
- `projectId: 'michi-service'` → `['project:michi-service']`(サービスラベルがプロジェクトラベルと同一のため追加しない)
|
|
162
162
|
### Step 4: Michiから共通設定をコピー
|
|
163
163
|
|
|
@@ -198,7 +198,7 @@ ATLASSIAN_API_TOKEN=your-token-here
|
|
|
198
198
|
# GitHub設定
|
|
199
199
|
GITHUB_ORG=your-org
|
|
200
200
|
GITHUB_TOKEN=ghp_xxx
|
|
201
|
-
GITHUB_REPO=your-org/
|
|
201
|
+
GITHUB_REPO=your-org/20240115-payment-api
|
|
202
202
|
|
|
203
203
|
# Confluence共有スペース
|
|
204
204
|
CONFLUENCE_PRD_SPACE=PRD
|
|
@@ -248,7 +248,7 @@ npm run type-check
|
|
|
248
248
|
# Git初期化(まだの場合)
|
|
249
249
|
git init
|
|
250
250
|
git branch -M main
|
|
251
|
-
git remote add origin https://github.com/your-org/
|
|
251
|
+
git remote add origin https://github.com/your-org/20240115-payment-api.git
|
|
252
252
|
```
|
|
253
253
|
|
|
254
254
|
### Step 8: 初期コミット
|
|
@@ -344,9 +344,9 @@ gh pr create --head <project-id>/feature/<feature> --base main
|
|
|
344
344
|
# 具体例
|
|
345
345
|
/kiro:spec-impl user-auth FE-1,BE-1
|
|
346
346
|
jj commit -m "feat: 実装 [PRJA-123]"
|
|
347
|
-
jj bookmark create
|
|
348
|
-
jj git push --bookmark
|
|
349
|
-
gh pr create --head
|
|
347
|
+
jj bookmark create 20240115-payment-api/feature/user-auth -r '@-'
|
|
348
|
+
jj git push --bookmark 20240115-payment-api/feature/user-auth --allow-new
|
|
349
|
+
gh pr create --head 20240115-payment-api/feature/user-auth --base main
|
|
350
350
|
```
|
|
351
351
|
|
|
352
352
|
#### Git を使用する場合
|
|
@@ -410,11 +410,11 @@ gh pr create --head <project-id>/feature/<feature> --base main
|
|
|
410
410
|
|
|
411
411
|
# 具体例
|
|
412
412
|
/kiro:spec-impl user-auth FE-1,BE-1
|
|
413
|
-
git checkout -b
|
|
413
|
+
git checkout -b 20240115-payment-api/feature/user-auth
|
|
414
414
|
git add .
|
|
415
415
|
git commit -m "feat: 実装 [PRJA-123]"
|
|
416
|
-
git push -u origin
|
|
417
|
-
gh pr create --head
|
|
416
|
+
git push -u origin 20240115-payment-api/feature/user-auth
|
|
417
|
+
gh pr create --head 20240115-payment-api/feature/user-auth --base main
|
|
418
418
|
```
|
|
419
419
|
|
|
420
420
|
## プロジェクト間の切り替え
|
|
@@ -422,17 +422,17 @@ gh pr create --head customer-a-service-1/feature/user-auth --base main
|
|
|
422
422
|
### Cursor で切り替え
|
|
423
423
|
|
|
424
424
|
```text
|
|
425
|
-
/kiro:project-switch
|
|
425
|
+
/kiro:project-switch 20240115-payment-api
|
|
426
426
|
```
|
|
427
427
|
|
|
428
428
|
### ターミナルで切り替え
|
|
429
429
|
|
|
430
430
|
```bash
|
|
431
431
|
# プロジェクトAに切り替え
|
|
432
|
-
cd ~/work/projects/
|
|
432
|
+
cd ~/work/projects/20240115-payment-api
|
|
433
433
|
|
|
434
434
|
# プロジェクトBに切り替え
|
|
435
|
-
cd ~/work/projects/
|
|
435
|
+
cd ~/work/projects/20240201-user-management
|
|
436
436
|
|
|
437
437
|
# Michiハブに戻る
|
|
438
438
|
cd ~/work/projects/michi
|
|
@@ -455,8 +455,8 @@ npm run project:list
|
|
|
455
455
|
| プロジェクト | ID | ステータス | JIRA | チーム |
|
|
456
456
|
|------------|-------|----------|------|--------|
|
|
457
457
|
| Michi | michi | active | MICHI | @developer1 |
|
|
458
|
-
| A
|
|
459
|
-
|
|
|
458
|
+
| プロジェクトA | 20240115-payment-api | active | PRJA | @dev1, @dev2 |
|
|
459
|
+
| プロジェクトC | 20240310-analytics-api | active | PRJB | @dev3 |
|
|
460
460
|
```
|
|
461
461
|
|
|
462
462
|
## トラブルシューティング
|
|
@@ -483,17 +483,17 @@ npx cc-sdd@latest --cursor --lang ja --yes
|
|
|
483
483
|
|
|
484
484
|
### プロジェクト命名規則
|
|
485
485
|
|
|
486
|
-
**リポジトリ名**: `
|
|
487
|
-
- 例: `
|
|
486
|
+
**リポジトリ名**: `{YYYYMMDD}-{PJ名}`
|
|
487
|
+
- 例: `20240115-payment-api`, `20240201-user-management`, `20240310-analytics-api`
|
|
488
488
|
|
|
489
489
|
**プロジェクトID**: リポジトリ名と同じ
|
|
490
|
-
- 例: `
|
|
490
|
+
- 例: `20240115-payment-api`
|
|
491
491
|
|
|
492
492
|
**JIRA プロジェクトキー**: 3-4文字、一意
|
|
493
493
|
- 例: `PRJA`, `PRJB`, `PRJC`
|
|
494
494
|
|
|
495
495
|
**Confluenceラベル**: `project:{projectId}, service:{service}`
|
|
496
|
-
- 例: `["project:
|
|
496
|
+
- 例: `["project:20240115-payment-api", "service:payment"]`
|
|
497
497
|
|
|
498
498
|
### チーム構成
|
|
499
499
|
|
|
@@ -522,10 +522,10 @@ npx cc-sdd@latest --cursor --lang ja --yes
|
|
|
522
522
|
|
|
523
523
|
```bash
|
|
524
524
|
# ターミナル1: プロジェクトA
|
|
525
|
-
cd ~/work/projects/
|
|
525
|
+
cd ~/work/projects/20240115-payment-api
|
|
526
526
|
|
|
527
527
|
# ターミナル2: プロジェクトB
|
|
528
|
-
cd ~/work/projects/
|
|
528
|
+
cd ~/work/projects/20240201-user-management
|
|
529
529
|
|
|
530
530
|
# ターミナル3: Michiハブ(横断操作用)
|
|
531
531
|
cd ~/work/projects/michi
|
|
@@ -539,8 +539,8 @@ cd ~/work/projects/michi
|
|
|
539
539
|
{
|
|
540
540
|
"folders": [
|
|
541
541
|
{ "path": "../michi" },
|
|
542
|
-
{ "path": "../
|
|
543
|
-
{ "path": "../
|
|
542
|
+
{ "path": "../20240115-payment-api" },
|
|
543
|
+
{ "path": "../20240201-user-management" }
|
|
544
544
|
],
|
|
545
545
|
"settings": {
|
|
546
546
|
"files.associations": {
|
package/docs/quick-reference.md
CHANGED
|
@@ -30,15 +30,15 @@ npm run create-project -- \
|
|
|
30
30
|
|
|
31
31
|
# 具体例
|
|
32
32
|
npm run create-project -- \
|
|
33
|
-
--name "
|
|
34
|
-
--project-name "A
|
|
33
|
+
--name "20240115-payment-api" \
|
|
34
|
+
--project-name "プロジェクトA" \
|
|
35
35
|
--jira-key "PRJA"
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
**リポジトリ名**: `--name`で指定した値がそのままGitHubリポジトリ名として使用されます。
|
|
39
39
|
|
|
40
40
|
**例**:
|
|
41
|
-
- `--name "
|
|
41
|
+
- `--name "20240115-payment-api"` → GitHubリポジトリ: `org/20240115-payment-api`
|
|
42
42
|
- `--name "payment-api"` → GitHubリポジトリ: `org/payment-api`
|
|
43
43
|
|
|
44
44
|
**注意**: リポジトリ名はkebab-case(小文字、ハイフン区切り)を推奨します。
|
|
@@ -113,19 +113,22 @@ jj git push --bookmark <project-id>/feature/<feature> --allow-new
|
|
|
113
113
|
gh pr create --head <project-id>/feature/<feature> --base init
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
##
|
|
117
|
-
|
|
118
|
-
| コマンド | 説明 |
|
|
119
|
-
|
|
120
|
-
| `/kiro:spec-init <description>` | 仕様初期化 |
|
|
121
|
-
| `/kiro:spec-requirements <feature>` | 要件定義生成 |
|
|
122
|
-
| `/kiro:spec-design <feature>` | 設計生成 |
|
|
123
|
-
| `/kiro:spec-tasks <feature>` | タスク分割 |
|
|
124
|
-
| `/kiro:spec-impl <feature> <tasks>` | TDD実装 |
|
|
125
|
-
| `/kiro:spec-status <feature>` | 進捗確認 |
|
|
126
|
-
| `/kiro:steering` | Steering作成/更新 |
|
|
127
|
-
| `/kiro:
|
|
128
|
-
| `/kiro:
|
|
116
|
+
## コマンド一覧
|
|
117
|
+
|
|
118
|
+
| コマンド | 説明 | 分類 |
|
|
119
|
+
|---------|------|------|
|
|
120
|
+
| `/kiro:spec-init <description>` | 仕様初期化 | cc-sdd |
|
|
121
|
+
| `/kiro:spec-requirements <feature>` | 要件定義生成 | cc-sdd |
|
|
122
|
+
| `/kiro:spec-design <feature>` | 設計生成 | cc-sdd |
|
|
123
|
+
| `/kiro:spec-tasks <feature>` | タスク分割 | cc-sdd |
|
|
124
|
+
| `/kiro:spec-impl <feature> <tasks>` | TDD実装 | cc-sdd |
|
|
125
|
+
| `/kiro:spec-status <feature>` | 進捗確認 | cc-sdd |
|
|
126
|
+
| `/kiro:steering` | Steering作成/更新 | cc-sdd |
|
|
127
|
+
| `/kiro:steering-custom` | カスタムSteering作成 | cc-sdd |
|
|
128
|
+
| `/kiro:validate-gap <feature>` | 既存コードと要件の差異分析 | cc-sdd |
|
|
129
|
+
| `/kiro:validate-design <feature>` | 設計の品質レビューと検証 | cc-sdd |
|
|
130
|
+
| `/kiro:confluence-sync <feature> [type]` | Confluence同期 | Michi only |
|
|
131
|
+
| `/kiro:project-switch <project_id>` | プロジェクト切り替え | Michi only |
|
|
129
132
|
|
|
130
133
|
## Michi CLIコマンド一覧
|
|
131
134
|
|
|
@@ -141,7 +144,7 @@ gh pr create --head <project-id>/feature/<feature> --base init
|
|
|
141
144
|
| `michi project:list` | プロジェクト一覧 |
|
|
142
145
|
| `michi project:dashboard` | リソースダッシュボード生成 |
|
|
143
146
|
| `michi workflow:run --feature <name>` | 統合ワークフロー実行 |
|
|
144
|
-
| `michi config:interactive` | 対話式設定ツール(.
|
|
147
|
+
| `michi config:interactive` | 対話式設定ツール(.michi/config.json作成) |
|
|
145
148
|
| `michi config:validate` | 設定ファイルのバリデーション |
|
|
146
149
|
| `michi --help` | ヘルプ表示 |
|
|
147
150
|
| `michi --version` | バージョン表示 |
|
|
@@ -149,7 +152,7 @@ gh pr create --head <project-id>/feature/<feature> --base init
|
|
|
149
152
|
**インストール方法**:
|
|
150
153
|
- **npx実行(推奨)**: `npx @michi/cli <command>` - 常に最新版を使用
|
|
151
154
|
- **グローバルインストール**: `npm install -g @michi/cli` 後、`michi <command>`
|
|
152
|
-
- **ローカル開発**: `npm run michi <command>` または `tsx src/cli.ts <command>`
|
|
155
|
+
- **ローカル開発**: `npm run michi <command>` または `npx tsx src/cli.ts <command>`
|
|
153
156
|
|
|
154
157
|
## npmスクリプト一覧(michiリポジトリ内)
|
|
155
158
|
|
|
@@ -227,8 +230,8 @@ gh pr create --head <bookmark> --base main
|
|
|
227
230
|
|
|
228
231
|
例:
|
|
229
232
|
- `michi/feature/user-auth`
|
|
230
|
-
- `
|
|
231
|
-
- `
|
|
233
|
+
- `20240115-payment-api/feature/payment`
|
|
234
|
+
- `20240310-analytics-api/feature/user-endpoint`
|
|
232
235
|
|
|
233
236
|
## トラブルシューティング
|
|
234
237
|
|
package/docs/setup.md
CHANGED
|
@@ -240,11 +240,13 @@ cp mcp.json.example ~/.cursor/mcp.json
|
|
|
240
240
|
|
|
241
241
|
## 6-2. プロジェクト固有設定ファイル(オプション)
|
|
242
242
|
|
|
243
|
-
`.
|
|
243
|
+
`.michi/config.json` を作成することで、Confluence/JIRAの動作をカスタマイズできます。
|
|
244
244
|
|
|
245
245
|
### 設定ファイルの作成
|
|
246
246
|
|
|
247
|
-
プロジェクトルートに `.
|
|
247
|
+
プロジェクトルートに `.michi/config.json` を作成:
|
|
248
|
+
|
|
249
|
+
**注意**: 以前は `.kiro/config.json` を使用していましたが、Michi専用の設定ファイルとして `.michi/config.json` に変更されました。
|
|
248
250
|
|
|
249
251
|
```json
|
|
250
252
|
{
|
|
@@ -289,7 +291,7 @@ cp mcp.json.example ~/.cursor/mcp.json
|
|
|
289
291
|
設定値は以下の優先順位で決定されます:
|
|
290
292
|
|
|
291
293
|
1. **`spec.json`**: 機能固有の設定(最優先)
|
|
292
|
-
2. **`.
|
|
294
|
+
2. **`.michi/config.json`**: プロジェクト固有の設定
|
|
293
295
|
3. **環境変数**: システム環境変数または`.env`ファイル
|
|
294
296
|
4. **デフォルト値**: スキーマで定義されたデフォルト値
|
|
295
297
|
|
package/env.example
CHANGED
|
@@ -19,6 +19,8 @@ JIRA_PROJECT_KEYS=PROJECT
|
|
|
19
19
|
# JIRA Issue Type IDs(JIRAインスタンス固有の値 - 必須)
|
|
20
20
|
# JIRA管理画面(Settings > Issues > Issue types)またはREST APIで確認してください
|
|
21
21
|
# REST API: GET /rest/api/3/issuetype で取得可能
|
|
22
|
+
# 注意: 以下の値(10036, 10037)は例です。実際のJIRAインスタンスのIssue Type IDに置き換えてください
|
|
23
|
+
# 一般的にJIRAのIssue Type IDは5桁の数値(例: 10036, 10037)です
|
|
22
24
|
JIRA_ISSUE_TYPE_STORY=10036
|
|
23
25
|
JIRA_ISSUE_TYPE_SUBTASK=10037
|
|
24
26
|
|
|
@@ -27,7 +29,7 @@ ATLASSIAN_REQUEST_DELAY=500
|
|
|
27
29
|
|
|
28
30
|
# Story Pointsカスタムフィールド(JIRAプロジェクト固有)
|
|
29
31
|
# 環境変数 JIRA_STORY_POINTS_FIELD で設定可能(例: customfield_10016)
|
|
30
|
-
JIRA_STORY_POINTS_FIELD=
|
|
32
|
+
JIRA_STORY_POINTS_FIELD=customfield_100
|
|
31
33
|
|
|
32
34
|
# Epic Linkカスタムフィールド(JIRAプロジェクト固有)
|
|
33
35
|
# 環境変数 JIRA_EPIC_LINK_FIELD で設定可能(例: customfield_10014)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 対話式設定ツール
|
|
3
|
-
* .
|
|
3
|
+
* .michi/config.json を対話的に作成・更新
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { readFileSync, writeFileSync, existsSync } from 'fs';
|
|
@@ -373,7 +373,7 @@ async function main(): Promise<void> {
|
|
|
373
373
|
try {
|
|
374
374
|
console.log('🎨 Michi カスタマイズ設定ツール');
|
|
375
375
|
console.log('='.repeat(60));
|
|
376
|
-
console.log('このツールで .
|
|
376
|
+
console.log('このツールで .michi/config.json を作成・更新できます。\n');
|
|
377
377
|
|
|
378
378
|
// プロジェクトメタデータを読み込み
|
|
379
379
|
let projectMeta;
|
|
@@ -387,7 +387,8 @@ async function main(): Promise<void> {
|
|
|
387
387
|
}
|
|
388
388
|
|
|
389
389
|
// 既存の設定ファイルを確認
|
|
390
|
-
const
|
|
390
|
+
const { getConfigPath } = await import('./utils/config-loader.js');
|
|
391
|
+
const configPath = getConfigPath();
|
|
391
392
|
let existingConfig: any = null;
|
|
392
393
|
|
|
393
394
|
if (existsSync(configPath)) {
|
|
@@ -10,7 +10,7 @@ import { config } from 'dotenv';
|
|
|
10
10
|
import { loadProjectMeta, type ProjectMetadata } from './utils/project-meta.js';
|
|
11
11
|
import { convertMarkdownToConfluence, createConfluencePage } from './markdown-to-confluence.js';
|
|
12
12
|
import { validateFeatureNameOrThrow } from './utils/feature-name-validator.js';
|
|
13
|
-
import { getConfig } from './utils/config-loader.js';
|
|
13
|
+
import { getConfig, getConfigPath } from './utils/config-loader.js';
|
|
14
14
|
import { createPagesByGranularity } from './utils/confluence-hierarchy.js';
|
|
15
15
|
import { validateForConfluenceSync } from './utils/config-validator.js';
|
|
16
16
|
|
|
@@ -361,7 +361,7 @@ async function syncToConfluence(
|
|
|
361
361
|
if (validation.errors.length > 0) {
|
|
362
362
|
console.error('❌ Configuration errors:');
|
|
363
363
|
validation.errors.forEach(error => console.error(` ${error}`));
|
|
364
|
-
const configPath =
|
|
364
|
+
const configPath = getConfigPath();
|
|
365
365
|
console.error(`\n設定ファイル: ${configPath}`);
|
|
366
366
|
throw new Error('Confluence同期に必要な設定値が不足しています。上記のエラーを確認して設定を修正してください。');
|
|
367
367
|
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* 使い方:
|
|
6
6
|
* npm run create-project -- \
|
|
7
|
-
* --name "
|
|
8
|
-
* --project-name "A
|
|
7
|
+
* --name "20240115-payment-api" \
|
|
8
|
+
* --project-name "プロジェクトA" \
|
|
9
9
|
* --jira-key "PRJA"
|
|
10
10
|
*/
|
|
11
11
|
|
|
@@ -22,8 +22,8 @@ const __dirname = dirname(__filename);
|
|
|
22
22
|
loadDotenv();
|
|
23
23
|
|
|
24
24
|
interface ProjectConfig {
|
|
25
|
-
name: string; // リポジトリ名:
|
|
26
|
-
projectName: string; // 表示名: A
|
|
25
|
+
name: string; // リポジトリ名: 20240115-payment-api
|
|
26
|
+
projectName: string; // 表示名: プロジェクトA
|
|
27
27
|
jiraKey: string; // JIRAキー: PRJA
|
|
28
28
|
org?: string; // GitHub組織名(デフォルト: .envから)
|
|
29
29
|
labels?: string[]; // Confluenceラベル(デフォルト: 自動生成)
|