@einja/dev-cli 0.1.10 → 0.1.11
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/dist/lib/file-system.js +1 -1
- package/dist/lib/file-system.js.map +1 -1
- package/package.json +1 -2
- package/scaffolds/cli/preset.yaml +110 -0
- package/scaffolds/example/README.md +35 -0
- package/scaffolds/example/specs/issues/issue999-example-task/design.md +879 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/README.md +150 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-1.md +268 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-2.md +179 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-3.md +392 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/2-1.md +459 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/scenarios.md +125 -0
- package/scaffolds/example/specs/issues/issue999-example-task/requirements.md +494 -0
- package/scaffolds/example/specs/issues/issue999-example-task/tasks.md +212 -0
- package/scaffolds/instructions/deployment-setup.md +458 -0
- package/scaffolds/instructions/environment-setup.md +509 -0
- package/scaffolds/instructions/local-server-environment-and-worktree.md +539 -0
- package/scaffolds/instructions/task-execute.md +649 -0
- package/scaffolds/instructions/task-vibe-kanban-loop.md +495 -0
- package/scaffolds/memory/archive/.gitkeep +0 -0
- package/scaffolds/memory/decisions.md +35 -0
- package/scaffolds/memory/patterns.md +37 -0
- package/scaffolds/CLAUDE.md.template +0 -386
- /package/{templates → scaffolds/templates}/README.md +0 -0
- /package/{templates → scaffolds/templates}/design-simple.md.template +0 -0
- /package/{templates → scaffolds/templates}/design.md.template +0 -0
- /package/{templates → scaffolds/templates}/qa-test.md.template +0 -0
- /package/{templates → scaffolds/templates}/requirements.md.template +0 -0
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
2
|
+
# `pnpm task:loop` コマンド
|
|
3
|
+
|
|
4
|
+
## 概要
|
|
5
|
+
|
|
6
|
+
GitHub Issue からタスクを自動選定し、Vibe-Kanban に登録して連続実行する npm スクリプト。
|
|
7
|
+
|
|
8
|
+
**⚠️ 重要**: 着手可能なタスクを全て並列で Doing に移し、Done 状態の変化を監視して次のタスクを開始するループ処理。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 使用方法
|
|
13
|
+
|
|
14
|
+
### 事前準備(初回のみ)
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 1. 仕様書を作成(requirements.md, design.md, GitHub Issue へのタスク記述)
|
|
18
|
+
/spec-create <タスク内容の説明>
|
|
19
|
+
|
|
20
|
+
# 一旦ここまで終わったらDiscordでスレッドを作りチームにレビュー依頼
|
|
21
|
+
|
|
22
|
+
# 2. Vibe-Kanban を起動(別ターミナルで実行)
|
|
23
|
+
npx vibe-kanban
|
|
24
|
+
# → ブラウザが自動で開き、Kanbanボードが表示される
|
|
25
|
+
# → このボードで PR作成・レビュー・マージ操作を行う
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### コマンド実行
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 基本
|
|
32
|
+
pnpm task:loop <issue-number>
|
|
33
|
+
|
|
34
|
+
# 実行後、specで作成されたタスクが勝手に着手可能なものから実行開始されていくので、
|
|
35
|
+
# vibe-kanbanの画面を眺めて終わったものから自己レビュー、OKならPR作成ボタンでPR作成、チームのレビュー後、
|
|
36
|
+
# PRがマージされると自動で次のタスクが始まる(ちょっとラグあり)
|
|
37
|
+
|
|
38
|
+
# オプション指定
|
|
39
|
+
pnpm task:loop <issue-number> --max-group <number> --branch <branch>
|
|
40
|
+
|
|
41
|
+
# 例
|
|
42
|
+
pnpm task:loop 123 # Issue #123 の全タスクを実行
|
|
43
|
+
pnpm task:loop 123 --max-group 4 # Phase 4 まで実行
|
|
44
|
+
pnpm task:loop 123 --max-group 4.2 # タスクグループ 4.2 まで実行
|
|
45
|
+
pnpm task:loop 123 --branch develop # develop ブランチベースで実行
|
|
46
|
+
|
|
47
|
+
# ヘルプ
|
|
48
|
+
pnpm task:loop --help
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Vibe-Kanban 画面での操作
|
|
52
|
+
|
|
53
|
+
`npx vibe-kanban` で開いたボードで以下の操作を行います:
|
|
54
|
+
|
|
55
|
+
| 操作 | タイミング | 説明 |
|
|
56
|
+
|------|-----------|------|
|
|
57
|
+
| **タスク進捗確認** | 随時 | Todo → In Progress → In Review → Done の流れを確認 |
|
|
58
|
+
| **Create PR** | In Review 時 | ボタンをクリックして PR を自動作成 |
|
|
59
|
+
| **レビュー** | PR 作成後 | GitHub で PR の内容を確認 |
|
|
60
|
+
| **マージ** | レビュー完了後 | GitHub で PR をマージ(⚠️ 必ず GitHub 側で操作) |
|
|
61
|
+
|
|
62
|
+
**⚠️ 重要**: PR のマージは必ず GitHub 側で行ってください。マージを検知して Vibe-Kanban のタスクが自動で Done になります。
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## ブランチ階層
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
main (デフォルト)
|
|
70
|
+
└── issue/17 ← main から作成
|
|
71
|
+
├── issue/17-phase1 ← issue/17 から作成
|
|
72
|
+
├── issue/17-phase2 ← issue/17 から作成
|
|
73
|
+
└── issue/17-phase3 ← issue/17 から作成
|
|
74
|
+
└── (作業ブランチ) ← Vibe-Kanban が自動作成
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- **main**: プロダクションブランチ
|
|
78
|
+
- **issue/N**: Issue 単位のブランチ(`--branch` で変更可能)
|
|
79
|
+
- **issue/N-phaseM**: Phase 単位のブランチ、タスクグループの作業ベース
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 開発手順(ステップバイステップ)
|
|
84
|
+
|
|
85
|
+
### 事前準備チェックリスト
|
|
86
|
+
|
|
87
|
+
- [ ] `npx @einja/dev-cli init` 実行済み(`pnpm task:loop` コマンドが使用可能)
|
|
88
|
+
- [ ] Docker が起動している
|
|
89
|
+
- [ ] `pnpm install` 済み
|
|
90
|
+
- [ ] Vibe-Kanban にプロジェクトが登録されている(後述)
|
|
91
|
+
- [ ] GitHub Issue にタスク一覧が記載されている
|
|
92
|
+
|
|
93
|
+
### Step 1: Vibe-Kanban を起動
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx vibe-kanban
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
ブラウザが自動で開きます。このボードでタスクの進捗を確認します。
|
|
100
|
+
|
|
101
|
+
### Step 2: プロジェクト登録(初回のみ)
|
|
102
|
+
|
|
103
|
+
Vibe-Kanban にこのプロジェクトが登録されていない場合:
|
|
104
|
+
|
|
105
|
+
1. ブラウザで Projects ページを開く
|
|
106
|
+
2. 「Create project」ボタンをクリック
|
|
107
|
+
3. Git Repository Path にプロジェクトのパスを入力
|
|
108
|
+
```
|
|
109
|
+
/Users/yourname/path/to/your-project
|
|
110
|
+
```
|
|
111
|
+
4. 保存
|
|
112
|
+
|
|
113
|
+
### Step 3: タスクループを開始
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
pnpm task:loop <issue-number>
|
|
117
|
+
|
|
118
|
+
# 例: Issue #17 の全タスクを実行
|
|
119
|
+
pnpm task:loop 17
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
コマンド実行後:
|
|
123
|
+
- 着手可能なタスクが自動で Vibe-Kanban に登録される
|
|
124
|
+
- 各タスクが並列で実行開始される
|
|
125
|
+
- 15秒ごとに進捗をポーリング
|
|
126
|
+
|
|
127
|
+
### Step 4: タスク進捗の確認
|
|
128
|
+
|
|
129
|
+
`npx vibe-kanban` で開いたボードでタスクの状態を確認:
|
|
130
|
+
|
|
131
|
+
| 状態 | 意味 |
|
|
132
|
+
|------|------|
|
|
133
|
+
| **Todo** | 未着手 |
|
|
134
|
+
| **In Progress** | 実行中(Claude Code が作業中) |
|
|
135
|
+
| **In Review** | レビュー待ち(PR作成が必要) |
|
|
136
|
+
| **Done** | 完了 |
|
|
137
|
+
|
|
138
|
+
### Step 5: In Review 状態の対応
|
|
139
|
+
|
|
140
|
+
タスクが **In Review** になったら:
|
|
141
|
+
|
|
142
|
+
1. **Vibe-Kanban で「Create PR」ボタンをクリック**
|
|
143
|
+
- PR が自動作成される
|
|
144
|
+
|
|
145
|
+
2. **GitHub で PR をレビュー**
|
|
146
|
+
- コードを確認
|
|
147
|
+
- 必要に応じて修正を依頼
|
|
148
|
+
|
|
149
|
+
3. **修正が必要な場合**
|
|
150
|
+
- PR にコメントを残す
|
|
151
|
+
- または Vibe-Kanban で「Request Changes」
|
|
152
|
+
|
|
153
|
+
4. **レビュー完了後、GitHub で PR をマージ**
|
|
154
|
+
- ⚠️ **必ず GitHub 側でマージすること**(Vibe-Kanban からはマージしない)
|
|
155
|
+
|
|
156
|
+
### Step 6: マージ後の自動処理
|
|
157
|
+
|
|
158
|
+
PR をマージすると:
|
|
159
|
+
|
|
160
|
+
1. Vibe-Kanban がマージを検知
|
|
161
|
+
2. タスクが自動で **Done** に変更
|
|
162
|
+
3. `pnpm task:loop` がこれを検知
|
|
163
|
+
4. GitHub Issue のチェックボックスが自動で `[x]` に更新
|
|
164
|
+
5. **Phase 内の全タスクが完了した場合、Phase ブランチを Issue ブランチに自動マージ**
|
|
165
|
+
6. 新たに着手可能になったタスクが自動で開始
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
169
|
+
│ PR マージ │
|
|
170
|
+
│ ↓ │
|
|
171
|
+
│ Vibe-Kanban: タスク → Done(自動) │
|
|
172
|
+
│ ↓ │
|
|
173
|
+
│ task:loop: Done 検知 │
|
|
174
|
+
│ ↓ │
|
|
175
|
+
│ GitHub Issue: チェックボックス更新(自動) │
|
|
176
|
+
│ ↓ │
|
|
177
|
+
│ Phase 全タスク完了? │
|
|
178
|
+
│ ├─ Yes → Phase ブランチを Issue ブランチにマージ │
|
|
179
|
+
│ └─ No → スキップ │
|
|
180
|
+
│ ↓ │
|
|
181
|
+
│ 次のタスクが自動開始 │
|
|
182
|
+
└─────────────────────────────────────────────────────────────┘
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Step 7: 全タスク完了
|
|
186
|
+
|
|
187
|
+
すべてのタスクが Done になると:
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
🎉 すべてのタスクが完了しました!
|
|
191
|
+
✅ タスク自動実行ループ終了
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## トラブルシューティング
|
|
197
|
+
|
|
198
|
+
### プロジェクトが見つからないエラー
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
❌ プロジェクトが Vibe-Kanban に登録されていません
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**対処法**: Step 2 の手順でプロジェクトを登録してください。
|
|
205
|
+
|
|
206
|
+
### タスクが In Review のまま進まない
|
|
207
|
+
|
|
208
|
+
**原因**: PR がマージされていない
|
|
209
|
+
|
|
210
|
+
**対処法**:
|
|
211
|
+
1. Vibe-Kanban で「Create PR」をクリック
|
|
212
|
+
2. GitHub で PR をレビュー・マージ
|
|
213
|
+
|
|
214
|
+
### タスクが Done にならない
|
|
215
|
+
|
|
216
|
+
**原因**: GitHub 側でマージしていない(Vibe-Kanban 上で手動で Done にした)
|
|
217
|
+
|
|
218
|
+
**対処法**: 必ず GitHub の PR をマージしてください。マージを検知して自動で Done になります。
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 処理フロー
|
|
223
|
+
|
|
224
|
+
### アクター凡例
|
|
225
|
+
|
|
226
|
+
| アクター | 説明 | 操作種別 |
|
|
227
|
+
|---------|------|---------|
|
|
228
|
+
| 👤 **ユーザー** | 開発者(あなた) | 手動 |
|
|
229
|
+
| 🔄 **task:loop** | `pnpm task:loop` コマンド | 自動 |
|
|
230
|
+
| 🤖 **Claude Code** | Vibe-Kanban が起動する AI エージェント | 自動 |
|
|
231
|
+
| 📋 **Vibe-Kanban** | タスク管理ボード | 自動 |
|
|
232
|
+
| 🐙 **GitHub** | Issue / PR | - |
|
|
233
|
+
|
|
234
|
+
### フロー図
|
|
235
|
+
|
|
236
|
+
```mermaid
|
|
237
|
+
graph TD
|
|
238
|
+
subgraph User ["👤 ユーザー(手動)"]
|
|
239
|
+
U1([pnpm task:loop 実行])
|
|
240
|
+
U2[Vibe-Kanban で<br/>PR作成ボタンクリック]
|
|
241
|
+
U3[GitHub で<br/>PRレビュー・マージ]
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
subgraph TaskLoop ["🔄 task:loop(自動)"]
|
|
245
|
+
T1[Issue取得・解析]
|
|
246
|
+
T2[ブランチ作成]
|
|
247
|
+
T3[Vibe-Kanban 接続]
|
|
248
|
+
T4[タスク作成・開始指示]
|
|
249
|
+
T5[15秒ポーリング]
|
|
250
|
+
T6{Done検知?}
|
|
251
|
+
T7[GitHub Issue<br/>チェックボックス更新]
|
|
252
|
+
T8[次のタスク開始指示]
|
|
253
|
+
T9{全完了?}
|
|
254
|
+
T10([ループ終了])
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
subgraph Claude ["🤖 Claude Code(自動)"]
|
|
258
|
+
C1[コード実装]
|
|
259
|
+
C2[テスト実行]
|
|
260
|
+
C3[コミット・プッシュ]
|
|
261
|
+
C4[作業完了報告]
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
subgraph VibeKanban ["📋 Vibe-Kanban(自動)"]
|
|
265
|
+
V1[タスク状態管理]
|
|
266
|
+
V2[Claude Code 起動]
|
|
267
|
+
V3[PRマージ検知]
|
|
268
|
+
V4[タスク → Done]
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
subgraph GitHub ["🐙 GitHub"]
|
|
272
|
+
G1[Issue]
|
|
273
|
+
G2[PR]
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
U1 --> T1
|
|
277
|
+
T1 --> T2
|
|
278
|
+
T2 --> T3
|
|
279
|
+
T3 --> T4
|
|
280
|
+
T4 --> V1
|
|
281
|
+
V1 --> V2
|
|
282
|
+
V2 --> C1
|
|
283
|
+
C1 --> C2
|
|
284
|
+
C2 --> C3
|
|
285
|
+
C3 --> C4
|
|
286
|
+
C4 --> V1
|
|
287
|
+
|
|
288
|
+
T4 --> T5
|
|
289
|
+
T5 --> T6
|
|
290
|
+
T6 -->|No| T9
|
|
291
|
+
T6 -->|Yes| T7
|
|
292
|
+
T7 --> G1
|
|
293
|
+
T7 --> T8
|
|
294
|
+
T8 --> T9
|
|
295
|
+
T9 -->|No| T5
|
|
296
|
+
T9 -->|Yes| T10
|
|
297
|
+
|
|
298
|
+
V1 -->|In Review| U2
|
|
299
|
+
U2 --> G2
|
|
300
|
+
G2 --> U3
|
|
301
|
+
U3 --> V3
|
|
302
|
+
V3 --> V4
|
|
303
|
+
V4 --> T6
|
|
304
|
+
|
|
305
|
+
style U1 fill:#e3f2fd
|
|
306
|
+
style U2 fill:#e3f2fd
|
|
307
|
+
style U3 fill:#e3f2fd
|
|
308
|
+
style T10 fill:#4caf50,color:#fff
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### シーケンス図
|
|
312
|
+
|
|
313
|
+
```mermaid
|
|
314
|
+
sequenceDiagram
|
|
315
|
+
box rgb(227, 242, 253) 手動操作
|
|
316
|
+
participant User as 👤 ユーザー
|
|
317
|
+
end
|
|
318
|
+
box rgb(232, 245, 233) 自動処理
|
|
319
|
+
participant Script as 🔄 task:loop
|
|
320
|
+
participant Vibe as 📋 Vibe-Kanban
|
|
321
|
+
participant Claude as 🤖 Claude Code
|
|
322
|
+
end
|
|
323
|
+
box rgb(255, 243, 224) 外部サービス
|
|
324
|
+
participant GitHub as 🐙 GitHub
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
Note over User: 【開始】
|
|
328
|
+
User->>Script: pnpm task:loop 123
|
|
329
|
+
|
|
330
|
+
Note over Script: 【初期化フェーズ】
|
|
331
|
+
Script->>GitHub: Issue 取得・解析
|
|
332
|
+
Script->>Script: ブランチ作成(issue/123, issue/123-phase1...)
|
|
333
|
+
Script->>Vibe: MCP 接続
|
|
334
|
+
|
|
335
|
+
Note over Script: 【タスク開始】
|
|
336
|
+
Script->>Script: 着手可能タスク選定
|
|
337
|
+
Script->>Vibe: タスク作成
|
|
338
|
+
Script->>Vibe: start_task_attempt(実行開始指示)
|
|
339
|
+
Vibe->>Claude: Claude Code 起動
|
|
340
|
+
|
|
341
|
+
Note over Claude: 【タスク実行】
|
|
342
|
+
Claude->>Claude: コード実装
|
|
343
|
+
Claude->>Claude: テスト実行
|
|
344
|
+
Claude->>GitHub: コミット・プッシュ
|
|
345
|
+
Claude->>Vibe: 作業完了報告
|
|
346
|
+
Vibe->>Vibe: ステータス → In Review
|
|
347
|
+
|
|
348
|
+
Note over User: 【レビューフェーズ】
|
|
349
|
+
User->>Vibe: 「Create PR」ボタンクリック
|
|
350
|
+
Vibe->>GitHub: PR 作成
|
|
351
|
+
User->>GitHub: PR レビュー
|
|
352
|
+
User->>GitHub: PR マージ
|
|
353
|
+
|
|
354
|
+
Note over Vibe: 【自動検知】
|
|
355
|
+
Vibe->>Vibe: PR マージ検知
|
|
356
|
+
Vibe->>Vibe: ステータス → Done
|
|
357
|
+
|
|
358
|
+
Note over Script: 【ポーリング検知】
|
|
359
|
+
loop 15秒ごと
|
|
360
|
+
Script->>Vibe: タスク状態取得
|
|
361
|
+
alt Done 増加検知
|
|
362
|
+
Script->>GitHub: Issue チェックボックス更新
|
|
363
|
+
Script->>Script: 新たに着手可能なタスク選定
|
|
364
|
+
Script->>Vibe: 次のタスク作成・開始
|
|
365
|
+
Vibe->>Claude: Claude Code 起動(次タスク)
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
Note over Script: 【完了】
|
|
370
|
+
Script->>Vibe: MCP 切断
|
|
371
|
+
Script->>User: 🎉 全タスク完了
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 操作主体の一覧
|
|
375
|
+
|
|
376
|
+
| フェーズ | 操作 | 主体 |
|
|
377
|
+
|---------|------|------|
|
|
378
|
+
| 開始 | `pnpm task:loop` 実行 | 👤 ユーザー |
|
|
379
|
+
| 初期化 | Issue 取得、ブランチ作成 | 🔄 task:loop |
|
|
380
|
+
| 初期化 | Vibe-Kanban 接続 | 🔄 task:loop |
|
|
381
|
+
| タスク開始 | タスク作成・開始指示 | 🔄 task:loop |
|
|
382
|
+
| タスク開始 | Claude Code 起動 | 📋 Vibe-Kanban |
|
|
383
|
+
| 実装 | コード実装、テスト、コミット | 🤖 Claude Code |
|
|
384
|
+
| 実装 | 作業完了報告 | 🤖 Claude Code |
|
|
385
|
+
| レビュー | 「Create PR」クリック | 👤 ユーザー |
|
|
386
|
+
| レビュー | PR 作成 | 📋 Vibe-Kanban |
|
|
387
|
+
| レビュー | PR レビュー・マージ | 👤 ユーザー |
|
|
388
|
+
| 検知 | PR マージ検知 → Done | 📋 Vibe-Kanban |
|
|
389
|
+
| 検知 | Done 検知 | 🔄 task:loop |
|
|
390
|
+
| 更新 | Issue チェックボックス更新 | 🔄 task:loop |
|
|
391
|
+
| 次タスク | 次のタスク開始指示 | 🔄 task:loop |
|
|
392
|
+
| 終了 | MCP 切断、完了通知 | 🔄 task:loop |
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 各フェーズの概要
|
|
397
|
+
|
|
398
|
+
### 1. 初期化フェーズ(1回のみ)
|
|
399
|
+
|
|
400
|
+
- 引数解析(Issue番号、最大タスク番号、ベースブランチ)
|
|
401
|
+
- GitHub Issue 取得・Markdown パース
|
|
402
|
+
- Issue ブランチ作成: `issue/{issue_number}`
|
|
403
|
+
- Phase ブランチ作成: `issue/{issue_number}-phase{N}`
|
|
404
|
+
- Vibe-Kanban MCP 接続(以降使い回し)
|
|
405
|
+
- プロジェクト ID 取得
|
|
406
|
+
|
|
407
|
+
### 2. 初期タスク開始
|
|
408
|
+
|
|
409
|
+
- 依存関係を考慮して着手可能なタスクグループを全て選定
|
|
410
|
+
- Vibe-Kanban にタスク作成
|
|
411
|
+
- `start_task_attempt` で実行開始
|
|
412
|
+
|
|
413
|
+
### 3. メインループ(15秒ポーリング)
|
|
414
|
+
|
|
415
|
+
- Vibe-Kanban のタスク状態を取得
|
|
416
|
+
- Done 増加を検知した場合:
|
|
417
|
+
- GitHub Issue のチェックボックスを `- [x]` に更新
|
|
418
|
+
- **Phase 内の全タスクが完了していれば、Phase ブランチを Issue ブランチに自動マージ**
|
|
419
|
+
- 新たに着手可能になったタスクを開始
|
|
420
|
+
- 全タスク完了で終了
|
|
421
|
+
|
|
422
|
+
### 4. 終了処理
|
|
423
|
+
|
|
424
|
+
- Vibe-Kanban MCP 切断
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## Vibe-Kanban セットアップ
|
|
429
|
+
|
|
430
|
+
### 前提条件
|
|
431
|
+
|
|
432
|
+
✅ このプロジェクトでは既に設定済み(`.mcp.json`)
|
|
433
|
+
|
|
434
|
+
### セットアップ手順
|
|
435
|
+
|
|
436
|
+
1. **アプリケーション起動**
|
|
437
|
+
```bash
|
|
438
|
+
npx vibe-kanban
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
2. **プロジェクト確認**
|
|
442
|
+
- ブラウザでKanbanボード表示
|
|
443
|
+
- プロジェクトが登録されていることを確認
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
## `/task-exec` との使い分け
|
|
448
|
+
|
|
449
|
+
| コマンド | 用途 | 品質保証 | 推奨シーン |
|
|
450
|
+
|---------|------|---------|----------|
|
|
451
|
+
| **`/task-exec`** | 重要タスクの確実な完了 | ✅ 合格まで自動ループ | 複雑な実装、品質重視 |
|
|
452
|
+
| **`pnpm task:loop`** | 大量タスクの自動消化 | 並列実行・監視 | 定型作業、並行開発 |
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## 実装詳細
|
|
457
|
+
|
|
458
|
+
スクリプトは `packages/cli/src/commands/task-loop/` に配置(CLIパッケージに統合):
|
|
459
|
+
|
|
460
|
+
```
|
|
461
|
+
packages/cli/src/commands/task-loop/
|
|
462
|
+
├── index.ts # エントリポイント(taskLoopCommand関数)
|
|
463
|
+
└── lib/
|
|
464
|
+
├── types.ts # 型定義
|
|
465
|
+
├── task-number-utils.ts # タスク番号比較
|
|
466
|
+
├── github-client.ts # GitHub Issue操作
|
|
467
|
+
├── gh-setup.ts # GitHub CLI セットアップ
|
|
468
|
+
├── branch-manager.ts # Git ブランチ操作
|
|
469
|
+
├── conflict-handler.ts # コンフリクト処理
|
|
470
|
+
├── vibe-kanban-client.ts # MCP経由Vibe-Kanban操作
|
|
471
|
+
├── vibe-kanban-rest-client.ts # REST API クライアント
|
|
472
|
+
├── issue-parser.ts # Issue Markdownパーサー
|
|
473
|
+
├── dependency-resolver.ts # 依存関係解析
|
|
474
|
+
├── project-selector.ts # プロジェクト選択
|
|
475
|
+
└── task-state-manager.ts # タスク状態管理
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## 関連ドキュメント
|
|
481
|
+
|
|
482
|
+
- [タスク実行ワークフロー](./task-execute.md)
|
|
483
|
+
- [タスク管理ガイドライン](../steering/task-management.md)
|
|
484
|
+
- [仕様書作成ワークフロー](./spec-create.md)
|
|
485
|
+
- [ブランチ運用戦略](../steering/branch-strategy.md) - ブランチ命名規則、同期フロー、ワークフロー図
|
|
486
|
+
<!-- @einja:managed:end -->
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
<!-- @einja:seed:start id="task-vibe-kanban-loop-project" -->
|
|
491
|
+
## プロジェクト固有の設定
|
|
492
|
+
|
|
493
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
494
|
+
<!-- einja syncで上書きされません -->
|
|
495
|
+
<!-- @einja:seed:end -->
|
|
File without changes
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
2
|
+
# 意思決定記録(Decisions)
|
|
3
|
+
|
|
4
|
+
このファイルには、プロジェクトにおける重要な意思決定(Why)を記録します。
|
|
5
|
+
|
|
6
|
+
## 運用ルール
|
|
7
|
+
|
|
8
|
+
- **最大エントリ数**: 30件
|
|
9
|
+
- **上限到達時**: 古いエントリを `archive/decisions-{年}.md` に移動
|
|
10
|
+
- **エントリ形式**: 以下のテンプレートに従う
|
|
11
|
+
|
|
12
|
+
### エントリテンプレート
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## [YYYY-MM-DD] タイトル
|
|
16
|
+
- **結論**: 1-2文で結論
|
|
17
|
+
- **理由**: 簡潔な理由
|
|
18
|
+
- **見直し条件**: この決定を見直すべき条件
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 記録
|
|
24
|
+
|
|
25
|
+
<!-- ここに意思決定を追加 -->
|
|
26
|
+
<!-- @einja:managed:end -->
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<!-- @einja:seed:start id="decisions-project" -->
|
|
31
|
+
## プロジェクト固有の設定
|
|
32
|
+
|
|
33
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
34
|
+
<!-- einja syncで上書きされません -->
|
|
35
|
+
<!-- @einja:seed:end -->
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
2
|
+
# 再利用パターン(Patterns)
|
|
3
|
+
|
|
4
|
+
このファイルには、プロジェクトで発見・確立された再利用可能なパターン(How)を記録します。
|
|
5
|
+
|
|
6
|
+
## 運用ルール
|
|
7
|
+
|
|
8
|
+
- **最大エントリ数**: 30件
|
|
9
|
+
- **上限到達時**: 古いエントリを `archive/patterns-{年}.md` に移動
|
|
10
|
+
- **エントリ形式**: 以下のテンプレートに従う
|
|
11
|
+
|
|
12
|
+
### エントリテンプレート
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## [YYYY-MM-DD] パターン名
|
|
16
|
+
- **問題**: どのような問題を解決するか
|
|
17
|
+
- **解法**: どのように解決するか
|
|
18
|
+
- **適用条件**: このパターンを使うべき状況
|
|
19
|
+
- **非適用条件**: このパターンを使うべきでない状況
|
|
20
|
+
- **例**: 具体的なコード例やユースケース
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 記録
|
|
26
|
+
|
|
27
|
+
<!-- ここにパターンを追加 -->
|
|
28
|
+
<!-- @einja:managed:end -->
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
<!-- @einja:seed:start id="patterns-project" -->
|
|
33
|
+
## プロジェクト固有の設定
|
|
34
|
+
|
|
35
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
36
|
+
<!-- einja syncで上書きされません -->
|
|
37
|
+
<!-- @einja:seed:end -->
|