@k2works/claude-code-booster 1.9.2 → 1.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.
|
@@ -14,7 +14,7 @@ description: リリース計画を GitHub Project・Issue・Milestone に反映
|
|
|
14
14
|
- なし : 全体の同期を実行(Project 作成、Issue 作成、フィールド設定、Milestone 作成)
|
|
15
15
|
- `--project` : GitHub Project のみを作成
|
|
16
16
|
- `--issues` : Issue のみを作成(Project が存在する前提)
|
|
17
|
-
- `--fields` : 各 Issue に対して Project
|
|
17
|
+
- `--fields` : 各 Issue に対して Project フィールド値を個別に設定
|
|
18
18
|
- `--milestones` : Milestone のみを作成し Issue に割り当て
|
|
19
19
|
- `--sync` : release_plan.md と GitHub の差異を確認し、差異があれば同期を実行
|
|
20
20
|
- `--status` : 現在の GitHub Project 状態を表示
|
|
@@ -38,13 +38,32 @@ description: リリース計画を GitHub Project・Issue・Milestone に反映
|
|
|
38
38
|
|
|
39
39
|
release_plan.md に基づいて GitHub Project を作成し、カスタムフィールドを設定します。
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
**標準フィールド構成**:
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
| フィールド | タイプ | 説明 |
|
|
44
|
+
|-----------|--------|------|
|
|
45
|
+
| **Status** | Single Select | Todo / In Progress / Done(デフォルト) |
|
|
46
|
+
| **リリース** | Single Select | release_plan.md のリリースフェーズに対応 |
|
|
47
|
+
| **優先度** | Single Select | ストーリーの優先度 |
|
|
48
|
+
| **SP** | Number | ストーリーポイント(数値) |
|
|
49
|
+
| **イテレーション** | **Iteration** | スプリント期間(開始日・期間付き) |
|
|
50
|
+
|
|
51
|
+
プロジェクト固有のフィールド(カテゴリ、担当領域など)は release_plan.md の内容に応じて追加します。
|
|
52
|
+
|
|
53
|
+
**Single Select フィールドの作成**:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
gh project field-create <PROJECT_NUMBER> --owner <OWNER> \
|
|
57
|
+
--name "<フィールド名>" --data-type "SINGLE_SELECT" \
|
|
58
|
+
--single-select-options "<選択肢1>,<選択肢2>,<選択肢3>"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Number フィールドの作成**:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
gh project field-create <PROJECT_NUMBER> --owner <OWNER> \
|
|
65
|
+
--name "SP" --data-type "NUMBER"
|
|
66
|
+
```
|
|
48
67
|
|
|
49
68
|
### 4. Issue の作成
|
|
50
69
|
|
|
@@ -53,54 +72,54 @@ release_plan.md に基づいて GitHub Project を作成し、カスタムフィ
|
|
|
53
72
|
**Issue の構成**:
|
|
54
73
|
|
|
55
74
|
- **タイトル**: `[ストーリーID] ストーリー名`
|
|
56
|
-
- **本文**:
|
|
57
|
-
- **
|
|
75
|
+
- **本文**: ユーザーストーリー、サブタスク、受入条件、見積もり情報
|
|
76
|
+
- **Milestone**: リリースフェーズに対応する Milestone に割り当て
|
|
77
|
+
- **Project 紐付け**: `gh project item-add` で Project に追加
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Issue の作成(Milestone 付き)
|
|
81
|
+
gh issue create --repo <OWNER>/<REPO> \
|
|
82
|
+
--title "<ストーリーID>: <ストーリー名>" \
|
|
83
|
+
--milestone "<Milestone 名>" \
|
|
84
|
+
--body "..."
|
|
85
|
+
|
|
86
|
+
# Project への追加
|
|
87
|
+
gh project item-add <PROJECT_NUMBER> --owner <OWNER> \
|
|
88
|
+
--url "https://github.com/<OWNER>/<REPO>/issues/<NUMBER>"
|
|
89
|
+
```
|
|
58
90
|
|
|
59
91
|
### 5. フィールド値の設定
|
|
60
92
|
|
|
61
93
|
各 Issue に対して Project のカスタムフィールド値を個別に設定します。
|
|
62
94
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
1. **フィールド ID とオプション ID の取得**
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
gh project field-list <PROJECT_NUMBER> --owner <OWNER> --format json
|
|
69
|
-
```
|
|
95
|
+
#### 5.1 フィールド ID・オプション ID の取得
|
|
70
96
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
gh project item-list <PROJECT_NUMBER> --owner <OWNER> --format json --limit 50 \
|
|
75
|
-
| jq -r '.items[] | "\(.content.number):\(.id)"'
|
|
76
|
-
```
|
|
97
|
+
```bash
|
|
98
|
+
# フィールド一覧の取得
|
|
99
|
+
gh project field-list <PROJECT_NUMBER> --owner <OWNER> --format json
|
|
77
100
|
|
|
78
|
-
|
|
101
|
+
# Project Item ID の取得
|
|
102
|
+
gh project item-list <PROJECT_NUMBER> --owner <OWNER> --format json --limit 50 \
|
|
103
|
+
| jq -r '.items[] | "\(.content.number):\(.id)"'
|
|
104
|
+
```
|
|
79
105
|
|
|
80
|
-
|
|
81
|
-
# Single Select フィールド(リリース、イテレーション、優先度、カテゴリ、Status)
|
|
82
|
-
gh project item-edit --project-id <PROJECT_ID> --id <ITEM_ID> \
|
|
83
|
-
--field-id <FIELD_ID> --single-select-option-id <OPTION_ID>
|
|
106
|
+
#### 5.2 Single Select / Number フィールドの設定
|
|
84
107
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
108
|
+
```bash
|
|
109
|
+
# Single Select フィールドの設定
|
|
110
|
+
gh project item-edit --project-id <PROJECT_ID> --id <ITEM_ID> \
|
|
111
|
+
--field-id <FIELD_ID> --single-select-option-id <OPTION_ID>
|
|
89
112
|
|
|
90
|
-
|
|
113
|
+
# Number フィールドの設定
|
|
114
|
+
gh project item-edit --project-id <PROJECT_ID> --id <ITEM_ID> \
|
|
115
|
+
--field-id <FIELD_ID> --number <VALUE>
|
|
116
|
+
```
|
|
91
117
|
|
|
92
|
-
|
|
93
|
-
|-----------|--------|---------|
|
|
94
|
-
| **リリース** | Single Select | Release 1.0 MVP Alpha / 1.1 MVP Beta / 1.2 MVP / 2.0 完成版 |
|
|
95
|
-
| **イテレーション** | **Iteration** | IT-1 〜 IT-6(2 週間スプリント) |
|
|
96
|
-
| **優先度** | Single Select | 必須 / 中 / 低 |
|
|
97
|
-
| **SP** | Number | ストーリーポイント(2〜5) |
|
|
98
|
-
| **カテゴリ** | Single Select | 認証 / お知らせ / 社員名簿 / カレンダー / 規定集 / マニュアル / ツール / 問い合わせ / 申請 / 承認 / ユーザー管理 |
|
|
99
|
-
| **Status** | Single Select | Todo / In Progress / Done |
|
|
118
|
+
#### 5.3 Iteration フィールドの作成と設定
|
|
100
119
|
|
|
101
|
-
**Iteration
|
|
120
|
+
Iteration フィールドは **Single Select ではなく Iteration 型** で作成します。GraphQL API の `createProjectV2Field` に `iterationConfiguration` を含めることで、フィールド作成と同時にイテレーション期間を設定できます。
|
|
102
121
|
|
|
103
|
-
|
|
122
|
+
**Iteration フィールドの作成(iterationConfiguration 付き)**:
|
|
104
123
|
|
|
105
124
|
```bash
|
|
106
125
|
gh api graphql -f query='
|
|
@@ -109,26 +128,100 @@ mutation {
|
|
|
109
128
|
projectId: "<PROJECT_ID>"
|
|
110
129
|
dataType: ITERATION
|
|
111
130
|
name: "イテレーション"
|
|
131
|
+
iterationConfiguration: {
|
|
132
|
+
startDate: "<開始日 YYYY-MM-DD>"
|
|
133
|
+
duration: <デフォルト期間(日数)>
|
|
134
|
+
iterations: [
|
|
135
|
+
{ title: "<IT名>", startDate: "<開始日>", duration: <日数> },
|
|
136
|
+
...
|
|
137
|
+
]
|
|
138
|
+
}
|
|
112
139
|
}) {
|
|
113
140
|
projectV2Field {
|
|
114
141
|
... on ProjectV2IterationField {
|
|
115
142
|
id
|
|
116
143
|
name
|
|
117
|
-
|
|
144
|
+
configuration {
|
|
145
|
+
iterations { id title startDate duration }
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}'
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**GraphQL スキーマ**:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
CreateProjectV2FieldInput:
|
|
157
|
+
projectId: ID!
|
|
158
|
+
dataType: ProjectV2CustomFieldType! # ITERATION を指定
|
|
159
|
+
name: String!
|
|
160
|
+
iterationConfiguration: ProjectV2IterationFieldConfigurationInput
|
|
161
|
+
|
|
162
|
+
ProjectV2IterationFieldConfigurationInput:
|
|
163
|
+
startDate: Date! # フィールド全体の開始日
|
|
164
|
+
duration: Int! # デフォルト期間(日数)
|
|
165
|
+
iterations: [ProjectV2Iteration!]!
|
|
166
|
+
|
|
167
|
+
ProjectV2Iteration:
|
|
168
|
+
title: String! # イテレーション名(例: "IT1", "Sprint 1")
|
|
169
|
+
startDate: Date! # 開始日(YYYY-MM-DD)
|
|
170
|
+
duration: Int! # 期間(日数、例: 14)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**重要**: `iterationConfiguration` を含めることで Web UI での手動設定は不要です。
|
|
174
|
+
|
|
175
|
+
**Iteration フィールドの ID と各イテレーション ID の取得**:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
gh api graphql -f query='
|
|
179
|
+
query {
|
|
180
|
+
node(id: "<PROJECT_ID>") {
|
|
181
|
+
... on ProjectV2 {
|
|
182
|
+
field(name: "イテレーション") {
|
|
183
|
+
... on ProjectV2IterationField {
|
|
184
|
+
id
|
|
185
|
+
configuration {
|
|
186
|
+
iterations { id title startDate duration }
|
|
187
|
+
}
|
|
188
|
+
}
|
|
118
189
|
}
|
|
119
190
|
}
|
|
120
191
|
}
|
|
121
192
|
}'
|
|
122
193
|
```
|
|
123
194
|
|
|
124
|
-
|
|
195
|
+
**各 Issue への Iteration 値の設定**:
|
|
125
196
|
|
|
126
|
-
|
|
127
|
-
|
|
197
|
+
```bash
|
|
198
|
+
gh api graphql -f query='
|
|
199
|
+
mutation {
|
|
200
|
+
updateProjectV2ItemFieldValue(input: {
|
|
201
|
+
projectId: "<PROJECT_ID>"
|
|
202
|
+
itemId: "<ITEM_ID>"
|
|
203
|
+
fieldId: "<ITERATION_FIELD_ID>"
|
|
204
|
+
value: { iterationId: "<ITERATION_ID>" }
|
|
205
|
+
}) {
|
|
206
|
+
projectV2Item { id }
|
|
207
|
+
}
|
|
208
|
+
}'
|
|
209
|
+
```
|
|
128
210
|
|
|
129
211
|
### 6. Milestone の作成
|
|
130
212
|
|
|
131
|
-
|
|
213
|
+
リリースフェーズを GitHub Milestone として作成し、Issue に割り当てます。
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# Milestone の作成
|
|
217
|
+
gh api repos/<OWNER>/<REPO>/milestones --method POST \
|
|
218
|
+
-f title="<Milestone 名>" \
|
|
219
|
+
-f description="<説明>" \
|
|
220
|
+
-f due_on="<期限 YYYY-MM-DDT00:00:00Z>"
|
|
221
|
+
|
|
222
|
+
# Issue 作成時に --milestone で指定するか、既存 Issue に割り当て
|
|
223
|
+
gh issue edit <NUMBER> --repo <OWNER>/<REPO> --milestone "<Milestone 名>"
|
|
224
|
+
```
|
|
132
225
|
|
|
133
226
|
### 7. 差異確認と同期
|
|
134
227
|
|
|
@@ -140,6 +233,7 @@ release_plan.md と GitHub Issue/Project の整合性を確認し、差異があ
|
|
|
140
233
|
- ストーリーポイントの一致
|
|
141
234
|
- リリース/Milestone 割り当ての一致
|
|
142
235
|
- 優先度の一致
|
|
236
|
+
- イテレーション割り当ての一致
|
|
143
237
|
- Status の一致
|
|
144
238
|
|
|
145
239
|
**同期動作**:
|
|
@@ -147,34 +241,49 @@ release_plan.md と GitHub Issue/Project の整合性を確認し、差異があ
|
|
|
147
241
|
1. release_plan.md と GitHub Issue/Project の差異を検出
|
|
148
242
|
2. 差異レポートを表示(追加/変更/削除項目)
|
|
149
243
|
3. 差異がある場合は同期を実行:
|
|
244
|
+
|
|
150
245
|
- **新規ストーリー**: Issue を作成し Project に追加
|
|
151
246
|
- **変更されたストーリー**: Issue のフィールド値を更新
|
|
152
247
|
- **削除されたストーリー**: Issue をクローズ(削除はしない)
|
|
153
248
|
- **Status 変更**: release_plan.md の Status を GitHub に反映
|
|
154
249
|
|
|
155
|
-
### 8.
|
|
250
|
+
### 8. フィールド値の一括確認(GraphQL)
|
|
156
251
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
252
|
+
設定済みのフィールド値を一覧で確認します。
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
gh api graphql -f query='
|
|
256
|
+
query {
|
|
257
|
+
node(id: "<PROJECT_ID>") {
|
|
258
|
+
... on ProjectV2 {
|
|
259
|
+
items(first: 50) {
|
|
260
|
+
nodes {
|
|
261
|
+
content {
|
|
262
|
+
... on Issue { number title }
|
|
263
|
+
}
|
|
264
|
+
fieldValues(first: 10) {
|
|
265
|
+
nodes {
|
|
266
|
+
... on ProjectV2ItemFieldSingleSelectValue {
|
|
267
|
+
field { ... on ProjectV2SingleSelectField { name } }
|
|
268
|
+
name
|
|
269
|
+
}
|
|
270
|
+
... on ProjectV2ItemFieldNumberValue {
|
|
271
|
+
field { ... on ProjectV2Field { name } }
|
|
272
|
+
number
|
|
273
|
+
}
|
|
274
|
+
... on ProjectV2ItemFieldIterationValue {
|
|
275
|
+
field { ... on ProjectV2IterationField { name } }
|
|
276
|
+
title
|
|
277
|
+
startDate
|
|
278
|
+
duration
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}'
|
|
178
287
|
```
|
|
179
288
|
|
|
180
289
|
### 9. 同期フロー
|
|
@@ -223,6 +332,7 @@ graph TD
|
|
|
223
332
|
|
|
224
333
|
- 既存の Project/Issue がある場合は重複作成に注意
|
|
225
334
|
- フィールド値の更新は既存値を上書き
|
|
335
|
+
- Iteration フィールドの期間変更は GraphQL API または Web UI で実施
|
|
226
336
|
|
|
227
337
|
- **推奨事項**:
|
|
228
338
|
|
|
@@ -235,9 +345,11 @@ graph TD
|
|
|
235
345
|
2. **計画更新時**: `--sync` で差異確認と自動同期
|
|
236
346
|
3. **定期確認**: `--status` で進捗状況を定期的に確認
|
|
237
347
|
4. **一貫性維持**: release_plan.md を Single Source of Truth として管理し、`--sync` で GitHub に反映
|
|
348
|
+
5. **Iteration 型の活用**: イテレーションは Single Select ではなく Iteration 型フィールドを使用し、スプリント期間を明示する
|
|
238
349
|
|
|
239
350
|
### 関連スキル
|
|
240
351
|
|
|
241
352
|
- `planning-releases` : リリース計画とイテレーション計画の作成
|
|
242
353
|
- `tracking-progress` : 進捗状況の確認と更新
|
|
354
|
+
- `orchestrating-project` : 計画・進捗管理フェーズ全体のオーケストレーション
|
|
243
355
|
- `git-commit` : 変更のコミット
|