Skip to content

CLI リファレンス ​

OpenSpec CLI(openspec)は、プロジェクトのセットアップ、検証、ステータス確認、および管理のためのターミナルコマンドを提供します。これらのコマンドは、Commands に記載されている AI スラッシュコマンド(/opsx:propose など)を補完します。

サマリー ​

カテゴリコマンド目的
セットアップinit, updateプロジェクト内で OpenSpec を初期化および更新します
ストア(スタンドアロン OpenSpec リポジトリ)store setup, store register, store unregister, store remove, store list, store doctorストアの管理 — 登録したスタンドアロン OpenSpec リポジトリ
健全性doctor解決されたルートに関する関係の健全性を報告します
作業コンテキストcontext作業セット(ルート + 参照ストア)をアセンブルします
個人ワークセットworkset create, workset list, workset open, workset removeツール内で個人用のローカル作業ビューを保持および開きます
ブラウジングlist, view, show変更と仕様を探索します
検証validate変更と仕様の問題を確認します
ライフサイクルarchive完了した変更を確定します
ワークフローnew change, status, instructions, templates, schemasアーティファクト駆動のワークフローサポート
スキーマschema init, schema fork, schema validate, schema whichカスタムワークフローの作成および管理
設定config設定の表示および変更
ユーティリティfeedback, completionフィードバックとシェル統合

Human vs Agent Commands ​

ほとんどの CLI コマンドは、ターミナルでの人間による使用を前提に設計されています。一部のコマンドは、JSON 出力を通じてエージェント/スクリプトによる使用もサポートしています。

Human-Only Commands ​

これらのコマンドは対話式であり、ターミナルでの使用を前提としています。

CommandPurpose
openspec initプロジェクトの初期化(対話式プロンプト)
openspec view対話式ダッシュボード
openspec workset open <name>保存済みのワークセットを開く(エディタウィンドウまたはターミナルのエージェントセッション)
openspec config editエディタで設定を開く
openspec feedbackGitHub 経由でフィードバックを送信
openspec completion installシェル補完をインストール

Agent-Compatible Commands ​

これらのコマンドは、AI エージェントやスクリプトによるプログラム的な使用のために --json 出力をサポートしています。

CommandHuman UseAgent Use
openspec list変更/spec の閲覧--json で構造化データ
openspec show <item>コンテンツの読み取り--json でパース
openspec validate問題のチェック--all --json で一括バリデーション
openspec status成果物の進捗確認--json で構造化ステータス
openspec instructions次のステップの取得--json でエージェント向け指示
openspec templatesテンプレートパスの特定--json でパス解決
openspec schemas利用可能なスキーマのリスト表示--json でスキーマ探索; --store <id> で登録済みのルートを選択
openspec store setup <id>ローカルストアの作成と登録--json と明示的な入力値で構造化セットアップ出力
openspec store register <path>既存のストアを登録--json で構造化登録出力
openspec store unregister <id>ローカルストアの登録を削除--json で構造化クリーンアップ出力
openspec store remove <id>登録済みのローカルストアフォルダを削除--yes --json で非対話式削除
openspec store list登録済みのストアの閲覧--json で構造化登録情報
openspec store doctorローカルストアのセットアップ確認--json で構造化診断
openspec new change <id>リポジトリローカルの変更スキャフォールディングを作成--json、および --store <id> で登録済みのストアを OpenSpec ルートとして使用
openspec workset create [name]個人用ワークビューを構成--member <path> --json で非対話式構成
openspec workset list保存済みのワークセットの閲覧--json で構造化ビュー
openspec workset remove <name>保存済みのビューを削除--yes --json で非対話式削除

Global Options ​

これらのオプションはすべてのコマンドで動作します。

OptionDescription
--version, -Vバージョン番号を表示
--no-colorカラー出力を無効化
--help, -hコマンドのヘルプを表示

Setup Commands ​

openspec init ​

プロジェクトで OpenSpec を初期化します。フォルダ構造を作成し、AI ツールの統合を設定します。

デフォルトの動作はグローバル設定のデフォルト値を使用します: プロファイル core、デリバリー both、ワークフロー propose, explore, apply, update, sync, archive。

openspec init [path] [options]

--language <language> を使用すると、新しいプロジェクトの openspec/config.yaml に言語指示を追加できます。既存のプロジェクトでは、設定の context フィールドを編集して、OpenSpec がプロジェクト固有のガイダンスを上書きしないようにしてください。

Arguments:

ArgumentRequiredDescription
pathNoターゲットディレクトリ(デフォルト: 現在のディレクトリ)

Options:

OptionDescription
--tools <list>AI ツールを非対話式で設定。all、none、またはカンマ区切りのリストを使用
--language <language>新しい設定を作成する際に、この言語で成果物を書き出す
--forceプロンプトなしでレガシーファイルを自動クリーンアップ
--profile <profile>この init 実行時のグローバルプロファイルを上書き(core または custom)
--no-animationアニメーション付きのウェルカム画面の代わりに静的なウェルカム画面を表示
--copilot-cloudプロンプトなしで GitHub Copilot cloud coding-agent files をセットアップ
--no-copilot-cloudプロンプトなしで GitHub Copilot cloud coding-agent files をスキップ

--profile custom は、グローバル設定(openspec config profile)で現在選択されているワークフローを使用します。

ウェルカムアニメーションは、OPENSPEC_NO_ANIMATION 環境変数が設定されている場合(値は任意、空文字を含む)、NO_COLOR が空でない値に設定されている場合、または OS のモーション軽減設定が有効な場合(macOS Reduce Motion、GNOME アニメーション無効)にもスキップされます。

Supported tool IDs (--tools) — windsurf も devin のエイリアスとして受け付けられます: amazon-q, antigravity, auggie, bob, claude, cline, command-code, codeartsagent, codex, devin, forgecode, codebuddy, continue, costrict, crush, cursor, factory, gemini, github-copilot, hermes, iflow, junie, kilocode, kimi, kiro, lingma, minimax-code, vibe, oh-my-pi, opencode, pi, codeassistant, qoder, qwen, rovodev, roocode, trae, zed, zcode, agents

