Initial commit
This commit is contained in:
422
skills/task-executor/SKILL.md
Normal file
422
skills/task-executor/SKILL.md
Normal file
@@ -0,0 +1,422 @@
|
||||
---
|
||||
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との連携
|
||||
Reference in New Issue
Block a user