コンテンツにスキップ

OpenSpec モード

OpenSpec モードは、Claude Code と Codex 上の Chorus プラグインにおける任意の編集スタイルです。有効な間も AI-DLC ワークフローはいつも通りに動きますが、提案の編集の形が変わります。 自由形式の Markdown を Chorus に直接打ち込むのではなく、エージェントが openspec CLI でディスク上に構造化ファイルを書き、それらを 提案の文書ドラフトへミラーします。ディスク上のファイルが作業コピーで、Chorus のドラフトはレビュー担当が 提案ページで読む忠実なミラーです。

OpenSpec が存在しないときは何も変わりません — プラグインは従来どおり自由形式のドラフトを編集します。 OpenSpec モードは Claude Code と Codex のプラグインにのみ同梱され、スタンドアロンのスキル配布物では サポートされません。

検出はセッション開始時に一度だけ走ります。OpenSpec モードがオンになるには、以下の3 つの信号がすべて 成立する必要があります。

  1. CHORUS_OPENSPEC_MODEoff に設定されていない — 明示的なオプトアウトは常に優先されます。
  2. リポジトリのルートに openspec/ ディレクトリが存在する — 「このリポジトリは OpenSpec を使う」という 信号で、openspec init によって作成されます。
  3. openspec CLI が PATH にある — このモードは変更のスキャフォールド・検証・アーカイブに CLI を必要と するため、ディレクトリだけでは足りません。

3 つとも成立すると、接続トーストがモードのオンを報告します。

Chorus connected at <your Chorus URL> (OpenSpec Enabled)

openspec/ ディレクトリは存在するが CLI が見つからない場合、トーストは代わりにインストールのヒントを 表示し、エージェントは自由形式の経路にとどまります。

Chorus connected at <your Chorus URL> (OpenSpec repo detected — install with: npm i -g @fission-ai/openspec)

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

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

openspec initopenspec/ 作業ディレクトリ(changes/specs/、設定と説明ファイル)を作成します。 その後、検出が新しい 2 つの信号 — openspec/ ディレクトリと CLI — を拾えるよう、エージェントの セッションを再起動してください。

プラグイン自体のインストールは、実行時ごとに Claude CodeCodex のページで扱っています。

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

ディスク上のファイルミラー先の文書
openspec/changes/<slug>/proposal.mdPRD
openspec/changes/<slug>/design.md技術設計
openspec/changes/<slug>/specs/<capability>/spec.md仕様(能力ごとに 1 つ)

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 ラッパーにフォールバックします。厳密な契約(そのエラー時停止ルールと承認後の再同期)は、ここで再掲する のではなく権威ある情報源に記載されています。docs/OPENSPEC_MODE.md とプラグインスキル public/chorus-plugin/skills/openspec-aware/SKILL.md を参照してください。

openspec archive は変更の一番最後まで先送りされます。変更の最後の課題が検証された後、プラグインは エージェントに次の実行を促します。

Terminal window
openspec archive <slug>

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

2 つのスイッチ、優先順位の順に。

  1. enableOpenSpec userConfig トグル(Claude Code プラグインのみ、既定でオン)。プラグインの インストール設定でこれをオフにすると、アーカイブのリマインダーを含め、プラグイン全体でモードを無効に できます。これは OpenSpec が未インストールなのと同等です。

  2. CHORUS_OPENSPEC_MODE=off 環境変数(両方のプラグイン)。シェル単位で効く、CI にやさしい オプトアウトです。openspec/ ディレクトリと CLI の両方が存在しても、自由形式モードを強制します。

    Terminal window
    export CHORUS_OPENSPEC_MODE=off

Codex プラグインには userConfig の面がないため、そこでは環境変数だけが効きます。どちらの方法でオプト アウトしても、ディスク上の既存の openspec/ ディレクトリはそのまま残され、新しい提案にスラッグ行が 加わることもありません。挙動は OpenSpec が未インストールのホストと完全に同じです。

  • トリガー。 proposal、develop、yolo の各スキルは、SessionStart コンテキストの ## OpenSpec Mode セクションから CHORUS_OPENSPEC_ACTIVE を読み、それに応じて分岐します — 再検出はしません。 CHORUS_OPENSPEC_ACTIVE=1 のときはディスク上で編集してミラーし、0 のときは自由形式の経路をたどります。 変更の最後の課題が検証された後、PostToolUse フックが openspec archive <slug> のリマインダーを 注入します。
  • 制約。 文書ドラフトのミラー呼び出しはすべて、chorus mcp call <tool> '<json>' --arg-file content=<file> (ネイティブ MCP クライアント)を通し、ファイルのバイト列をそのままストリームする必要があります。 chorusPATH にないときにのみ、従来の chorus-api.sh mcp-tool / chorus-mcp-call.sh ラッパーに フォールバックします。文書の内容をインラインで打ち直しては決してならず、エラーがあれば停止します。 tasks.md はミラーしないでください。提案の説明には正確な OpenSpec change slug: <slug> の 1 行を 付ける必要があります。モードがオフのときは、openspec/changes/ をスキャフォールドせず、スラッグ行も 加えないでください。スタンドアロンの public/skill/ 配布物は OpenSpec モードをサポートしません。
  • 出典。 docs/OPENSPEC_MODE.md(ユーザー向けの概要と検出の契約)、 public/chorus-plugin/skills/openspec-aware/SKILL.md(Claude Code の権威あるスキル)、および plugins/chorus/skills/openspec-aware/SKILL.md(Codex の権威あるスキル)。