コンテンツにスキップ

OpenSpec モード

仕様モードに対応する Chorus プラグインは、提案をどの形式で作成するか(仕様モード)を自動的に決定します。OpenSpec モードは 3 つの仕様モードの 1 つで、作業中のリポジトリで OpenSpec が使えるときは常に既定になります。このモードでも AI-DLC ワークフローはいつも通りに動きますが、自由形式の Markdown を Chorus に直接打ち込むのではなく、エージェントが openspec CLI でディスク上に構造化ファイルを書き、それらを 提案の文書ドラフトへミラーします。ディスク上のファイルが作業コピーで、Chorus のドラフトはレビュー担当者が 提案ページで読む忠実なミラーです。

モードエージェントが書くものどんなときに選ばれるか
openspecopenspec/changes/<slug>/ 下の構造化ファイル。ドラフトへミラーされるOpenSpec が使えるときの既定
lite.chorus/specs/<slug>/ 下の Chorus 独自の軽量仕様OpenSpec が使えないときの既定
off自由形式のドラフト。ローカルの仕様ファイルは一切書かない明示的に指定したときだけ

仕様モードに対応する 6 つのプラグインは同じ解決規則を使いますが、解決のタイミングと確認方法が異なります。

実行環境解決時点と確認方法
Claude Code、Codex、Kiro、Piセッション開始時(Kiro はエージェント起動時)に解決し、注入された ## Spec Mode コンテキストに結果を記載します。
dshプラグインの読み込み時に解決し、最初のエージェントステップで ## Spec Mode を注入します。
OpenClawステージスキルの仕様モード手順に到達した時点で同梱リゾルバーを実行します。セッション開始時に仕様モードのコンテキストは追加されません。/chorus spec または /chorus status で確認できます。

例えば OpenSpec と解決された場合は CHORUS_SPEC_MODE=openspec と表示されます。 接続の通知が表示されたかどうかでモードを推測しないでください。

優先順位の高い順に次のとおりです。

  1. 明示的な CHORUS_SPEC_MODE が最優先。 openspec、lite、off のいずれかを設定すれば、 シェル単位・リポジトリ単位・CI ジョブ単位でモードを固定できます。
  2. 設定がなければ、OpenSpec が使えるときは OpenSpec が既定。 使えるとは次の 3 つがすべて成立することです。 リポジトリのルートに openspec/ ディレクトリがある(openspec init が作成)、openspec CLI が PATH にある、そして OpenSpec が無効化されていない(別のモードを選ぶを参照)。
  3. それ以外は lite。 Chorus 独自のフォールバックで、何もインストールせずに使えます。

OpenSpec が使えない場所で CHORUS_SPEC_MODE=openspec を固定した場合、要求したモードを使えないことをセッションが報告し、 ワークフローは黙って別の形式で作成を進めるのではなく停止します。

原因を解消する(CLI をインストールする、openspec init を実行する、OpenSpec を再度有効にする)か、 使えるモードを選んでください。指定したモードが自動的に別のモードへ切り替わることはありません。

認識できない CHORUS_SPEC_MODE の値は未設定として扱い、その理由を表示します。上記 3 つの正確な値を 使ってください。スタンドアロンのスキル配布物には仕様モードのルーティングがなく、引き続き自由形式の文書を書きます。

OpenSpec は Fission AI 製の Node CLI です。まずグローバルにインストールし、次にエージェントが提案を作成する リポジトリで初期化します。

Terminal window
npm install -g @fission-ai/openspec
openspec init

openspec init は openspec/ 作業ディレクトリ(changes/、specs/、設定と説明ファイル)を作成します。 開始時に解決する環境ではセッションを再起動し、dsh ではプラグインを再読み込みしてください。OpenClaw は次の 仕様モード手順で再解決します。解決するプロセスから openspec/ ディレクトリと CLI の両方が見える必要があります。

プラグインのインストールはエージェントプラットフォームを参照してください。

モードが有効な間、proposal、develop、yolo の各スキルは kebab-case のスラッグでディスク上に変更を作成し、 3 種類のファイルを Chorus 提案の文書ドラフトへミラーします。

  • PRD:openspec/changes/<slug>/proposal.md
  • 技術設計:openspec/changes/<slug>/design.md
  • 仕様(能力ごとに 1 つ):openspec/changes/<slug>/specs/<capability>/spec.md

openspec/changes/<slug>/tasks.md はミラーされません。Chorus の課題ドラフトが課題の唯一の正本で あるため、OpenSpec の課題リストはディスク上に残されます。

