orchestrate について
orchestrateは、大規模なタスクを複数のCursorクラウドエージェントに分配するCursorスキルです。プランナーが作業を割り当て、構造化された引き継ぎをもとに次の作業を決めます。
主な機能
- 01Cursorクラウドエージェントの並列実行
- 02プランナーとワーカーの役割
- 03構造化された引き継ぎ
- 04JSONプランの実行
- 05Slackでの任意のステータス更新
活用シーン
- 01大規模なコーディングタスクの分割
- 02サブプランナーによる階層的なタスク調整
- 03Slackを設定した場合の進捗確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cursor/ plugins --skill orchestrateインストール後、Claude Code で/orchestrateを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
prompts/andon-block.mdempty-error-handoff.mdfailure-handoff.mdfinished-no-handoff.mdloop-hygiene.mdroot.mdslack-block.mdsubplanner.mdverifier.mdworker.mdreferences/dispatcher.mdhandoffs.mdplanner.mdspawning.mdschemas/plan.schema.jsonstate.schema.jsonscripts/__tests__/agent-manager-slack-mirror.test.tsandon-root-cache.test.tscheckpoint-restart.test.tscomment-cli.test.tscomment-retry-queue.test.tsexit-on-error.test.tsfailure-handoff.test.tshandoff-branch-parser.test.tshandoff-verification-parser.test.tshandoff-verification-record.test.tskickoff-dedupe.test.tsmeasurements-compare.test.tsmeasurements-mismatch.test.tsmeasurements-parser.test.ts詳細
Orchestrate
明示的な /orchestrate <goal> により、大規模なタスクが複数の Cursor クラウドエージェントに並行して割り振られます。ワーカー同士は連絡を取り合わず、構造化された引き継ぎを通じて上位に報告します。起動、待機、引き継ぎのループは scripts/cli.ts にあります。プランナーが plan.json を作成し、スクリプトがそれを実行して、プランナーが引き継ぎ内容を読んで次の作業を決定します。長時間実行されるエージェントのループは逸脱しがちですが、JSON の状態ファイルを使うスクリプトなら、軌道を保てます。
必読:cursor-sdk スキル(cursor/plugins/cursor-sdk)。 起動、認証、エラー分類については、そちらに記載されています。そのスキルで説明済みの内容を再実装しないでください。
セットアップ
CURSOR_API_KEYには個人用/ユーザー用のキーが必要です。Cursor ダッシュボード > Integrations で作成し、使用する前にcursor-sdkの Auth を読んでください。SLACK_BOT_TOKENは任意です。設定されている場合は、kickoffまたは最初のrun --rootに--slack-channel <id>を渡すか、SLACK_CHANNEL_IDを設定します。スクリプトはチャンネルをplan.slackChannelに保存し、そこでキックオフスレッドを投稿してタスクのステータスを反映し、アンドンのリアクションを読み取ります。トークンが設定されていない場合、スクリプトはその旨を一度だけログに記録し、Slack での可視性なしで実行します。正確性には影響しません。
基本原則
これらのルールにより、全体で調整しなくてもツリーが自律的に収束します。
- プランナーはスコープを管理し、タスクを公開します。コーディングはしません。
plan.jsonの作成、引き継ぎ内容の確認、次の作業の決定はプランナーの役割です。ファイルの編集、git mergeの実行、競合のその場での修正はプランナーの役割ではありません。コーディングしたくなったら、代わりにワーカー向けのタスクを公開します。 - プランナーは、誰がタスクを担当するか把握しません。 スクリプトが各タスクをクラウドエージェントに割り当てます。プランナーはタスク単位で考えます。
- ワーカーは隔離されています。 1 つのタスクにつき、リポジトリのクローンは 1 つ。他のエージェントとの連絡手段はありません。完了時に引き継ぎを 1 回行います。
- サブプランナーは再帰的なプランナーです。 プランナーは「この範囲のサブプランを作成する」タスクを公開します。サブプランナーはその範囲を全面的に担当し、集約した引き継ぎを返します。
- 引き継ぎによって継続的に進行します。 完了したと思っていたプランナーにも、遅れて引き継ぎが届いて再計画が必要になることがあります。プランナーが公開をやめると決めるまで、「完了」状態にはなりません。
- 同期ではなく伝播です。 兄弟間の連絡はありません。階層間で状態を共有することもありません。各階層が参照できるのは、子からの引き継ぎだけです。
ノードの種類
| ノード | ループを実行するか | スコープ | 出力 |
|---|---|---|---|
| プランナー | はい | ユーザーの目標全体 | ユーザー向けメッセージ + 任意の PR |
| サブプランナー(↻) | はい | 親のスコープのうち 1 つの範囲 | 親への引き継ぎ |
| ワーカー | いいえ | 具体的なタスク 1 つ | 起動元のプランナーへの引き継ぎ |
| 検証担当 | いいえ | 1 つの対象の受け入れ基準 | 起動元のプランナーへの判定引き継ぎ |
| Git | 該当なし | 共有媒体 | ブランチ(コード)+ handoffs/(内容) |
役割
役割は 2 つ、スキルは 1 つです。自分の役割のリファレンスファイルを読み、もう一方は読み飛ばしてください。
ディスパッチャー。 ローカルの IDE セッションで、ユーザーが /orchestrate <goal> を入力しました。あなたの仕事は、クラウドルートプランナーを起動し、その URL を返すことです。references/dispatcher.md を参照してください。これは一度限りの処理であり、あなたはプランナーではありません。
プランナー(ルートまたはサブ)。 「You are the root planner for:」または「You are a subplanner for:」で始まる構造化プロンプトを受け取って起動されました。または、ユーザーがローカルで計画ループを実行することを選びました。スコープを管理し、タスクを公開し、引き継ぎを読み、次の作業を決定します。references/planner.md を参照してください。
disable-model-invocation: true は、このスキルが明示的な呼び出し時にのみ読み込まれることを意味します。