新しい変更を提案 - 変更を作成し、すべての成果物を1ステップで生成します。
変更と成果物を作成します:
- proposal.md (何を、なぜ)
- design.md (どのように)
- tasks.md (実装手順)
実装準備ができたら、/opsx:apply を実行
ストアの選択: ユーザーがストア(このマシンに登録されているスタンドアロンの OpenSpec リポジトリ)を指定した場合、または作業がストア内にある場合は、openspec store list --json を実行して登録済みのストア ID を検出し、仕様や変更を読み書きするコマンド(new change、status、instructions、list、show、validate、archive、doctor、context)に --store <id> を渡します。その他のコマンドはこのフラグを受け付けません。コマンドが出力するヒントには既にフラグが含まれているため、フォローアップでもそれを維持します。ストアがない場合、コマンドは最も近いローカルの openspec/ ルートに対して動作します。
入力: ユーザーのリクエストには、変更名(kebab-case)または構築したい内容の説明が含まれている必要があります。
手順
-
明確な入力がない場合、何を構築したいか尋ねる
AskUserQuestion ツール(オープンエンド、事前設定オプションなし)を使用して、次のように尋ねます:
"どのような変更に取り組みますか?構築または修正したい内容を説明してください。"
その説明から、kebab-case の名前を導き出します(例:"add user authentication" →
add-user-auth)。重要: ユーザーが何を構築したいかを理解するまでは先に進まないでください。
-
変更ディレクトリを作成
openspec new change "<name>"これにより、CLI が解決した計画ホーム(
.openspec.yamlに従う)にスキャフォールドされた変更が作成されます。 -
成果物のビルド順序を取得
openspec status --change "<name>" --jsonJSON を解析して以下を取得:
applyRequires: 実装前に必要な成果物 ID の配列(例:["tasks"])artifacts: すべての成果物とそのステータスおよび依存関係のリストplanningHome、changeRoot、artifactPaths、actionContext: パスとスコープのコンテキスト。これらをリポジトリローカルのパスと仮定せずに使用します。
-
適用準備が整うまで成果物を順次作成
TodoWrite ツールを使用して、成果物の進捗を追跡します。
依存関係の順序(未処理の依存関係がない成果物から)で成果物をループ処理:
a. 依存関係が満たされている
ready状態の各成果物について:- 指示を取得:
openspec instructions <artifact-id> --change "<name>" --json - 指示 JSON には以下が含まれます:
context: プロジェクトの背景(あなたへの制約 - 出力には含めない)rules: 成果物固有のルール(あなたへの制約 - 出力には含めない)template: 出力ファイルの構造として使用するものinstruction: この成果物タイプのスキーマ固有のガイダンスresolvedOutputPath: 成果物を書き込む解決済みのパスまたはパターンdependencies: コンテキストとして読み取る完了済みの成果物
- 完了した依存関係ファイルをコンテキストとして読み取る
templateを構造として使用し、resolvedOutputPathに成果物ファイルを作成contextとrulesは制約として適用するが、ファイルにはコピーしない- 簡潔な進捗を表示: "Created "
b.
applyRequiresのすべての成果物が完了するまで続行- 各成果物を作成した後、
openspec status --change "<name>" --jsonを再実行 applyRequires内のすべての成果物 ID が、アーティファクト配列内でstatus: "done"になっているか確認- すべての
applyRequires成果物が完了したら停止
c. 成果物がユーザーの入力を必要とする場合(コンテキストが不明瞭):
- AskUserQuestion ツールを使用して明確化
- その後、作成を続行
- 指示を取得:
-
最終ステータスを表示
openspec status --change "<name>"
出力
すべての成果物を完了した後、以下を要約:
- 変更名と場所
- 作成された成果物のリストと簡単な説明
- 準備状況: "すべての成果物が作成されました!実装の準備が整いました。"
- プロンプト: "
/opsx:applyを実行するか、実装を依頼してタスクの作業を開始してください。"
成果物作成ガイドライン
- 各成果物タイプについて、
openspec instructionsのinstructionフィールドに従う - スキーマが各成果物に含むべき内容を定義している - それに従う
- 新しい成果物を作成する前に、依存関係のある成果物をコンテキストとして読み取る
templateを出力ファイルの構造として使用し、そのセクションを埋める- 重要:
contextとrulesはあなたへの制約であり、ファイルの内容ではない<context>、<rules>、<project_context>ブロックを成果物にコピーしない- これらはあなたが何を書くかをガイドするものであり、出力に現れてはならない
ガードレール
- 実装に必要なすべての成果物を作成する(スキーマの
apply.requiresで定義されている通り) - 新しい成果物を作成する前に、常に依存関係のある成果物を読み取る
- コンテキストが著しく不明瞭な場合はユーザーに尋ねる - ただし、勢いを維持するために合理的な判断を優先する
- 同じ名前の変更が既に存在する場合は、それを続行するか新しく作成するかをユーザーに尋ねる
- 各成果物ファイルが書き込み後に存在することを確認してから次に進む