commit 98f94c88dba4b3f91b1e29fac1b08f539bb8d999 Author: Zhongwei Li Date: Sun Nov 30 09:06:33 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..6b06fef --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "task-executor", + "description": "docs/tasks.mdに記載されたタスクを読み取り、サブエージェントを使用して実装を自動実行します。並列実装可能なタスクは並列で処理し、タスクごとにコミットを作成します。タスク完了後はtasks.mdを更新して完了をマークします。", + "version": "0.0.0-2025.11.28", + "author": { + "name": "Winds Chord", + "email": "zhongweili@tubi.tv" + }, + "skills": [ + "./skills/task-executor" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a8afe4a --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# task-executor + +docs/tasks.mdに記載されたタスクを読み取り、サブエージェントを使用して実装を自動実行します。並列実装可能なタスクは並列で処理し、タスクごとにコミットを作成します。タスク完了後はtasks.mdを更新して完了をマークします。 diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..fceb7e6 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,48 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:windschord/claude_skils:task-executor", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "76b924b7328933a1532c6fd2e56986fa8950783d", + "treeHash": "2c2eed37ee6febba9c491bcb46a8d24586125d4f5fe3bca158fc0557d11d66fa", + "generatedAt": "2025-11-28T10:29:02.763541Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "task-executor", + "description": "docs/tasks.mdに記載されたタスクを読み取り、サブエージェントを使用して実装を自動実行します。並列実装可能なタスクは並列で処理し、タスクごとにコミットを作成します。タスク完了後はtasks.mdを更新して完了をマークします。" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "cae16825240a50ac79b45c5a7a521cb9ea001d6e176ca3a0fc1f15994de39a4e" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "5ccfe8bd6857994f87f8f2e6b81b33cd15fc35fa6154c1b3b1b258400dd42883" + }, + { + "path": "skills/task-executor/README.md", + "sha256": "324b4cc40e887e6b539923eff72bdd47c54a1ab58df0397c9cff4ace4795c54d" + }, + { + "path": "skills/task-executor/SKILL.md", + "sha256": "e8000a3cd57229769493f301606691c64cb3924849c33408cfe3fa5c3cd37ef7" + } + ], + "dirSha256": "2c2eed37ee6febba9c491bcb46a8d24586125d4f5fe3bca158fc0557d11d66fa" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/task-executor/README.md b/skills/task-executor/README.md new file mode 100644 index 0000000..7755b1b --- /dev/null +++ b/skills/task-executor/README.md @@ -0,0 +1,187 @@ +# Task Executor スキル + +docs/tasks.mdに記載されたタスクを自動的に実行するClaude Codeスキルです。 + +## 概要 + +Task Executorスキルは、プロジェクトのdocs/tasks.mdファイルからタスクを読み取り、サブエージェントを使用して自動的に実装を行います。並列実行可能なタスクは並列で処理し、各タスク完了後に適切なコミットを作成します。 + +## 主な機能 + +- docs/tasks.mdからのタスク自動読み取り +- サブエージェントを使用した自動実装 +- 並列実行可能なタスクの並列処理 +- タスクごとの自動コミット作成 +- 重要な変更前の安全なコミット作成 +- タスク完了時のtasks.md自動更新 +- 絵文字を使用しないクリーンなメッセージ + +## 使用方法 + +### 基本的な使い方 + +``` +次のタスクを実行してください +``` + +または + +``` +tasks.mdのタスクを進めてください +``` + +### 複数タスクの実行 + +``` +tasks.mdのすべてのTODOタスクを実行してください +``` + +## タスクの実行フロー + +1. docs/tasks.mdを読み取り、TODO状態のタスクを特定 +2. 依存関係を確認し、実行可能なタスクを決定 +3. 並列実行可能なタスクをグループ化 +4. サブエージェントを起動してタスクを実行 +5. タスク完了後、コミットを作成 +6. tasks.mdを更新して完了をマーク +7. 次のタスクへ進む + +## tasks.mdの形式 + +このスキルは、sdd-docsスキルで作成されたtasks.mdファイルを想定しています: + +```markdown +#### タスク1.1: ユーザー認証APIエンドポイントの実装 + +**説明**: +`src/api/auth.ts`に以下のエンドポイントを実装する: +- POST /api/auth/login - ユーザーログイン処理 +- POST /api/auth/logout - ログアウト処理 + +**技術的文脈**: +- フレームワーク: Next.js 14 +- 認証: JWT + bcrypt + +**受入基準**: +- [ ] login/logoutエンドポイントが実装されている +- [ ] JWTトークンが正しく生成・検証される +- [ ] すべてのテストが通過する + +**依存関係**: なし +**推定工数**: 30分(AIエージェント作業時間) +**ステータス**: `TODO` +``` + +## コミット管理 + +### タスクごとのコミット + +各タスク完了後、以下の形式でコミットを作成します: + +``` +[Task 1.1] ユーザー認証APIエンドポイントの実装 + +POST /api/auth/login と POST /api/auth/logout エンドポイントを実装。 +JWTトークンを使用した認証方式を採用し、bcryptでパスワードをハッシュ化。 + +関連: docs/tasks.md Task 1.1 +``` + +### 重要な変更前のコミット + +アーキテクチャの大幅な変更や大規模なリファクタリングの前には、安全なポイントとしてコミットを作成します: + +``` +[Task 2.3] 認証システムリファクタリング前の安全なポイント + +大規模なリファクタリングを開始する前の安定した状態を保存。 +``` + +## tasks.mdの更新 + +タスク完了後、以下のように更新されます: + +```markdown +#### タスク1.1: ユーザー認証APIエンドポイントの実装 + +**説明**: [元の説明] +**受入基準**: [元の受入基準] +**ステータス**: `DONE` +**完了サマリー**: login/logoutエンドポイントをJWT認証で実装、すべてのテスト通過 +``` + +## 並列実行 + +依存関係のないタスクは自動的に並列実行されます: + +``` +以下のタスクを並列実行します: + +- Task 1.1: ユーザー認証APIエンドポイントの実装 +- Task 1.2: データモデルの定義 +- Task 1.3: 設定ファイルの作成 + +実行を開始してよろしいですか? +``` + +## 制約事項 + +以下の場合は自動実行を行わず、ユーザーに確認を求めます: + +- タスクの説明が曖昧で、実装方法が複数考えられる場合 +- 本番環境への直接的な変更など、リスクの高い操作 +- 技術選択やアーキテクチャの決定が必要な場合 + +## 絵文字の使用禁止 + +このスキルでは、すべてのメッセージ、コミットメッセージ、ドキュメント更新において絵文字を使用しません。クリーンで読みやすいテキストコミュニケーションを維持します。 + +## ベストプラクティス + +### tasks.mdの作成 + +tasks.mdは、sdd-docsスキルを使用して作成することを推奨します: + +1. requirements.mdで要件を定義 +2. design.mdで設計を文書化 +3. tasks.mdでタスクに分解 +4. task-executorスキルで実行 + +### タスクの粒度 + +各タスクは以下の粒度が推奨されます: +- サブエージェント1回の実行で完了できる範囲 +- 20-90分程度の作業量 +- 明確な受入基準を持つ + +### 受入基準の具体化 + +受入基準は検証可能な形で記載してください: +```markdown +**受入基準**: +- [ ] 特定のファイルが存在する +- [ ] すべてのテストが通過する +- [ ] ESLintエラーがゼロ +``` + +## トラブルシューティング + +### タスクが並列実行されない + +**原因**: 依存関係が設定されている + +**解決**: tasks.mdの依存関係フィールドを確認し、不要な依存関係を削除 + +### サブエージェントがタスクを完了できない + +**原因**: タスクの説明が不十分 + +**解決**: tasks.mdのタスク説明を詳細化し、以下を含める: +- 実装すべきファイルパス +- 使用する技術やライブラリ +- 具体的な実装手順 +- 技術的文脈 + +## ライセンス + +このスキルはMITライセンスの下で公開されています。 diff --git a/skills/task-executor/SKILL.md b/skills/task-executor/SKILL.md new file mode 100644 index 0000000..962ca57 --- /dev/null +++ b/skills/task-executor/SKILL.md @@ -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との連携