| name | task-executor |
| description | docs/tasks.mdに記載されたタスクを読み取り、サブエージェントを使用して実装を自動実行します。並列実装可能なタスクは並列で処理し、タスクごとにコミットを作成します。タスク完了後はtasks.mdを更新して完了をマークします。 |
Task Executor スキル
docs/tasks.mdに記載されたタスクを自動的に実行するスキルです。サブエージェントを活用して効率的に実装を進め、適切なコミット管理を行います。
概要
このスキルは以下の機能を提供します:
- docs/tasks.mdからタスクを読み取り、実行順序を決定
- サブエージェントを使用した自動実装
- 並列実行可能なタスクの並列処理
- タスクごとの自動コミット
- 重要な変更前の安全なコミット作成
- タスク完了時のtasks.md自動更新
このスキルを使用する場面
以下の状況でこのスキルを有効にしてください:
タスク実行時
- docs/tasks.mdに記載されたタスクを実行する場合
- 次のタスクを自動的に実行してほしい場合
- 複数のタスクを効率的に処理したい場合
- タスクの実装を自動化したい場合
プロジェクト管理時
- タスクの進捗を自動的に追跡したい場合
- タスク完了後にtasks.mdを更新したい場合
- 実装とドキュメントの同期を保ちたい場合
基本的な使い方
タスクの実行
「次のタスクを実行してください」「tasks.mdのタスクを進めてください」などと依頼されたら:
tasks.mdの読み取り
- docs/tasks.mdの内容を確認
- TODO状態のタスクを特定
- 依存関係を確認
実行計画の作成
- 実行可能なタスクを特定
- 並列実行可能なタスクをグループ化
- 実行順序を決定
タスクの実行
- サブエージェントを使用して実装
- 並列実行可能な場合は複数のサブエージェントを同時起動
- タスクごとにコミットを作成
tasks.mdの更新
- 完了したタスクを1行に要約
- ステータスをDONEに変更
- 変更をコミット
タスク実行の原則
1. サブエージェントの活用
すべての実装タスクはサブエージェント(Task tool)を使用して実行します:
使用方法:
サブエージェントに以下のタスクを実行させます:
- タスク内容:[tasks.mdから抽出したタスク説明]
- 受入基準:[tasks.mdから抽出した受入基準]
- 技術的文脈:[tasks.mdから抽出した技術情報]
サブエージェントへの指示:
- タスクの完全な説明を提供
- 受入基準を明確に伝える
- 必要な技術的文脈を共有
- 実装のみを依頼(コミットは含めない)
2. 並列実行
依存関係のないタスクは並列で実行します:
並列実行の条件:
- 依存関係フィールドが空、または「なし」
- 前提となるタスクがすべて完了済み
- 異なるファイル・コンポーネントを対象とする
並列実行の方法:
複数のサブエージェントを同時に起動します:
- サブエージェント1: タスク1.1を実行
- サブエージェント2: タスク1.2を実行
- サブエージェント3: タスク1.3を実行
3. コミット管理
基本ルール
タスクごとのコミット:
- 各タスク完了後、必ずコミットを作成
- コミットメッセージにはタスクの内容を記載
- 補足情報があれば追加
コミットメッセージの形式:
[タスクID] タスクの要約
tasks.mdに記載されたタスクの詳細説明。
実装した内容の補足情報。
関連: docs/tasks.md [タスクID]
例:
[Task 1.1] ユーザー認証APIエンドポイントの実装
POST /api/auth/login と POST /api/auth/logout エンドポイントを実装。
JWTトークンを使用した認証方式を採用し、bcryptでパスワードをハッシュ化。
関連: docs/tasks.md Task 1.1
重要な変更前のコミット
以下の場合は、変更前に安全なコミットを作成します:
重要な変更の例:
- アーキテクチャの大幅な変更
- 複数のファイルにまたがる大規模なリファクタリング
- データベーススキーマの変更
- 既存のAPIインターフェースの変更
- 依存ライブラリのメジャーバージョンアップ
手順:
- 現在の安定した状態をコミット
- コミットメッセージに「変更前の安全なポイント」と記載
- 変更を実施
- 変更完了後にタスクのコミットを作成
例:
# 変更前のコミット
[Task 2.3] 認証システムリファクタリング前の安全なポイント
大規模なリファクタリングを開始する前の安定した状態を保存。
# 変更後のコミット
[Task 2.3] 認証システムのリファクタリング
認証ロジックをミドルウェアに分離し、コードの再利用性を向上。
既存のテストはすべて通過することを確認。
関連: docs/tasks.md Task 2.3
4. tasks.mdの更新
タスク完了後、以下の手順でtasks.mdを更新します:
更新内容
タスクの要約
- タスクの説明を1行に要約
- 実装した内容の要点を含める
- 簡潔かつ明確に記述
ステータスの変更
TODO→DONE- 完了日時は不要(gitのコミット履歴で確認可能)
フォーマット
#### タスク1.1: [タイトル]
**説明**: [元の説明]
**受入基準**: [元の受入基準]
**ステータス**: `DONE`
**完了サマリー**: [1行の要約]
更新のコミット
tasks.mdの更新は独立したコミットとして作成します:
Update tasks.md: Mark Task 1.1 as completed
タスク1.1(ユーザー認証APIエンドポイントの実装)を完了としてマーク。
5. 絵文字の使用禁止
すべてのメッセージ、コミットメッセージ、ドキュメントで絵文字を使用しません:
禁止事項:
- コミットメッセージに絵文字を含めない
- ユーザーへのメッセージに絵文字を使わない
- tasks.mdの更新に絵文字を含めない
- ログやエラーメッセージに絵文字を使わない
良い例:
[Task 1.1] ユーザー認証APIエンドポイントの実装
関連: docs/tasks.md Task 1.1
悪い例:
✅ [Task 1.1] ユーザー認証APIエンドポイントの実装 🚀
関連: docs/tasks.md Task 1.1 📝
ワークフロー
基本的な実行フロー
1. tasks.mdを読み取る
↓
2. 実行可能なタスクを特定
↓
3. 並列実行可能か判断
↓
4. サブエージェントを起動(並列または順次)
↓
5. 各タスクの実装を監視
↓
6. タスクごとにコミット作成
↓
7. tasks.mdを更新
↓
8. tasks.md更新をコミット
↓
9. 次のタスクへ(または完了)
詳細な実行手順
ステップ1: タスクの読み取りと分析
1. docs/tasks.mdを読み取る
2. 各タスクの情報を抽出:
- タスクID
- タスクタイトル
- 説明
- 受入基準
- 依存関係
- ステータス
- 推定工数
3. TODO状態のタスクをフィルタリング
4. 依存関係グラフを作成
ステップ2: 実行計画の作成
1. 依存関係のないタスクを特定
2. 並列実行グループを作成
3. 実行順序を決定
4. ユーザーに実行計画を提示
実行計画の例:
以下のタスクを実行します:
並列実行グループ1(依存関係なし):
- Task 1.1: ユーザー認証APIエンドポイントの実装
- Task 1.2: データモデルの定義
- Task 1.3: 設定ファイルの作成
順次実行(Task 1.1, 1.2に依存):
- Task 2.1: 認証ミドルウェアの実装
実行を開始してよろしいですか?
ステップ3: タスクの実行
1. サブエージェントを起動
2. タスクの完全な情報を提供
3. 実装の完了を待つ
4. 受入基準の確認
5. コミットを作成
ステップ4: tasks.mdの更新
1. 完了したタスクを1行に要約
2. ステータスをDONEに変更
3. 完了サマリーを追加
4. 変更をコミット
エラーハンドリング
タスク実行中のエラー
エラーが発生した場合:
- エラー内容をユーザーに報告
- 部分的に完了した作業をコミット
- タスクのステータスをBLOCKEDに変更
- エラー原因と対処方法を記録
- ユーザーに次の行動を確認
例:
Task 1.1の実行中にエラーが発生しました:
エラー内容:
npm install時に依存関係の競合が発生
実施した内容:
- 基本的なファイル構造を作成(コミット済み)
- パッケージのインストールは未完了
次の行動:
1. 依存関係の競合を解決してから再実行
2. このタスクをスキップして次のタスクへ進む
どちらにしますか?
依存関係の問題
前提タスクが未完了の場合:
- 依存関係を確認
- 前提タスクの実行を提案
- ユーザーに確認
制約事項
実行の制限
以下の場合は自動実行を行いません:
タスクの曖昧性
- 受入基準が明確でない
- 実装方法が複数考えられる
- 技術的文脈が不足している
リスクの高い操作
- 本番環境への直接的な変更
- データベースの削除操作
- 認証情報の変更
ユーザーの判断が必要な場合
- 技術選択が必要
- アーキテクチャの決定が必要
- トレードオフの判断が必要
これらの場合は、ユーザーに確認を求めます。
ベストプラクティス
1. タスクの粒度
tasks.mdのタスクは以下の粒度が推奨されます:
- サブエージェント1回の実行で完了できる範囲
- 20-90分程度の作業量
- 明確な受入基準を持つ
2. 依存関係の明示
tasks.mdでは依存関係を明確に記載してください:
**依存関係**: Task 1.1, Task 1.2
3. 受入基準の具体化
受入基準は検証可能な形で記載してください:
**受入基準**:
- [ ] `src/api/auth.ts`が存在する
- [ ] すべてのテストが通過する(npm test)
- [ ] ESLintエラーがゼロ
4. 技術的文脈の提供
サブエージェントが実装しやすいよう、技術的文脈を提供してください:
**技術的文脈**:
- フレームワーク: Next.js 14
- 認証: JWT + bcrypt
- 参照実装: src/api/users.ts
トラブルシューティング
よくある問題と解決方法
問題1: タスクが並列実行されない
- 原因: 依存関係が設定されている
- 解決: tasks.mdの依存関係フィールドを確認
問題2: コミットが作成されない
- 原因: git作業ディレクトリが汚れている
- 解決: 未コミットの変更を確認し、適切にコミット
問題3: サブエージェントがタスクを完了できない
- 原因: タスクの説明が不十分
- 解決: tasks.mdのタスク説明を詳細化
今後の拡張
このスキルは将来的に以下の機能を追加予定です:
- タスクの優先順位付け
- 実行時間の推定と実績の記録
- タスク実行のロールバック機能
- 複数プロジェクトの並行管理
- GitHub Issuesとの連携