このリストは src/core/config.ts の AI_TOOLS と対応しています。各ツールのスキルとコマンドパスについては Supported Tools を参照してください。

Examples:

bash
# Interactive initialization
openspec init

# Initialize in a specific directory
openspec init ./my-project

# Non-interactive: configure for Claude and Cursor
openspec init --tools claude,cursor

# Non-interactive: configure global MiniMax Code skills
openspec init --tools minimax-code

# Configure for all supported tools
openspec init --tools all

# Override profile for this run
openspec init --profile core

# Skip prompts and auto-cleanup legacy files
openspec init --force

What it creates:

openspec/
├── specs/              # Your specifications (source of truth)
├── changes/            # Proposed changes
└── config.yaml         # Project configuration

.claude/skills/         # Claude Code skills (if claude selected)
.cursor/skills/         # Cursor skills (if cursor selected)
.cursor/commands/       # Cursor OPSX commands (if delivery includes commands)
.agents/skills/         # Shared skills for AGENTS.md-compatible tools (if agents selected)
... (other tool configs)

openspec update ​

CLI をアップグレードした後、OpenSpec の指示ファイルを更新します。現在のグローバルプロファイル、選択されたワークフロー、デリバリーモードを使用して、AI ツールの設定ファイルを再生成します。

openspec update [path] [options]

Arguments:

ArgumentRequiredDescription
pathNoターゲットディレクトリ(デフォルト: 現在のディレクトリ)

Options:

OptionDescription
--forceファイルが最新であっても強制更新

Example:

bash
# Update instruction files after npm upgrade
npm install -g @fission-ai/openspec@latest
openspec update

まずパッケージをアップグレードしてください。指示ファイルはインストールされた CLI によって生成されるため、古いインストールに対して openspec update を実行すると、すべて最新と報告され、新しいリリースに含まれるワークフローが追加されません。

これを可視化するために、openspec update は npm レジストリに新しい CLI が公開されていないか問い合わせます。あなたのバージョンが古い場合、アップグレードを提案します:

text
A newer OpenSpec CLI is available (v1.6.0 → v1.7.0).
  Running from: /usr/local/lib/node_modules/@fission-ai/openspec
? Upgrade to v1.7.0 now? (Y/n)

はいと答えると npm install -g @fission-ai/openspec@latest が実行され、新しい CLI で更新が再実行されるため、新しいワークフローが同じコマンド内で反映されます。アップグレードの確認は、npm の終了コードに頼らず、インストールされたバイナリにバージョンを問い合わせることで行われるため、PATH 上で別のインストールがまだ応答している場合は、成功を主張する代わりにそれを通知します。いいえと答えると、コマンドが表示され、現在の CLI で更新が行われます。Ctrl-C でコマンドを停止できます。

この提案は対話式ターミナルでのみ表示され、npm がインストールを管理している場合のみ表示されます — npm install -g が実際に修正できる唯一のケースです。それ以外のケースでは、インストール方法に応じたコマンドが表示されます:

How OpenSpec is installedWhat you get
Global npm installプロンプトが表示され、対話式ターミナルではアップグレードが実行されます — パイプ出力では表示されたコマンドが表示されます
Global pnpm, bun, yarn, or volta installそれぞれのマネージャーのコマンド: pnpm add -g …@latest, bun add -g …@latest, yarn global add …@latest, または volta install …@latest
A dependency of the projectパッケージマネージャーがロックファイルを管理しているため、依存関係の更新を促す通知
An npx / dlx cachenpx @fission-ai/openspec@latest update — そのコマンド自体が更新なので、第二段階は不要です
A git cloneなし — バージョンはブランチが示すものです

何かが表示される場合、実行中の CLI が読み込まれたディレクトリ名が示されます — アップグレードしたが古いシムがまだ PATH を占有している場合に確認すべきものです。

npm がエクスポートしている場合は npm_config_registry のレジストリに問い合わせ、それ以外の場合は https://registry.npmjs.org に問い合わせます。.npmrc は読み込まれません: ファイルの内容でアウトバウンドリクエストの先を選択させるフローは避けるべきであり、プロジェクトの .npmrc はリポジトリとともに移動するためです。プライベートミラーを使用する場合は npm_config_registry をエクスポートしてください — または OPENSPEC_NO_UPDATE_CHECK を設定してチェックを完全にスキップできます。チェックは CI が明示的なオフ値(false, 0, no, off, または空)以外に設定されている場合、NODE_ENV=test の下、OPENSPEC_NO_UPDATE_CHECK(値は任意)、DO_NOT_TRACK=1、または OPENSPEC_TELEMETRY=0 が設定されている場合にスキップされます。更新前に実行され、最大 1.5 秒遅延させる可能性があります — ネットワークがパケットをサイレントにドロップしてもその時点で諦め、レジストリに到達できない場合は静かに終了します。

How "up to date" is decided: スキルファイルには生成元のバージョンが記録されるため、OpenSpec はそれをインストールされた CLI と比較します。コマンドファイルにはバージョンスタンプがないため、コマンドはあるがスキルがないツール(デリバリー commands)については、OpenSpec はファイルの内容を現在生成されるものと比較します — これらのファイルへの編集はドリフトとみなされ、上書きされます。デリバリーが skills または both の場合、記録されたバージョンのみがチェックされるため、バージョンがまだ一致する手動編集されたファイルはそのままにされます; 書き直すには --force を使用してください。いずれにせよ、生成されたファイルは OpenSpec が所有するものです — 独自の指示は別の場所に保管してください。


Stores(スタンドアロン OpenSpec リポジトリ) ​

ベータ版。 Stores およびそれに基づいて構築された機能(references、working context、worksets)は新機能です。コマンド名、フラグ、ファイル形式、JSON 出力の構造はリリースごとに変わる可能性があります。問題起点のウォークスルーについては、stores ガイドを参照してください。

