AgentSkillsCN

Orchestration

编排

SKILL.md

Orchestration Skill

タスクを専門エージェントに分散して並列実行するオーケストレーションワークフロー。

トリガー

  • /orchestrate コマンドが実行されたとき
  • ユーザーが「テスト実行して」「Lint実行して」「コミットして」「PR作って」と指示したとき

ワークフロー概要

code
[Phase 1: 探索・計画] ───────────────────────────────
    │
    ├── planner (バックグラウンド)
    │   └── タスクを分析し実装計画を作成
    │
    └── explorer (バックグラウンド・並列)
        └── 関連ファイルを探索
    │
    ▼ (両方完了待ち → 計画をユーザーに提示)
    │
[Phase 2: 実装] ───────────────────────────────────
    │
    └── implementer (バックグラウンド)
        └── 計画に基づいてコードを実装
    │
    ▼ (完了 → 結果をユーザーに報告)
    │
    ★ 自動実行停止
    │
[Phase 3: 検証] ─────────────── ユーザー指示で実行
    │
    ├── test-runner (バックグラウンド)
    └── linter (バックグラウンド・並列)
    │
[Phase 4: Git操作] ────────────── ユーザー指示で実行
    │
    ├── committer (バックグラウンド)
    └── pr-creator (バックグラウンド)

中間ファイル

オーケストレーションでは .orchestrator/ ディレクトリを使用してエージェント間で情報を共有する:

ファイル内容作成者
.orchestrator/plan.md実装計画planner
.orchestrator/exploration.md探索結果explorer
.orchestrator/implementation-log.md実装ログimplementer
.orchestrator/test-results.mdテスト結果test-runner
.orchestrator/lint-results.mdLint結果linter

エージェント起動パターン

並列起動(依存関係なし)

code
Phase 1: planner + explorer を同時にバックグラウンド起動
Phase 3: test-runner + linter を同時にバックグラウンド起動

直列起動(依存関係あり)

code
Phase 1 → Phase 2: 計画完了後に実装開始
Phase 3 → Phase 4: テスト成功後にコミット
Phase 4 内: コミット → PR作成

Task ツールの使い方

バックグラウンドでエージェント起動

code
Task tool:
  description: "plannerエージェント起動"
  subagent_type: general-purpose
  run_in_background: true
  prompt: |
    あなたは planner エージェントです。
    ...

エージェントの完了待ち

code
TaskOutput tool:
  task_id: "{起動時に返されたtask_id}"
  block: true
  timeout: 300000  # 5分

プロジェクトタイプ検出

テスト・Lintコマンドを自動検出するロジック:

code
1. package.json が存在する場合:
   - test: npm test
   - lint: npm run lint

2. Cargo.toml が存在する場合:
   - test: cargo test
   - lint: cargo clippy

3. pyproject.toml が存在する場合:
   - test: pytest
   - lint: ruff check .

4. go.mod が存在する場合:
   - test: go test ./...
   - lint: golangci-lint run

オーケストレーターの責務

  1. タスク受付: ユーザーからの要求を受け取る
  2. エージェント起動: 適切なタイミングで適切なエージェントを起動
  3. 進捗監視: バックグラウンドエージェントの出力を監視
  4. 結果統合: 各エージェントの結果を統合してユーザーに報告
  5. エラーハンドリング: 失敗時のリトライや代替処理の提案

エラーハンドリング

エージェントがタイムアウトした場合

  1. TaskOutput で timeout エラーを検出
  2. ユーザーに状況を報告
  3. 「継続して待つ」「中断する」の選択肢を提示

エージェントがエラーで終了した場合

  1. エラー内容を確認
  2. ユーザーにエラー内容を報告
  3. 可能であれば修正方法を提案
  4. 「リトライする」「手動で修正する」の選択肢を提示

テストやLintが失敗した場合

  1. 失敗内容をユーザーに報告
  2. 「implementerで修正する」「手動で修正する」の選択肢を提示