cli-opencode
OpenCode CLIオーケストレーター:外部へのディスパッチ、OpenCode内での並列セッション実行、完全なランタイムコンテキストを保持したままAI間のハンドバックに対応します。
description の原文を見る
OpenCode CLI orchestrator: external dispatch, in-OpenCode parallel sessions, cross-AI handback with full runtime context.
SKILL.md 本文
OpenCode CLI オーケストレータ - フルランタイムクロスAIディスパッチ
重要 — 自己呼び出し禁止
このスキルは OpenCode CLI バイナリ (
opencode) にディスパッチします。現在このスキルを読んでいるエージェント自体が OpenCode 内で実行されている場合 (TUI / acp / serve / run モード — 検出シグナルは §2 に記載)、スキルはロードを拒否し、opencode呼び出しを生成する代わりにドキュメント化されたエラーメッセージを返す必要があります。唯一の例外は、独自のセッション id と状態ディレクトリで別のセッションを意図的にスポーンする明示的な「並列デタッチ」リクエストです。Claude Code エージェントが cli-claude-code を呼び出さないのと同様に、OpenCode エージェントは cli-opencode を呼び出さず、Codex エージェントは cli-codex を呼び出さず、Gemini エージェントは cli-gemini を呼び出しません。cli-X スキルはクロスAIディレゲーション専用 — 自己呼び出しは不可。
OpenCode の opencode run を外部 AI アシスタント (Claude Code、Codex、Gemini、素の shell) から、および既存の OpenCode セッション内から並列デタッチワーカー用にオーケストレートします。3 つのドキュメント化されたユースケースが循環リスクを明示的に保つとともに、すべてのディスパッチパスにコピー&ペーストの呼び出し形状を提供します。
コア原則: 呼び出し元 AI は指揮者のままです。OpenCode がすべきことに委任します — フルプラグイン、スキル、MCP、およびワンショットディスパッチでの Spec Kit Memory ランタイム。出力を検証して統合します。
1. 使用時期
アクティベーショントリガー
- フルプラグイン / スキル / MCP ランタイム (ユースケース 1) — 呼び出し元 AI は Claude Code / Codex / Copilot / Gemini / 素の shell であり、タスクはプロジェクトのフル Spec Kit Memory データベース、CocoIndex セマンティクスインデックス、構造コードグラフ、またはワンショットディスパッチのすべてのプラグイン/スキル/MCP ツールが必要です。
.opencode/specs/の下の外部化状態を持つ@deep-research/@deep-reviewエージェントループが含まれます。 - 並列デタッチセッション (ユースケース 2) — オペレータは既に OpenCode 内 (TUI / web / serve / acp) にいて、アブレーション、ワーカーファーム、または並列研究用に独自のセッション id と状態ディレクトリを持つ別のセッションが必要です。プロンプトが明示的に「並列デタッチ」「アブレーションスイート」「ワーカーファーム」「並列研究」「デタッチスポーン」「URL 共有」「share-url」または「デタッチセッション」に言及しています。
- クロスAIオーケストレーションハンドバック (ユースケース 3) — 呼び出し元 AI は非 Anthropic (Codex / Copilot / Gemini)、タスクはプロジェクト固有のサブシステム (spec-kit、memory、code-graph、advisor) をターゲット、および非 Anthropic CLI は独自でプロジェクトのプラグイン/スキル/MCP ランタイムをロードできず、OpenCode がブリッジとして必要です。
- エージェントディスパッチ — タスクは専門化された OpenCode エージェントに一致します。プライマリエージェント (
--agentで直接呼び出し可能):general、plan(組み込み)、orchestrate、multi-ai-council。オーケストレートプライマリ経由でディスパッチされたサブエージェント:context、review、write、debug、deep-research、deep-review、deep-agent-improvement、prompt-improver。 - クロスリポディスパッチ — セッション A からリポジトリ B のプラグイン/スキル/MCP ランタイムに
--dir <path>経由で、またはリモート OpenCode サーバー--attach <url>経由でディスパッチします。
使用しない場合
- あなたは既に OpenCode です。 ランタイムが OpenCode である場合 (検出シグナル:
$OPENCODE_CONFIG_DIRまたは任意のOPENCODE_*環境変数セット、プロセスアンセストリのopencode、または~/.opencode/state/<id>/lockが存在)、このスキルはロードを拒否します。自己呼び出しは循環ディスパッチループを作成し、価値のないトークンを消費します。cli-X ファミリーはクロスAIディレゲーション専用です。唯一の合法的な例外は、独自のセッション id と状態ディレクトリで別のセッションをスポーンする明示的な「並列デタッチ」リクエスト (ユースケース 2) です。そのクォリファイアなしでは、スマートルータは ADR-001 に従い拒否します。 opencode runオーバーヘッドの価値がない単純で迅速なタスク。- 生モデルディスパッチのみが必要なタスク — 兄弟 cli-* スキルを使用します。
- インタラクティブ TUI または web UI が必要なタスク (
opencodeを直接使用する代わりにopencode runを使用)。 - 呼び出し元 AI で既にコンテキストがロードされ理解されています。
- OpenCode バイナリが予期されるパスでインストールされていないタスク。
2. スマートルーティング
前提条件検出
# OpenCode CLI が利用可能なことを確認
command -v opencode || echo "インストールされていません。実行: brew install opencode (macOS) または curl -fsSL https://opencode.ai/install | bash"
# 自己呼び出しガード (ADR-001 レイヤード検出)
# レイヤー1: 環境変数ルックアップ — 任意の OPENCODE_* 変数
env | grep -q '^OPENCODE_' && echo "エラー: OPENCODE_* env が検出されました — 既に OpenCode 内です。"
# レイヤー2: プロセスアンセストリ — opencode が親ツリーに存在
ps -o command= -p "$PPID" | grep -q opencode && echo "エラー: opencode 親プロセスが検出されました。"
# レイヤー3: 状態ロックファイルプローブ
ls ~/.opencode/state/*/lock 2>/dev/null | head -1 | grep -q lock && echo "エラー: ライブ OpenCode セッションロックが検出されました。"
自己呼び出しガード (ADR-001)
def detect_self_invocation():
"""OpenCode 内で既に実行されているオーケストレータを検出したときに非 None シグナルを返す。"""
# レイヤー1: 環境変数ルックアップ — OpenCode は OPENCODE_CONFIG_DIR と OPENCODE_* 変数を設定
for key in os.environ:
if key == 'OPENCODE_CONFIG_DIR' or key.startswith('OPENCODE_'):
return ('env', key)
# レイヤー2: プロセスアンセストリ — opencode が親ツリーに存在
try:
ancestry = subprocess.check_output(['ps', '-o', 'command=', '-p', str(os.getppid())]).decode()
if '/opencode' in ancestry or 'opencode ' in ancestry:
return ('ancestry', 'opencode')
except subprocess.SubprocessError:
pass
# レイヤー3: 状態ロックファイルプローブ
state_dir = os.path.expanduser('~/.opencode/state')
if os.path.isdir(state_dir):
for entry in os.listdir(state_dir):
if os.path.exists(os.path.join(state_dir, entry, 'lock')):
return ('lockfile', entry)
return None
if detect_self_invocation():
# 唯一の合法的な例外: 明示的な「並列デタッチ」キーワード (ユースケース 2)
# 別のセッション id と状態ディレクトリで、自己ディスパッチではない。
if not has_parallel_session_keywords(prompt):
refuse(
"自己呼び出しが拒否されました: このエージェントは既に OpenCode 内で実行されています。"
"兄弟 cli-* スキルまたは異なるランタイムの新しい shell セッションを使用して異なるモデルをディスパッチしてください。"
"並列デタッチセッションの場合は、明示的な並列セッションキーワード付きで再度述べてください。"
)
リソース読み込みレベル
| レベル | 読み込むときに | リソース |
|---|---|---|
| ALWAYS | スキル呼び出しごと | references/cli_reference.md、assets/prompt_quality_card.md |
| CONDITIONAL | インテント信号がマッチしたら | インテントマップ参照ドキュメント |
| ON_DEMAND | 明示的なリクエストのみ | 拡張テンプレートおよびパターン |
スマートルータ
プロバイダ固有の辞書 ( の共有ヘルパー関数で使用):system-spec-kit/references/cli/shared_smart_router.md
- パターン 1: ランタイム検出 -
discover_markdown_resources()は再帰的にreferences/とassets/をスキャン。 - パターン 2: ロード前存在確認 -
load_if_available()は_guard_in_skill()、inventory、およびseenを使用。 - パターン 3: 拡張ルーティングキー - プロバイダ/ユースケースコンテキストは外部ディスパッチ、デタッチセッション、ハンドバック、エージェント、クロスリポ、テンプレート、およびワークフロー全体で
opencodeルーティングキーを導出します。 - パターン 4: マルチティア優雅なフォールバック -
UNKNOWN_FALLBACKは OpenCode と兄弟 CLI を曖昧にし、missing intent ルートは「知識ベースなし」通知を返します。
INTENT_SIGNALS = {
"EXTERNAL_DISPATCH": {"weight": 4, "keywords": ["delegate to opencode", "opencode run", "from claude code", "from codex", "from gemini", "from copilot", "external runtime", "full plugin runtime"]},
"PARALLEL_DETACHED": {"weight": 4, "keywords": ["parallel detached", "ablation suite", "worker farm", "parallel research", "spawn detached", "share url", "share-url", "detached session"]},
"CROSS_AI_HANDBACK": {"weight": 4, "keywords": ["spec kit", "spec-kit", "spec_kit", "code graph", "memory_search", "session_bootstrap", "skill advisor", "cross-ai handback"]},
"AGENT_DISPATCH": {"weight": 4, "keywords": ["delegate", "agent", "deep-research", "deep-review", "multi-ai-council", "review agent", "context agent"]},
"CROSS_REPO": {"weight": 3, "keywords": ["cross-repo", "different repo", "--dir", "another repository", "remote opencode"]},
"TEMPLATES": {"weight": 3, "keywords": ["template", "prompt", "how to ask", "opencode prompt"]},
"PATTERNS": {"weight": 3, "keywords": ["pattern", "workflow", "orchestrate", "session continue", "resume session"]},
}
RESOURCE_MAP = {
"EXTERNAL_DISPATCH": ["references/cli_reference.md", "references/integration_patterns.md"],
"PARALLEL_DETACHED": ["references/integration_patterns.md", "assets/prompt_templates.md"],
"CROSS_AI_HANDBACK": ["references/integration_patterns.md", "references/opencode_tools.md"],
"AGENT_DISPATCH": ["references/agent_delegation.md", "assets/prompt_templates.md"],
"CROSS_REPO": ["references/cli_reference.md", "references/opencode_tools.md"],
"TEMPLATES": ["assets/prompt_templates.md", "references/cli_reference.md"],
"PATTERNS": ["references/integration_patterns.md", "references/cli_reference.md"],
}
LOADING_LEVELS = {
"ALWAYS": ["references/cli_reference.md", "assets/prompt_quality_card.md"],
"ON_DEMAND_KEYWORDS": ["full reference", "all templates", "deep dive", "complete guide", "opencode agent", "opencode prompt", "share url", "ablation", "worker farm", "self-invocation", "memory handback"],
"ON_DEMAND": ["references/opencode_tools.md", "assets/prompt_templates.md"],
}
UNKNOWN_FALLBACK_CHECKLIST = [
"ユーザーは OpenCode CLI について具体的に質問していますか?",
"タスクはプロジェクトのフルプラグイン / スキル / MCP ランタイムが必要ですか?",
"並列デタッチセッションは彼らが望むものですか?",
"非 Anthropic CLI は spec-kit ワークフロー用に OpenCode にハンドバックしていますか?",
]
呼び出しシーケンス (shared_smart_router.md の共有ヘルパーを使用):
discover_markdown_resources()— ルーティング時に既存のreferences/およびassets/フォルダの下の現在の.mdファイルを再帰的に列挙。_guard_in_skill()+load_if_available()— このスキルへのパスをサンドボックス化、非 markdown ロードを拒否、不足ファイルをスキップ、重複を抑制。score_intents(task)とselect_intents(scores, ambiguity_delta=1.0)— プロバイダ固有の重み付けされたインテントスコアリングおよびトップ 2 曖昧性処理を保持。get_routing_key(task, intents)— タスク/プロバイダコンテキストからプロバイダルーティングキーを導出し、その後opencodeにフォールバック。- ALWAYS ロード
LOADING_LEVELS["ALWAYS"]、max スコアが 0 の場合UNKNOWN_FALLBACKをUNKNOWN_FALLBACK_CHECKLISTと共に返す。 - CONDITIONAL ロード
RESOURCE_MAP[intent]、ON_DEMAND キーワードマッチをロード、ALWAYS ロードリソースを超えてプロバイダ固有の知識ベースが利用できない場合に通知を返す。
route_opencode_resources(task) 関数本文は に存在 — shared_smart_router.md<PROVIDER> = opencode に置換。
3. 仕組み
前提条件
# インストール確認 (cli-opencode v1.0.0 は opencode v1.3.17 に固定)
opencode --version | grep -q '^1\.' || echo "インストールされていないか、バージョンドリフト。references/cli_reference.md §9 を参照。"
# 自己呼び出しガード
env | grep -q '^OPENCODE_' && echo "エラー: 既に OpenCode セッション内"
# 認証 — opencode providers (エイリアス auth) で設定されたプロバイダ
opencode providers
認証オプション: opencode providers login <provider> の OAuth および API キーフロー。典型的なインストールで設定されたプロバイダ: opencode-go (api、DEFAULT)、deepseek (api、フォールバック)、openai (api、gpt-5.5/gpt-5.5-pro/gpt-5.5-fast の premium alternative)。
プロバイダ認証プリフライト (スマートフォールバック)
セッションでの最初のディスパッチ前に必須。 デフォルトプロバイダがこのマシンにログインしていない可能性があります — provider/model not found または 401 Unauthorized でディスパッチ中に静かに失敗するとラウンドトリップを無駄にします。セッションごとに 1 回このチェックを実行し、結果をキャッシュし、ディスパッチが認証エラーで失敗した場合にのみ再実行します。
# ワンショットプリフライト: 設定されたプロバイダをリスト、ルーティング用にキャプチャ
PROVIDERS=$(opencode providers list 2>&1)
echo "$PROVIDERS" | grep -q "opencode-go" && OPENCODE_GO_OK=1 || OPENCODE_GO_OK=0
echo "$PROVIDERS" | grep -q "deepseek" && DEEPSEEK_OK=1 || DEEPSEEK_OK=0
echo "$PROVIDERS" | grep -q "openai" && OPENAI_OK=1 || OPENAI_OK=0
決定木 (順序を適用 — 最初のマッチが勝利):
| 状態 | OPENCODE_GO_OK | DEEPSEEK_OK | OPENAI_OK | アクション |
|---|---|---|---|---|
| デフォルト利用可能 | 1 | * | * | --model opencode-go/deepseek-v4-pro --variant high で続行 |
| デフォルト欠落、deepseek 準備完了 | 0 | 1 | * | 置換前にユーザーに確認 — 静かに自動フォールバックしない。オプション A/B/C/D を表示。 |
| デフォルト欠落、openai のみ準備完了 | 0 | 0 | 1 | 置換前にユーザーに確認 — オプション A/B/C/D を表示。OpenAI は paid premium フォールバック。 |
| すべて欠落 | 0 | 0 | 0 | ユーザーにプロバイダを設定するよう確認 — ログインコマンドを表示、ディスパッチしない。 |
ユーザープロンプトテンプレート — デフォルト欠落、フォールバック設定済み:
スキルデフォルト `opencode-go/deepseek-v4-pro` はこのマシンで設定されていません。
設定されたフォールバックが利用可能です。1 つ選択:
A) `deepseek/deepseek-v4-pro --variant high` を使用 (直接 DeepSeek API、今すぐ設定)
B) `openai/gpt-5.5-pro --variant high` を使用 (OpenAI premium、今すぐ設定 — paid)
C) 最初に `opencode providers login opencode-go` を実行し、元のディスパッチを再試行
D) 異なるモデルを命名 — 使用する `--model <provider/model>` をペースト
ユーザープロンプトテンプレート — すべてのプロバイダ欠落:
このマシンで設定されているサポート対象プロバイダがありません。1 つを実行:
- `opencode providers login opencode-go` (推奨 — cli-opencode のデフォルト)
- `opencode providers login deepseek` (直接 DeepSeek API alternative)
- `opencode providers login openai` (OpenAI premium alternative — paid)
どの設定をしたいですか? ログインが完了したら確認。スキルは元のディスパッチを再試行します。
エラー回復契約。 プリフライトが渡された後、ディスパッチが認証エラーを返した場合 (認証情報の期限切れまたはローテーション)、キャッシュを無効化し、プリフライトを再実行し、再試行前に同じ決定木を適用します。ユーザーが承認しなかったモデルを決して置換しないでください。
デフォルト呼び出し (スキルデフォルト)
デフォルトモデル + variant + エージェント + フォーマット + dir: opencode-go/deepseek-v4-pro · --variant high · --agent general · --format json · --dir <repo-root>。リポジトリルートピンは CWD 曖昧さを回避します。OpenCode Go はデフォルトプロバイダ — DeepSeek および他のオープンモデルを単一ゲートウェイ経由でルーティングし、cli-opencode ディスパッチ用のルーチンで低コストで高い推論を提供します。
opencode run --model opencode-go/deepseek-v4-pro --agent general --variant high --format json --dir <repo-root> "<prompt>" を使用。
明示的なユーザーモデル、エージェント、ポート、およびハンドバックフレーズを逐語的に尊重。それ以外の場合は上記のデフォルト呼び出しを使用。
コア呼び出しパターン
コアフラグ: --model、--agent、--variant、--format json、--dir、継続/セッション/fork フラグ、デタッチセッション用 --share および --port、--file、--thinking、--pure、ログフラグ。
while readループ内のバックグラウンドディスパッチ:opencode runをループ内でバックグラウンドするときに常にリダイレクト後に</dev/nullを追加。なしでバックグラウンドプロセスはループの stdin を継承し、残りを静かに消費します。references/integration_patterns.md§6 を参照。
モデル選択
opencode providers list を実行して認証情報を確認し、opencode models <provider> でライブの選択肢を確認。デフォルト: opencode-go/deepseek-v4-pro --variant high。直接 deepseek/* と openai/* (例: openai/gpt-5.5、openai/gpt-5.5-pro、openai/gpt-5.5-fast) は明示的にリクエストされた場合に利用可能のままです。
OpenCode エージェントディレゲーション
呼び出し元 AI は指揮者です。OpenCode は プライマリエージェント (--agent <slug> で直接呼び出し可能) を サブエージェント (プライマリから Task-tool サブエージェントとしてディスパッチ) から区別します。
プライマリエージェント — --agent で直接呼び出し可能
直接エージェントは general、plan、orchestrate、および multi-ai-council。タスクが計画、オーケストレーション、または多戦略計画が必要なときに明示的に 1 つをピン留め。
サブエージェント — プライマリから Task サブエージェントとしてディスパッチ
<!-- F-007-B2-01: clarified single-hop dispatch contract; deep-research/deep-review/improve-* are command-only -->これらは .opencode/agents/<slug>.md で mode: subagent と共に存在し、opencode run --agent で直接呼び出し不可。single-hop NDP 契約下では 2 つのディスパッチサーフェスが合法です:
- ジェネリックサブエージェント (
context、review、write、debug) — プライマリ (orchestrate) が Task ツールを使用してディスパッチ。opencode CLI 経由で演習するために、--agent orchestrateでルーティングし、関連するサブエージェントをディスパッチさせます。 - コマンド所有ループエクゼキューター (
deep-research、deep-review、deep-agent-improvement、prompt-improver) — 親コマンド (/spec_kit:deep-research、/spec_kit:deep-review、/improve:agent、/improve:prompt) のみ でディスパッチ。--agent <slug>で直接これらをディスパッチせず、orchestrateを経由してルーティングしない でください。親コマンドはイテレーション状態、収束検出、および継続性を所有します。
ジェネリックサブエージェント (context、review、write、debug) は orchestrate を経由。ループエクゼキューター (deep-research、deep-review、deep-agent-improvement、prompt-improver) は親コマンドのみ を経由。
完全なエージェントロスターとディスパッチパターンについては agent_delegation.md を参照。
ユニークな OpenCode 強み
OpenCode ディスパッチはフルプロジェクトランタイムロード、デタッチセッション、JSON イベントストリーム、エージェントルーティング、クロスリポ/サーバーディスパッチ、セッション継続、およびプラグイン無効化デバッグを提供します。
必須コマンド
デフォルト呼び出しを外部ランタイムハンドバック用に使用、明示的なデタッチセッション用に --share --port <N> を追加、ジェネリックサブエージェントルーティング用に --agent orchestrate を選択、クロスリポディスパッチ用に --dir を変更。
エラー処理
不足バイナリをインストール、曖昧な自己呼び出しを拒否、モデル/認証エラー用にプロバイダプリフライトを実行、unknown フラグ用にバージョンドリフトをチェック、空ストリーム用に --format json を強制、バックグラウンドループに </dev/null を追加、--share を確認、プラグインクラッシュのみに --pure を使用、stuck セッション用に状態ログを検査。
4. ルール
✅ 常に
- 最初の呼び出し前に OpenCode CLI がインストールされていることを確認。v1.3.17 ベースラインに対してバージョンを確認 (ドリフト処理は
references/cli_reference.md§9)。 - ディスパッチ前に自己呼び出しガードを実行 (ADR-001): Layer 1 任意の
OPENCODE_*の env-var ルックアップ、Layer 2opencode親の process-ancestry プローブ、Layer 3~/.opencode/state/<id>/lockプローブ。いかなる正値でもトリップ — プロンプトに明示的な並列セッションキーワードがない限り拒否。 - モデル + エージェント + variant + フォーマット + dir を明示的にピン留め。デフォルト:
--model opencode-go/deepseek-v4-pro --agent general --variant high --format json --dir <repo-root>。ユーザーオーバーライドを逐語的に尊重 (例:opencode-go/deepseek-v4-flash、opencode-go/glm-5.1、deepseek/deepseek-v4-pro、openai/gpt-5.5-pro)。 - 呼び出し元 AI が明示的にフォーマット済み出力を望む場合を除き
--format jsonを渡す — JSON イベントストリームが外部ランタイムが段階的に解析するもの。 - すべての非インタラクティブ
opencode run呼び出しに</dev/nullを追加 ファイルに stdout および/または stderr をリダイレクトする、またはwhile readループ内で実行。opencode v1.14.39 はセッション作成前に起動時に stdin を読み取ります。明示的な閉じられた stdin なし、+60s service=snapshot prune=7.days cleanupログ行の後に自動化が 0% CPU で永遠にハング。位置: positional 引数の後、> stdout 2> stderrリダイレクトの前。前フェーズ| tailは閉じられた stdin (パイプステージアップストリームが空) を提供し、誤ってバグを回避。しかし> stdout.log 2> stderr.logは提供しません。9 文字</dev/nullリダイレクトは stdin に即座に EOF を提供し、ディスパッチをアンブロック。references/integration_patterns.md§6 + memoryfeedback_opencode_run_requires_dev_null_stdin.md+ CHANGELOG-2026-05-08-tool-name-regex-fix.md §Fix 4 を参照。 - ディスパッチされたセッションにプロンプトで spec フォルダを渡す: 呼び出し元 AI が active Gate-3 spec フォルダを持つ場合、
Spec folder: <path> (pre-approved, skip Gate 3)を含める。ない場合、委任前にユーザーに確認 — ディスパッチされたセッションは非インタラクティブrunモードで Gate 3 にインタラクティブに答えられません。 - ディスパッチプロンプト構築前に
assets/prompt_quality_card.mdをロード。 CLEAR 5 質問チェックを適用し、Bash 呼び出しコメントでフレームワークをタグ付け、返されたENHANCED_PROMPTを使用。複雑さ ≥ 7/10 または compliance/security シグナルが出現した場合、Task ツール経由で最初に@prompt-improverをディスパッチ。 - ディスパッチセッション出力を検証: JSON イベントを段階的に解析 (tool calls、partial messages、final summary)、コード生成された場合は構文チェックを実行、プロジェクト標準に対して
sk-codeサーフェス検出および findings-first レビューが要求された場合sk-code-reviewを交差参照 (ALWAYS ルール 12 を参照)。 - stderr (
2>&1) をキャプチャしてツールエラーと警告をキャッチ。 - ディスパッチ前にユースケース (1 / 2 / 3) を分類 — スマートルータは 3 つのいずれかにマップしないディスパッチを拒否。
- セッション当たり 1 回プロバイダ認証プリフライトを実行 (§3 プロバイダ認証プリフライト)。設定されたプロバイダリストをキャッシュ。デフォルト
opencode-goがない場合、ユーザーに確認 — モデルを静かに置換しない。後のディスパッチが認証エラーを返した場合、キャッシュを無効化し、再試行前にプリフライトを再実行。 - コード標準読み込み (surface-aware 契約) — コードレビューまたはコード生成用にディスパッチするとき、ディスパッチされたセッションに指示: (1)
sk-codeをロード; (2)sk-codeがマーカーと対象ファイルから検出されたスタックにマッチするサーフェスタグを出力させる; (3) 選択されたサーフェスリソースをロードし、検証コマンドを実行; (4)sk-code-reviewを formal findings-first レビュー出力にのみ 追加。フォールバック: サーフェスが確実に決定できない場合、ランタイムサーフェスと検証コマンドセットを要求。dispatch プロンプトで廃止された兄弟コードスキルを決してハードコードしない。 - 破壊的スコープ違反防止 (RM-8) for deep-loop dispatches — populated worktree に対する非インタラクティブ
opencode run --dangerously-skip-permissions(および特に長時間実行の/spec_kit:deep-research:auto//spec_kit:deep-review:auto) は ディスパッチ前に 4 層の緩和を適用必須: (L1) レンダリングプロンプトは強化反復プロンプトテンプレートから リテラルBANNED OPERATIONSおよびALLOWED WRITE PATHS文字列を含む; (L2) dispatch--dirは live working tree ではなく freshgit worktreeを指す; (L3) maingit statusclean またはコミット済み、recovery-baseline commit hash 記録済み; (L4) multi-phase / phase-parent ターゲット用に、runtime scope guard が出荷されるまでcli-copilot+gpt-5.5 --reasoning-effort highをdeepseek-v4-proよりも優先。背景: 2026-05-04 にopencode-go/deepseek-v4-prodispatch under/spec_kit:deep-review:autoは唯一のセーフガードが prompt のシングル prose line だったため 2 つのフェーズフォルダ全体で 44 ファイルを削除し、--dangerously-skip-permissionsは制限のない FS ライト を付与。完全なインシデント + root cause + checklist:references/destructive_scope_violations.md。
❌ しない
- OpenCode 自体の内部から自己ディスパッチ用このスキルを呼び出さない — ドキュメント化されたエラーメッセージで拒否。兄弟 cli-* / fresh shell / 並列セッションキーワードを使用。
- オペレータ確認なしに
--shareを渡さない (CHK-033) — share URL はセッション内容を曝露。 - ディスパッチセッション出力を security-sensitive コード で盲目的に信頼、sensitive データ (API キー、パスワード、認証情報) をプロンプトで送信、または急速連続呼び出しで API をハンマー。
- プラグインデバッグ外の
--pureを使用 (プラグイン無効化は cli-opencode ディスパッチの全体的なポイントを削除)。 - ディスパッチされたセッション内の tool calls で
opencode runをネスト — サブエージェントディスパッチ用に OpenCode の native Task ツールを使用。
⚠️ エスカレート
- OpenCode CLI がインストールされておらず、ユーザーが確認していない —
brew install opencodeまたはcurl -fsSL https://opencode.ai/install | bashを提供。 - オペレータが
--shareURL を発行したい — CHK-033 に従い明示的に確認を取得。 - バイナリバージョンが v1.3.17 ベースラインと異なる —
opencode --versionとopencode run --helpを実行。ドリフトをサーフェス、フォールバック、または承認が必須。 - スマートルータがプロンプトを 3 つのユースケースのいずれかにマップできない — UNKNOWN_FALLBACK から曖昧性チェックリストをサーフェス。
- 自己呼び出しガードがトリップし、プロンプトが曖昧 — 拒否を 3 つの修復オプション (兄弟 cli-* / fresh shell / 並列セッションキーワード) と共にサーフェス。
メモリハンドバックプロトコル
呼び出し元 AI が OpenCode CLI ディレゲーションからセッションコンテキストを保持する必要がある場合、canonical 7-step procedure を実行 (extract MEMORY_HANDBACK セクション → structured JSON を構築 → secrets をスクラブ → --stdin/--json/temp-file 経由で generate-context.js を呼び出す → memory_index_scan)。完全な procedure および注意事項: 。system-spec-kit/references/cli/memory_handback.md
OpenCode 固有 Memory エピログテンプレート: assets/prompt_templates.md §14 を参照。
呼び出し例:
printf '%s' "$JSON_PAYLOAD" | node .opencode/skills/system-spec-kit/scripts/dist/memory/generate-context.js --stdin [spec-folder]
5. 参考資料
コア参考資料
cli_reference.md- フル subcommand および flag 参考資料、モデル、バージョンドリフト処理integration_patterns.md- 3 ユースケース、決定木、自己呼び出しガード、サイレント stdinopencode_tools.md- 兄弟 cli-* スキル対比での unique value propsagent_delegation.md- エージェントルーティング matrix、リーフエージェント制約destructive_scope_violations.md- RM-8 インシデント (2026-05-04、44 ファイル削除)、root cause 分析、4 層防止プレイブック
テンプレートおよび資産
prompt_templates.md- 13 個のコピー&ペーステンプレート per use case + エージェント + ハンドバックprompt_quality_card.md- フレームワーク選択、CLEAR 5-check、エスカレーショントリガー
共有 (cli-* ファミリー)
shared_smart_router.md- スマートルータ用ヘルパー関数本文。memory_handback.md- canonical 7-step Memory Handback procedure。
外部
- OpenCode GitHub - オフィシャルリポジトリ
- OpenCode Install - スタンドアローンインストーラエントリーポイント
- OpenCode Documentation - オフィシャルドキュメント
参考資料読み込み注記
- 現在のインテント用に必要な参考資料のみロード。
- スマート ルーティング (Section 2) は唯一のルーティング権威。
cli_reference.mdとprompt_quality_card.mdは baseline として常にロード。
6. 成功基準
タスク完了
- OpenCode CLI が正しい subcommand、フラグ、モデル、エージェント、variant、フォーマット、および dir で呼び出された。
- 自己呼び出しガードはディスパッチ前にチェック — appropriate 時に拒否。
- ユースケース (1 / 2 / 3) は呼び出し前に明示的に分類。
- JSON イベントストリーム はキャプチャ、段階的に解析、検証、統合。
- generated コード から security vulnerabilities なし。
--shareURL は CHK-033 に従いオペレータ確認でオプトイン。while readループ内のバックグラウンドディスパッチ は</dev/nullリダイレクト を含む。- Memory Handback は
generate-context.jsを通じて抽出・保存、applicable 時。
スキル品質
- すべて 8 セクション present with proper anchor comments。
- スマートルーティング UNKNOWN_FALLBACK を含むすべての intent signals をカバー。
- 参考資料ファイル は deep-dive コンテンツを重複なしで提供。
- 自己呼び出しガード pseudocode Section 2 で再現は ADR-001 を mirror。
7. 統合ポイント
フレームワーク統合
このスキルは AGENTS.md で定義された behavioral フレームワーク内で操作。
Key 統合:
- Gate 2: Skill Advisor Hook (または
skill_advisor.pyフォールバック) 経由スキルルーティング - Tool ルーティング: AGENTS.md Section 6 決定木 per
- Memory: Spec Kit Memory MCP (
generate-context.js) 経由コンテキスト保持 - 検証: spec-folder ワークフロー用
bash .opencode/skills/system-spec-kit/scripts/spec/validate.sh
Tool 役割: Bash は CLI をディスパッチ。Read/Glob/Grep は出力を検証し ~/.opencode/state/ のセッションロック をプローブ。
8. 参考資料および関連リソース
ルータは参考資料、資産、スクリプトドキュメント を動的に検出。references/cli_reference.md、references/integration_patterns.md、assets/prompt_quality_card.md、assets/prompt_templates.md、references/agent_delegation.md、references/opencode_tools.md で開始。その後、references/ からタスク固有リソース、assets/ からテンプレート、present 時に scripts/ から自動化をロード。
関連スキル: cli-claude-code、cli-codex、cli-gemini for 兄弟クロスAIディスパッチ。system-spec-kit for ハンドバック。sk-code plus generated コード用の選択オーバーレイ。deep-research と deep-review for ループ実行。mcp-code-mode for MCP-backed ツール。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- MichelKerkmeester
- ライセンス
- MIT
- 最終更新
- 2026/5/12
Source: https://github.com/MichelKerkmeester/opencode--spec-kit-skilled-agent-orchestration / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。