Store とは、このマシンに登録したスタンドアロンの OpenSpec リポジトリです。例えば、プランニング用リポジトリやコントラクト用リポジトリなどが該当します。Store を登録すると、--store <id> を渡すことで、通常のコマンド(list、show、status、validate、new change、archive など)をどこからでもその Store に対して実行できます。

openspec store setup ​

ローカル Store を作成して登録します。ターミナルで引数なしで実行すると、OpenSpec がユーザーにセットアップをガイドします。エージェントやスクリプトは明示的な入力値を渡し、--json を使用してください。

bash
openspec store setup [id] [options]

オプション:

オプション説明
--path <path>Store を配置するフォルダ(例:~/openspec/<id>)
--remote <url>正規のリモートを新しい Store の store.yaml に記録する
--init-git初期コミット付きで Git リポジトリを初期化する(デフォルト)
--no-init-gitすべての Git 操作をスキップする(init なし、初期コミットなし)
--jsonJSON を出力する

非対話実行(--json、スクリプト、エージェント)では、Store ID と --path の両方を渡す必要があります。対話的ターミナルでは、ユーザーが所有する目に見える場所(例:~/openspec/<id>)に編集可能な提案を提示して配置先を尋ねます。OpenSpec が管理するデータディレクトリをデフォルトにすることは決してありません。

例:

bash
openspec store setup
openspec store setup team-context
openspec store setup team-context --path ~/openspec/team-context --no-init-git
openspec store setup team-context --path ~/openspec/team-context --no-init-git --json

openspec store register ​

既存のローカル Store フォルダを登録します。Stores ベータ期間中、変更が存在する前、スペックが適用される前、変更がアーカイブされる前にルートが登録される場合があります。その場合、openspec/changes/、openspec/specs/、openspec/changes/archive/ は通常のコマンドがそれらを作成するまで存在しない可能性があります。store: <id> を宣言する設定専用のリポジトリは、別の Store へのポインターとして残り続けます。そのポインターが削除されない限り、Store ルートとして登録されません。

bash
openspec store register [path] [options]

オプション:

オプション説明
--id <id>Store ID。デフォルトは Store メタデータまたはフォルダ名
--yes健全な OpenSpec ルートに対して Store アイデンティティメタデータを作成することを確認する
--jsonJSON を出力する

openspec store unregister ​

ファイルを削除せずにローカル Store の登録を解除します。

bash
openspec store unregister <id> [--json]

Store が移動された場合、別の場所にクローンされた場合、またはこのマシン上で OpenSpec によって表示されなくなった場合に使用します。

openspec store remove ​

ローカル Store の登録を解除し、そのローカルフォルダを削除します。

bash
openspec store remove <id> [--yes] [--json]

remove は対話的ターミナルで削除前に正確なフォルダを表示します。エージェント、スクリプト、JSON 呼び出し元は削除を確認するために --yes を渡す必要があります。OpenSpec は、対応する Store メタデータが含まれていないフォルダの削除を拒否します。

openspec store list ​

ローカルに登録された Store を一覧表示します。

bash
openspec store list [--json]
openspec store ls [--json]

openspec store doctor ​

ローカル Store の登録状態、メタデータ、Git の存在を確認します。

bash
openspec store doctor [id] [--json]

Doctor は診断専用です。Store を変更することなく、欠落しているルート、メタデータの不一致、無効なローカルレジストリ状態を報告します。

プロジェクトから Store を参照する ​

プロジェクトリポジトリは、openspec/config.yaml で作業に使用する Store を宣言できます:

yaml
schema: spec-driven
references:
  - team-context

これ以降、そのリポジトリでの openspec instructions の出力(各成果物および apply サーフェス、JSON モードと人間向けモードの両方)には、参照された各 Store のスペックのインデックスが含まれます — スペック ID、各スペックの Purpose セクションからの1行サマリー、フェッチコマンド(openspec show <spec-id> --type spec --store <id>)です。インデックスは実行のたびに登録されたチェックアウトからライブで構築されます。スペックの内容は出力にコピーされません。

References は読み取り専用のコンテキストです。コマンドが作用する場所を変えることはありません。作業はリポジトリ自身のルートで行われ、参照された Store への書き込みは引き続き明示的な --store 操作が必要です。解決できない参照(例:このマシンに登録されていない Store)は、インデックス上で正確な修正方法付きの警告に格下げされ、instructions は引き続き生成されます。openspec doctor は参照の健全性を1箇所で報告します。

Store のクローン元を記録する ​

Store は、その正規のクローン元をコミットされたアイデンティティファイルに記録できます。これにより、オンボーディングが「Store を登録する」で途切れることはありません:

bash
openspec store setup team-context --path ~/openspec/team-context \
  --remote git@github.com:acme/team-context.git

リモートは初期コミット内の .openspec-store/store.yaml に記録されるため、すべてのクローンはそれを認識した状態で誕生します。既存の Store では、store.yaml を手動で編集してコミットしてください。store doctor は記録されたリモート(およびチェックアウトの観察された Git origin)を表示します。setup/register の共有ガイダンスではそれが名前付けされ、register はチェックアウトの origin をマシンローカルのレジストリに記録します。

参照宣言にもクローン元を含めることができます。これにより、まだ Store を持っていないチームメイトは完全で貼り付け可能な修正(git clone <remote> <path> && openspec store register <path> --id <id>)を得られます:

yaml
references:
  - { id: team-context, remote: "git@github.com:acme/team-context.git" }

リモートを記録することは同期ではありません。OpenSpec は決して独自にクローン、プル、プッシュしません。

デフォルト Store を宣言する ​

プランニングが完全に外部化されたリポジトリ(ローカルの openspec/specs/ や openspec/changes/ が存在しない)は、すべてのコマンドで --store を渡す代わりに、Store を一度宣言できます:

