Files
2025-11-30 09:06:33 +08:00

423 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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との連携