122 lines
4.5 KiB
Markdown
122 lines
4.5 KiB
Markdown
# load-spec-tasks
|
||
|
||
spec workflowのtasks.mdから次にやるべきタスクを読み込み、Claude CodeのToDoリストに自己再生産的なタスクサイクルを設定します。
|
||
|
||
## 概要
|
||
|
||
このコマンドは最初に1回実行するだけで、以降は自動的にタスクサイクルが回り続けます。
|
||
tasks.mdをシングルソースオブトゥルース(信頼できる唯一の情報源)として扱います。
|
||
|
||
## 実行手順
|
||
|
||
### Step 1: 現在のspec-idを判定
|
||
|
||
`detect-spec-workflow`サブエージェントを呼び出して、現在の作業コンテキストから該当するspec-idを判定してください:
|
||
|
||
```
|
||
Taskツールを使用:
|
||
- subagent_type: syou6162-plugin:detect-spec-workflow
|
||
- prompt: "現在のコンテキストから該当するspec workflowのspec-idを判定してください"
|
||
```
|
||
|
||
**エラーハンドリング**:
|
||
- spec-idが見つからない場合: 「該当するspec workflowが見つかりませんでした。spec workflowのセットアップを確認してください。」と表示して終了
|
||
|
||
### Step 2: tasks.mdの読み取りと次のタスク取得
|
||
|
||
判定されたspec-idを使って、tasks.mdを読み取ります:
|
||
|
||
```bash
|
||
# Readツールを使用
|
||
.spec-workflow/specs/{spec-id}/tasks.md
|
||
```
|
||
|
||
**tasks.mdのパース処理**:
|
||
|
||
1. マークダウンチェックボックス形式を検索: `- [ ]`, `- [-]`, `- [x]`
|
||
2. `- [x]` (完了済み) をスキップ
|
||
3. 最初に見つかった `- [ ]` (pending) または `- [-]` (in-progress) を次のタスクとして取得
|
||
4. タスク名を抽出(チェックボックス以降のテキスト)
|
||
|
||
**パース例**:
|
||
```markdown
|
||
## Tasks
|
||
|
||
- [x] ユーザー認証機能を実装 ← スキップ
|
||
- [x] パスワードリセット機能 ← スキップ
|
||
- [ ] メール通知機能を実装 ← これが次のタスク!
|
||
- [ ] ログ機能の追加
|
||
```
|
||
→ 次のタスク: 「メール通知機能を実装」
|
||
|
||
**エラーハンドリング**:
|
||
- tasks.mdが存在しない: 「tasks.mdが見つかりません。spec workflowのPhase 3 (Tasks)を完了させてください。」
|
||
- すべてのタスクが完了済み: 「🎉 すべてのタスクが完了しました!spec workflowの実装フェーズは完了です。」と表示して終了
|
||
|
||
### Step 3: ToDoリストに5ステップのタスクサイクルを追加
|
||
|
||
`TodoWrite`ツールを使って、以下の5ステップをToDoリストに追加します:
|
||
|
||
```javascript
|
||
TodoWrite({
|
||
todos: [
|
||
{
|
||
content: "tasks.mdで [タスク名] を [-] に変更(in-progressマーク)",
|
||
activeForm: "tasks.mdで [タスク名] を [-] に変更中",
|
||
status: "pending"
|
||
},
|
||
{
|
||
content: "タスク名", // Step 2で取得した実際のタスク名
|
||
activeForm: "タスク名を実行中",
|
||
status: "pending"
|
||
},
|
||
{
|
||
content: "tasks.mdで [タスク名] を [x] に変更(完了マーク)",
|
||
activeForm: "tasks.mdで [タスク名] を [x] に変更中",
|
||
status: "pending"
|
||
},
|
||
{
|
||
content: "tasks.mdから次のタスクを確認",
|
||
activeForm: "tasks.mdから次のタスクを確認中",
|
||
status: "pending"
|
||
},
|
||
{
|
||
content: "TodoWriteで次のタスクサイクル(5件)をToDoリストに追加",
|
||
activeForm: "TodoWriteで次のタスクサイクルをToDoリストに追加中",
|
||
status: "pending"
|
||
}
|
||
]
|
||
})
|
||
```
|
||
|
||
**重要な実装ガイダンス**:
|
||
|
||
#### タスク1: tasks.mdでタスクを[-]に変更
|
||
このタスクを実行する際は、`Edit`ツールを使って以下のように編集します:
|
||
```
|
||
old_string: "- [ ] タスク名"
|
||
new_string: "- [-] タスク名"
|
||
```
|
||
|
||
#### タスク2: 実際の実装タスク
|
||
tasks.mdの`_Prompt`フィールドに記載されている指示に従って実装します。
|
||
|
||
#### タスク3: tasks.mdでタスクを[x]に変更
|
||
`Edit`ツールを使って以下のように編集します:
|
||
```
|
||
old_string: "- [-] タスク名"
|
||
new_string: "- [x] タスク名"
|
||
```
|
||
|
||
#### タスク4: 次のタスクを確認
|
||
`Read`ツールでtasks.mdを読み、次の`[ ]`または`[-]`タスクを確認します。
|
||
|
||
#### タスク5: 次のサイクルを追加
|
||
このタスクを実行すると、新しい5ステップのサイクルが自動的に追加されます。
|
||
|
||
`TodoWrite`で以下を実行:
|
||
1. 完了済み(completed)タスクをToDoリストから削除
|
||
2. tasks.mdから次のタスクを取得(Step 2と同じ処理)
|
||
3. 新しい5ステップのタスクサイクルを生成
|
||
4. ToDoリストに追加
|