yaml
# openspec/config.yaml(openspec/ 配下の唯一のファイル)
store: team-context

これにより、通常のコマンドは宣言された Store に自動的に解決されます。ルートバナーと JSON の root ブロックは Store ID 付きで source: "declared" を報告し、表示されるヒントには引き続き --store <id> が含まれます。宣言はフォールバックであり、オーバーライドではありません。明示的な --store が常に優先され、実際のプランニングフォルダを持つディレクトリはポインターを無視します(警告付き)。ポインターリポジトリをローカルの OpenSpec ルートに変換するには、store: 行を削除し openspec init を実行してください — init は宣言が存在する間はスキャフォールドを拒否します。

マシンレベルのバリアントはすべてのリポジトリを一括でカバーします:openspec config set defaultStore <id>(Configuration を参照)。これは --store、ローカルルート、プロジェクトポインターのすべてが解決に失敗した後にのみ参照されます。その場合、ルートバナーと JSON の root ブロックは source: "global_default" を報告します。

ドクター(関係性の健全性) ​

読み取り専用の質問が1つ、場所が1つ:OpenSpecルートは健全か、そして参照しているストアはこのマシン上で利用可能か?

bash
openspec doctor [--store <id>] [--json]

レポートは、ルートの健全性、ストアメタデータの健全性(記録されたリモートとチェックアウトのオリジンが乖離している場合のメモ、およびストアのチェックアウトが最後にフェッチした上流の追跡参照より後方にずれている場合のメモを含む)、そして参照の健全性(診断が示すのと同じ指示で、未解決の参照に対するクローン修正を含む)を分けて示します。健全性の調査結果は重大度に関係なく終了コード0で終了します — エージェントはstatus配列を読み取ります。コマンドの失敗(ルートなし、不明なストア)のみ終了コード1で終了します。ドクターは決してクローン、同期、修復を行いません。組み立てられたセット自体を健全性ではなく取得するには、openspec contextを使用してください。

作業コンテキスト(組み立てられたセット) ​

この作業がOpenSpecの宣言を通じて関連するすべてのものを、1つの作業セットにまとめたもの:OpenSpecルートとそれが参照するストアです。

bash
openspec context [--store <id>] [--json] [--code-workspace <path> [--force]]

JSONの概要はエージェントが消費可能です(利用可能な各参照ストアにはそのフェッチ手順が含まれ、未解決のメンバーにはドクターが示すのと同じ修正指示が含まれます)。--code-workspaceはさらに、ルートと利用可能な参照ストア(ref:<id>フォルダ)を含むVS Codeワークスペースファイルを書き込みます — このコマンドが実行する唯一の書き込みであり、ファイルが存在する場合は--forceなしでは拒否されます。利用できないメンバーは報告され、推測されることはありません。

「作業コンテキスト」は組み立てられたセットを指します。openspec/config.yamlのcontext:フィールドは、指示に注入されるプロジェクトの背景情報です — これらは別物です。openspec doctorはセットが健全かどうかを答え、openspec contextはセットが何かを答えます。

個人用ワークセット ​

ベータ版。 ワークセットは新しいベータ版サーフェスの一部です。コマンド、フラグ、ファイル形式はリリース間で変更される可能性があります。チュートリアルについては、ストアガイドを参照してください。

ワークセットとは、一緒に作業するフォルダを個人用に名前を付けて表示したもので、プランニングルートと、選択したその他のものを含み、自分のマシン上に保持され、ツール内で名前を指定して再度開きます。これは純粋にローカルなものです。コミットされることも、共有されることも、宣言から導出されることもなく、削除してもメンバーフォルダに影響を与えることはありません。

bash
openspec workset create [name] [--member <path> | --member <name>=<path>]... [--tool <id>] [--json]
openspec workset list [--json]
openspec workset open <name> [--tool <id>]
openspec workset remove <name> [--yes] [--json]

createは短いガイド付きフローを実行します(または--memberフラグを非対話的に受け取ります。最初のメンバーがプライマリで、セッションはそこから開始されます)。openは選択したツールを起動します。エディタ(VS Code、Cursor)はすべてのメンバーを含むウィンドウを開いて戻ります。CLIエージェント(Claude Code、codex)はこのターミナルを、すべてのメンバーが接続されプロンプトが事前入力されていないセッションとして引き継ぎ、終了時に終了します。開く時点でメンバーフォルダが存在しない場合は、メモ付きでスキップされ、残りは開きます。保存されたツールの設定は、--toolを使用して開くごとに上書きできます。

新しいツールのサポートは設定であり、コードではありません。すべてのツールは2つの起動スタイルのいずれかです — workspace-file(生成された.code-workspaceで起動)またはattach-dirs(メンバーごとに1つのアタッチフラグ)— そしてグローバルconfig.json(openspec config editで開く)のopenersキーは、フィールドごとにツールを追加したり内蔵ツールを調整したりします:

json
{
  "openers": {
    "zed": { "style": "workspace-file" },
    "claude": { "attach_flag": "--dir" }
  }
}

すべてのワークセット状態は、グローバルデータディレクトリのworksets/フォルダの下に置かれます(保存されたビューと生成された<name>.code-workspaceファイルを含み、開くたびに再生成されます)。そのフォルダを削除すると、すべての痕跡が除去されます。


閲覧コマンド ​

openspec list ​

プロジェクト内の変更またはスペックを一覧表示します。

openspec list [options]

オプション:

オプション説明
--specs変更の代わりにスペックを一覧表示
--changes変更を一覧表示(デフォルト)
--sort <order>recent(デフォルト)またはnameで並べ替え
--jsonJSONとして出力

例:

bash
# すべてのアクティブな変更を一覧表示
openspec list

# すべてのスペックを一覧表示
openspec list --specs

# スクリプト用のJSON出力
openspec list --json

出力(テキスト):

Changes:
  add-dark-mode     No tasks      just now

openspec view ​

スペックと変更を探索するための対話型ダッシュボードを表示します。

