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