後の実行が変更を復元できるよう、提案の説明には正確な 1 行が付きます。

OpenSpec change slug: <slug>

ミラーはバイト単位で元のファイルと同一です。プラグインは各ファイルのバイト列をそのままドラフトへ流し込み、モデルに内容を 打ち直させないため、ローカルファイルと Chorus ドラフトは同一に保たれます。これを自分で実行することは ありません。プラグインのスキルが、ネイティブ MCP クライアント chorus mcp call <tool> --arg-file content=<file> を使って処理し、chorus CLI が PATH にないときにのみ、従来の chorus-api.sh / chorus-mcp-call.sh ラッパーにフォールバックします。厳密な仕様(エラー時の停止ルールと承認後の再同期)は、プラグインのスキル定義に 記載されています。

openspec archive を実行するタイミング

Section titled “openspec archive を実行するタイミング”

openspec archive は変更の一番最後まで先送りされます。変更の最後の課題が検証された後、エージェントは 実行環境のフック通知またはスキルの手順に従って実行します。

Terminal window
openspec archive <slug>

アーカイブは変更を openspec/changes/ から移し、その仕様デルタを openspec/specs/ 下の長期仕様へ マージします。その後プラグインは、更新された openspec/specs/<capability>/spec.md ファイルを、対応する Chorus 文書へ逆方向にミラーします。それまでは変更は進行中のままで、Chorus はデルタ仕様しか目にしないため、 半端にマージされた状態を考える必要はありません。

切り替え方法は 3 つあり、優先順位の高い順に次のとおりです。

  1. CHORUS_SPEC_MODE(すべての実行環境)。避けたいものを述べるのではなく、欲しいモードを直接 名指しする最も素直な指定方法です。

    Terminal window
    export CHORUS_SPEC_MODE=lite # Chorus 独自のローカル仕様
    export CHORUS_SPEC_MODE=off # 自由形式。ローカルの仕様ファイルなし
  2. enableOpenSpec userConfig トグル(Claude Code プラグインのみ、既定でオン)。プラグインの インストール設定でこれをオフにすると、アーカイブのリマインダーを含め、プラグイン全体で OpenSpec を 使えない状態にできます。

  3. CHORUS_OPENSPEC_MODE=off 環境変数(すべての実行環境)。シェル単位で効く従来からの OpenSpec オプトアウトで、現在も有効です。

    Terminal window
    export CHORUS_OPENSPEC_MODE=off

後の 2 つは OpenSpec を使えない状態にするだけなので、セッションは 自由形式ではなく lite に落ち着きます。ローカルの仕様ファイルを一切作りたくないなら、明示的に off を 指定してください。いずれの場合も、ディスク上の既存の openspec/ ディレクトリはそのまま残され、新しい 提案に OpenSpec のスラッグ行が加わることもありません。

  • トリガー。 proposal、develop、yolo は実行環境が解決した CHORUS_SPEC_MODE を使います。 ## Spec Mode が注入されていればそれを読みます。OpenClaw は仕様モード手順ごとに同梱リゾルバーを 実行します。他の環境で注入がない場合は、そのスキルの代替手順に従ってください。文章から解決規則を 自作してはいけません。CHORUS_OPENSPEC_ACTIVE=1 は OpenSpec が使用可能であることを示します。モードが lite なら spec-lite に従い、off ならインラインで作成します。明示的な openspec を満たせない場合は停止し、フォールバックしません。 最後の課題の検証後は、実行環境のフックまたはスキルに従って openspec archive <slug> を実行します。 すべての環境に PostToolUse があるとは仮定しないでください。
  • 制約。 文書ドラフトのミラー呼び出しはすべて、chorus mcp call <tool> '<json>' --arg-file content=<file> (ネイティブ MCP クライアント)を通し、ファイルのバイト列をそのままストリームする必要があります。 chorus が PATH にないときにのみ、従来の chorus-api.sh mcp-tool / chorus-mcp-call.sh ラッパーに フォールバックします。文書の内容を決してインラインで打ち直さず、エラーがあれば停止します。 tasks.md はミラーしないでください。提案の説明には正確な OpenSpec change slug: <slug> の 1 行を 付ける必要があります。モードが openspec でないときは、openspec/changes/ をスキャフォールドせず、 スラッグ行も加えないでください。スタンドアロンのスキル配布物は仕様モードをサポートしません。