openspec view

プロジェクトの仕様と変更をナビゲートするためのターミナルベースのインターフェースを開きます。


openspec show ​

変更またはスペックの詳細を表示します。

openspec show [item-name] [options]

引数:

引数必須説明
item-nameいいえ変更またはスペックの名前(省略時はプロンプトが表示されます)

オプション:

オプション説明
--type <type>タイプを指定:changeまたはspec(曖昧でない場合は自動検出)
--jsonJSONとして出力
--no-interactiveプロンプトを無効化

変更固有のオプション:

オプション説明
--deltas-onlyデルタスペックのみを表示(JSONモード)

スペック固有のオプション:

オプション説明
--requirements要件のみを表示、シナリオを除外(JSONモード)
--no-scenariosシナリオコンテンツを除外(JSONモード)
-r, --requirement <id>1ベースのインデックスで特定の要件を表示(JSONモード)

例:

bash
# 対話型選択
openspec show

# 特定の変更を表示
openspec show add-dark-mode

# 特定のスペックを表示
openspec show auth --type spec

# 解析用のJSON出力
openspec show add-dark-mode --json

Validation Commands ​

openspec validate ​

変更と仕様を構造的な問題に対して検証し、変更の MODIFIED 要件が置き換えるメイン仕様に対してチェックします。

openspec validate [item-name] [options]

仕様デルタがゼロの変更は、.openspec.yaml で skip_specs: true を宣言していない限り検証に失敗します(純粋なリファクタリング、ツール、またはドキュメント作業向け — Recipe 5 を参照)。

引数:

引数必須説明
item-nameいいえ検証する特定の商品(省略時はプロンプトが表示されます)

オプション:

オプション説明
--allすべての変更と仕様を検証します
--changesすべての変更を検証します
--specsすべての仕様を検証します
--archivedアーカイブされた変更のすべてのタスクが完了していることを検証します(pre-commit リント用)
--type <type>名前が曖昧な場合のタイプを指定します: change または spec
--strict厳格な検証モードを有効にします
--jsonJSON 形式で出力します
--concurrency <n>最大並列検証数(デフォルト: 6、または OPENSPEC_CONCURRENCY 環境変数)
--no-interactiveプロンプトを無効にします

--archived は独自のスコープです: 仕様デルタの検証は行いません(アーカイブ時にすでに適用済み)、changes/archive/ 配下のすべての変更の tasks.md のチェックボックスがすべてチェックされていることを確認し、未チェックがある場合は非ゼロで終了します。これにより、未完了の作業が残ったままアーカイブされた変更を検出できます — pre-commit フックで便利です。

例:

bash
# インタラクティブな検証
openspec validate

# 特定の変更を検証
openspec validate add-dark-mode

# すべての変更を検証
openspec validate --changes

# JSON 出力ですべてを検証(CI/スクリプト用)
openspec validate --all --json

# 並列度を上げて厳格な検証
openspec validate --all --strict --concurrency 12

# アーカイブされた変更で未チェックのタスクがある場合に失敗
openspec validate --archived

出力(テキスト):

Validating add-dark-mode...
  ✓ proposal.md valid
  ✓ specs/ui/spec.md valid
  ⚠ design.md: missing "Technical Approach" section

1 warning found

出力(JSON):

json
{
  "version": "1.0.0",
  "results": {
    "changes": [
      {
        "name": "add-dark-mode",
        "valid": true,
        "warnings": ["design.md: missing 'Technical Approach' section"]
      }
    ]
  },
  "summary": {
    "total": 1,
    "valid": 1,
    "invalid": 0
  }
}

Lifecycle Commands ​

openspec archive ​

完了した変更をアーカイブし、デルタ仕様をメイン仕様にマージします。

openspec archive [change-name] [options]

引数:

引数必須説明
change-nameいいえアーカイブする変更(省略時はプロンプトが表示されます。プロンプトに応答できない場合は必須です)

オプション:

オプション説明
-y, --yes確認プロンプトをスキップします。プロンプトに応答できない場合(AI エージェント、CI ジョブ、または stdin が閉じられている実行)に必須です
--skip-specs1 回のアーカイブ実行で仕様更新をスキップします。永続的に仕様デルタを持たない変更は、代わりに .openspec.yaml で skip_specs: true を宣言すべきです — フラグなしでアーカイブされます
--no-validate検証をスキップします(確認が必要)。また、capability の廃止も無効になります — 検証結果がないため、何も廃止されません

例:

bash
# インタラクティブなアーカイブ(どの変更か尋ね、確認します)
openspec archive

# 特定の変更をアーカイブ
openspec archive add-dark-mode

# プロンプトなしでアーカイブ(エージェント、CI、スクリプト)
openspec archive add-dark-mode --yes

# 仕様に影響しないツール変更をアーカイブ
openspec archive update-ci-config --skip-specs

capability を廃止する: 変更メタデータに廃止マーカーを追加します:

yaml
# openspec/changes/retire-legacy/.openspec.yaml
schema: spec-driven
retire_capabilities: true

その後、通常どおり変更をアーカイブします:

bash
openspec archive retire-legacy --yes

変更が capability の最後の要件を削除する場合、OpenSpec はそのライブ spec.md を削除します。同じ変更内の他の capability デルタは引き続きメイン仕様を更新します。マーカーがない場合、アーカイブはファイルを変更する前に停止し、マーカーを追加するよう指示します。

実行内容:

  1. 変更を検証します(--no-validate 指定時は除く)
  2. 確認をプロンプトします(--yes 指定時は除く)
  3. メイン仕様を変更する前に、アーカイブ先を確保します
  4. アクティブなデルタ仕様を検証し、openspec/specs/ にマージします — 変更が最後の要件を削除する capability は廃止され、その仕様ファイルは削除されますが、これは変更の .openspec.yaml が schema: の隣に retire_capabilities: true を宣言した場合のみです
  5. 変更フォルダを openspec/changes/archive/YYYY-MM-DD-<name>/ に移動します
  6. 完全なアーカイブが確保される前に仕様変更または最終移動が失敗した場合、仕様を復元し、変更をアクティブなパスに留めまたは戻します
  7. 検証済みのフォールバックコピーが完了したがステージングソースのクリーンアップが失敗した場合、完全なアーカイブとコミット済みの仕様状態を復旧のために保持します

ターミナルなしの場合: AI エージェント、CI ジョブ、または stdin が閉じられている実行はステップ 2 に応答できないため、アーカイブは何も触らずに停止し、終了コード 1 で終了し、再実行するコマンドを指定します — openspec archive <name> --yes(渡した他のフラグも引き継ぎます)。往復をスキップするには、最初から --yes(および変更名)を渡してください。


ワークフローコマンド ​

これらのコマンドは、アーティファクト駆動のOPSXワークフローをサポートします。人間が進捗を確認する場合と、エージェントが次のステップを判断する場合の両方に役立ちます。

openspec new change ​

解決されたOpenSpecルートに変更ディレクトリとオプションのチェックインメタデータを作成します。

bash
openspec new change <name> [options]

変更名には小文字のケバブケースを使用する必要があります。小文字、数字、単一のハイフンが使用できます。スペース、アンダースコア、大文字、連続するハイフン、先頭・末尾のハイフンは使用できません。先頭の数字は許可されているため、順序付けや階層化のために名前の前に数字を付けることができます。例:100-add-featureや00001-add-auth。

オプション:

オプション説明
--description <text>index.mdに追加する説明
--goal <text>変更とともに保存するオプションの目標メタデータ
--schema <name>使用するワークフロースキーマ
--store <id>OpenSpecルートとして使用するストアID(登録したスタンドアロンのOpenSpecリポジトリ)
--jsonJSONで出力

例:

bash
openspec new change add-billing-api
openspec new change add-billing-api --store team-context --json

openspec status ​

変更のアーティファクト完了状況を表示します。

openspec status [options]

オプション:

オプション説明
--change <id>変更名(省略時はプロンプト)
--schema <name>スキーマの上書き(変更の設定から自動検出)
--jsonJSONとして出力

例:

bash
# 対話的な状況確認
openspec status

# 特定の変更の状況
openspec status --change add-dark-mode

# エージェント用のJSON
openspec status --change add-dark-mode --json

出力 (テキスト):

Change: add-dark-mode
Schema: spec-driven
Progress: 2/4 artifacts complete

[x] proposal
[x] specs
[ ] design
[-] tasks (blocked by: design)

skip_specs: trueを宣言する変更では、スペックステージが[~] specs (skipped: change declares skip_specs)と表示され、進捗カウントから除外されます。

出力 (JSON):

json
{
  "changeName": "add-dark-mode",
  "schemaName": "spec-driven",
  "isPlanningComplete": false,
  "isComplete": false,
  "applyRequires": ["tasks"],
  "artifacts": [
    {"id": "proposal", "outputPath": "proposal.md", "status": "done", "requires": []},
    {"id": "specs", "outputPath": "specs/**/*.md", "status": "done", "requires": ["proposal"]},
    {"id": "design", "outputPath": "design.md", "status": "ready", "requires": ["proposal"]},
    {"id": "tasks", "outputPath": "tasks.md", "status": "blocked", "requires": ["specs", "design"], "missingDeps": ["design"]}
  ]
}

isPlanningCompleteは、スキップされていないすべての計画アーティファクトが存在するかどうかを報告します。スキップされたアーティファクトは作成されなくても満たされたものとして扱われます。実装タスクが完了しているかどうかは報告しません。isCompleteは互換性のためのエイリアスであり、同じ値を持ちます。

アーティファクトは依存関係の順序で一覧表示されます。依存先がそれを必要とするものよりも後に現れることはありません。同時に準備完了となるアーティファクト(spec-drivenのspecsとdesignはどちらもproposalのみが必要)は、アルファベット順ではなくスキーマが宣言する順序を維持します。したがって、最初のreadyエントリが次に作成すべきアーティファクトです。


openspec instructions ​

アーティファクトの作成またはタスクの適用のための拡張指示を取得します。AIエージェントが次に何を作成すべきかを理解するために使用されます。

openspec instructions [artifact] [options]

引数:

引数必須説明
artifactNoアーティファクトID、またはワークフローの入力サーフェス: apply または archive

オプション:

オプション説明
--change <id>変更名(非対話モードでは必須)
--schema <name>スキーマの上書き
--jsonJSONとして出力

特別なケース: applyを使用するとタスクの実装指示を取得します。archiveを使用すると、有効な変更の現在の読み取り専用アーカイブ入力(contextとoperationGuidance)を取得します。アーカイブや変更は行いません。

例:

bash
# 次のアーティファクトの指示を取得
openspec instructions --change add-dark-mode

# 特定のアーティファクトの指示を取得
openspec instructions design --change add-dark-mode

# 適用/実装指示を取得
openspec instructions apply --change add-dark-mode

# アーカイブせずに現在のアーカイブ操作入力を取得
openspec instructions archive --change add-dark-mode --json

# エージェントが利用するJSON
openspec instructions design --change add-dark-mode --json

出力には以下が含まれます:

  • アーティファクトのテンプレート内容
  • 設定からのプロジェクトコンテキスト
  • 依存アーティファクトの内容
  • 設定からのアーティファクトごとのルール
  • apply/archive用の現在のプロジェクトコンテキストと一致する操作ガイダンス

操作入力は呼び出しのたびに解決されたリポジトリまたは選択されたストアから読み取られます。プロジェクトコンテキストは必須のプロンプトレベルの入力です。エージェントはそれを読み取り、関連するプロジェクトの事実、慣習、制約を適用します。操作ガイダンスは任意の追加的な助言です。エージェントはすべてのエントリを考慮し、適用可能で組み込みワークフローと互換性のあるエントリのみに従います。どちらのフィールドも、明示的なユーザー選択、CLIで制御される状態、組み込み指示、アーティファクトルールとは独立しています。競合するコンテキストは報告され、競合するまたは適用できないガイダンスは従わず、その理由が説明されます。これらは生成されたエージェントに対する動作上の契約であり、CLIで強制されるチェックではありません。instructions archiveは選択された変更、オプションの入力、ルートメタデータのみを返し、静的なアーカイブワークフローは含みません。

skip_specs: trueによってスキップされたアーティファクトの場合、出力は警告のみです(JSONではskipped/warningフィールドが追加されます)。そのアーティファクトを作成してはいけません。


openspec templates ​

スキーマ内の全アーティファクトの解決済みテンプレートパスを表示します。

openspec templates [options]

オプション:

オプション説明
--schema <name>調査するスキーマ(デフォルト: spec-driven)
--jsonJSONとして出力

例:

bash
# デフォルトスキーマのテンプレートパスを表示
openspec templates

# カスタムスキーマのテンプレートを表示
openspec templates --schema my-workflow

# プログラムで使用するJSON
openspec templates --json

出力 (テキスト):

スキーマ: spec-driven

テンプレート:
  proposal  → ~/.openspec/schemas/spec-driven/templates/proposal.md
  specs     → ~/.openspec/schemas/spec-driven/templates/specs.md
  design    → ~/.openspec/schemas/spec-driven/templates/design.md
  tasks     → ~/.openspec/schemas/spec-driven/templates/tasks.md

openspec schemas ​

利用可能なワークフロースキーマを説明とアーティファクトフローとともに一覧表示します。

openspec schemas [options]

オプション:

オプション説明
--jsonJSONとして出力
--store <id>OpenSpecルートとして登録済みストアを使用

例:

bash
openspec schemas

出力:

利用可能なスキーマ:

  spec-driven (package)
    デフォルトの仕様駆動開発ワークフロー
    フロー: proposal → specs → design → tasks

  my-custom (project)
    このプロジェクトのカスタムワークフロー
    フロー: research → proposal → tasks

スキーマコマンド ​

カスタムワークフロースキーマの作成と管理に関するコマンド。

openspec schema init ​

新しいプロジェクトローカルのスキーマを作成します。

openspec schema init <name> [options]

引数:

引数必須説明
nameはいスキーマ名(kebab-case)

オプション:

オプション説明
--description <text>スキーマの説明
--artifacts <list>カンマ区切りのアーティファクトID(デフォルト: proposal,specs,design,tasks)
--defaultプロジェクトのデフォルトスキーマとして設定
--no-defaultデフォルトとして設定するか確認しない
--force既存のスキーマを上書き
--jsonJSON形式で出力

例:

bash
# インタラクティブなスキーマ作成
openspec schema init research-first

# 特定のアーティファクトを指定して非インタラクティブに実行
openspec schema init rapid \
  --description "Rapid iteration workflow" \
  --artifacts "proposal,tasks" \
  --default

作成されるもの:

openspec/schemas/<name>/
├── schema.yaml           # スキーマ定義
└── templates/
    ├── proposal.md       # 各アーティファクト用のテンプレート
    ├── specs.md
    ├── design.md
    └── tasks.md

openspec schema fork ​

既存のスキーマをコピーして、プロジェクト内でカスタマイズできるようにします。

openspec schema fork <source> [name] [options]

引数:

引数必須説明
sourceはいコピーするスキーマ
nameいいえ新しいスキーマ名(デフォルト: <source>-custom)

オプション:

オプション説明
--force既存の宛先を上書き
--jsonJSON形式で出力

例:

bash
# 組み込みの spec-driven スキーマをフォーク
openspec schema fork spec-driven my-workflow

openspec schema validate ​

スキーマの構造とテンプレートを検証します。

openspec schema validate [name] [options]

引数:

引数必須説明
nameいいえ検証対象のスキーマ(省略するとすべて検証)

オプション:

オプション説明
--verbose詳細な検証ステップを表示
--jsonJSON形式で出力

例:

bash
# 特定のスキーマを検証
openspec schema validate my-workflow

# すべてのスキーマを検証
openspec schema validate

openspec schema which ​

スキーマがどこから解決されるかを表示します(優先順位のデバッグに有用)。

openspec schema which [name] [options]

引数:

引数必須説明
nameいいえスキーマ名

オプション:

オプション説明
--allソースを含むすべてのスキーマを一覧表示
--jsonJSON形式で出力

例:

bash
# スキーマのソースを確認
openspec schema which spec-driven

出力:

spec-driven resolves from: package
  Source: /usr/local/lib/node_modules/@fission-ai/openspec/schemas/spec-driven

スキーマの優先順位:

  1. プロジェクト: openspec/schemas/<name>/
  2. ユーザー: ~/.local/share/openspec/schemas/<name>/
  3. パッケージ: 組み込みスキーマ

設定コマンド ​

openspec config ​

グローバルな OpenSpec 設定を表示および変更します。

openspec config <subcommand> [options]

サブコマンド:

サブコマンド説明
path設定ファイルの場所を表示
list現在のすべての設定を表示
get <key>特定の値を取得
set <key> <value>値を設定
unset <key>キーを削除
resetデフォルトに戻す
edit$EDITOR で開く
profile [preset]ワークフロープロファイルをインタラクティブに、またはプリセットで構成

例:

bash
# 設定ファイルのパスを表示
openspec config path

# すべての設定を一覧表示
openspec config list

# 特定の値を取得
openspec config get telemetry.enabled

# 値を設定(匿名の使用状況テレメトリを無効化)
openspec config set telemetry.enabled false

# 文字列値を明示的に設定
openspec config set user.name "My Name" --string

# カスタム設定を削除
openspec config unset user.name

# マシンレベルのデフォルトストアを設定(--store、ローカルルート、またはプロジェクトストアのポインターが解決されない場合のフォールバックルート)
openspec config set defaultStore team-plans

# すべての設定をリセット
openspec config reset --all --yes

# エディターで設定を編集
openspec config edit

# アクションベースのウィザードでプロファイルを構成
openspec config profile

# 高速プリセット:ワークフローを core に切り替え(delivery モードは保持)
openspec config profile core

テレメトリのオプトアウト: telemetry.enabled は未設定の場合、デフォルトでオンになっています(オプトアウトモデル)。 匿名の使用状況統計と openspec update のバージョンチェックを無効にするには、これを false に設定してください。 環境変数は設定より優先されます:OPENSPEC_TELEMETRY=0、DO_NOT_TRACK=1、 そして真値を持つ CI 値(例:true/1/yes)は、設定値に関係なく常にテレメトリを無効にします。

openspec config profile は現在の状態の要約から始まり、以下の選択を促します:

  • delivery とワークフローの変更
  • delivery のみ変更
  • ワークフローのみ変更
  • 現在の設定を維持(終了)

現在の設定を維持する場合、変更は保存されず、更新プロンプトも表示されません。 設定に変更がない場合でも、現在のプロジェクトファイルがグローバルプロファイル/delivery と同期していない場合、OpenSpec は警告を表示し、openspec update を提案します。 Ctrl+C を押すと、クリーンにフローがキャンセルされ(スタックトレースなし)、コード 130 で終了します。 ワークフローチェックリストでは、[x] はグローバル設定でワークフローが選択されていることを意味します。これらの選択をプロジェクトファイルに適用するには、openspec update を実行するか(プロジェクト内でプロンプトが表示された場合は Apply changes to this project now? を選択)、該当するオプションを選択します。

インタラクティブ例:

bash
# delivery のみの更新
openspec config profile
# 選択: Change delivery only
# delivery の選択: Skills only

# ワークフローのみの更新
openspec config profile
# 選択: Change workflows only
# チェックリストでワークフローを切り替え、確認

ユーティリティコマンド ​

openspec feedback ​

OpenSpec に関するフィードバックを送信します。GitHub イシューを作成します。

openspec feedback <message> [options]

引数:

引数必須説明
messageはいフィードバックの要約;長いテキストはイシュータイトルでは短縮され、本文にはそのまま保持されます

オプション:

オプション説明
--body <text>要約の後に含まれる追加の詳細

要件: GitHub CLI (gh) がインストールされ、認証されている必要があります。

例:

bash
openspec feedback "Add support for custom artifact types" \
  --body "I'd like to define my own artifact types beyond the built-in ones."

openspec completion ​

OpenSpec CLI のシェルスクリプト補完を管理します。

openspec completion <subcommand> [shell]

サブコマンド:

サブコマンド説明
generate [shell]補完スクリプトを stdout に出力
install [shell]シェルに対して補完をインストール
uninstall [shell]インストールされた補完を削除

サポートされているシェル: bash, zsh, fish, powershell

例:

bash
# 補完をインストール(シェルを自動検出)
openspec completion install

# 特定のシェルに対してインストール
openspec completion install zsh

# 手動インストール用のスクリプトを生成(bash)
openspec completion generate bash > ~/.bash_completion.d/openspec

# アンインストール
openspec completion uninstall

Windows (PowerShell): 現在の PowerShell ホストに対して補完をインストールします:

powershell
$env:PROFILE = $PROFILE
openspec completion install powershell
. $PROFILE

$env:PROFILE は、このセッションでどのプロファイルを構成すべきかを OpenSpec に伝えます。 インストーラーは不足しているプロファイルディレクトリを作成し、OpenSpecCompletion.ps1 をロードする管理ブロックを追加します。プロファイルを再読み込みすると、即座に補完が有効になります。

現在のホストからアンインストールするには、以下を実行します:

powershell
$env:PROFILE = $PROFILE
openspec completion uninstall powershell

アンインストール後は、現在のセッションから補完をクリアするために PowerShell を再起動してください。

補完はオプトインです。CLI は対話型ターミナルでコマンドを初めて実行した際に一度だけ stderr に通知し、それ以降は沈黙します(すでに補完がインストールされている場合も同様です)。OPENSPEC_NO_COMPLETIONS=1 を設定すると、そのヒント全体を抑制できます。


終了コード ​

コード意味
0成功
1エラー(検証失敗、ファイル欠落など)

環境変数 ​

変数説明
OPENSPEC_TELEMETRY0 に設定すると、テレメトリと openspec update のバージョンチェックが無効になります(グローバル設定の telemetry.enabled を上書き)
DO_NOT_TRACK1 に設定すると、テレメトリと openspec update のバージョンチェックが無効になります(標準的な DNT シグナル;設定を上書き)
OPENSPEC_CONCURRENCYバルク検証のデフォルトの並列数(デフォルト: 6)
EDITOR または VISUALopenspec config edit で使用するエディター
NO_COLOR設定するとカラー出力が無効になります
OPENSPEC_NO_ANIMATION設定すると、openspec init のウェルカムアニメーションが無効になります
OPENSPEC_NO_COMPLETIONS1 に設定すると、シェル補完に関する一回限りのヒントが抑制されます
OPENSPEC_NO_UPDATE_CHECK設定すると、新しい公開済み CLI に対する openspec update チェックが無効になります(空値を含む任意の値)。CI が設定されている場合(false/0/no/off 以外の場合)または NODE_ENV=test の場合もスキップされます
npm_config_registryopenspec update のバージョンチェックが問い合わせるレジストリ。http(s) URL である必要があり、そうでない場合は https://registry.npmjs.org にフォールバックします。.npmrc ファイルは読み込まれません

関連ドキュメント ​

  • Commands - AI スラッシュコマンド(/opsx:propose、/opsx:apply など)
  • Workflows - 一般的なパターンと、各コマンドを使用すべきタイミング
  • Customization - カスタムスキーマとテンプレートの作成
  • Getting Started - 初回セットアップガイド