OpenSpecの変更からタスクを実装します。
ストア選択: ユーザーがストア(このマシンに登録されているスタンドアロンのOpenSpecリポジトリ)を指定した場合、または作業がストア内にある場合は、openspec store list --json を実行して登録済みのストアIDを確認し、仕様や変更を読み書きするコマンド(new change、status、instructions、list、show、validate、archive、doctor、context)に --store <id> を渡します。その他のコマンドにはこのフラグは不要です。コマンドが出力するヒントには既にフラグが含まれているため、フォローアップでもそのまま使用してください。ストアがない場合、コマンドは最も近いローカルの openspec/ ルートに対して動作します。
入力: オプションで変更名を指定します。省略した場合は、会話のコンテキストから推測できるか確認します。曖昧または不明瞭な場合は、利用可能な変更をユーザーに問い合わせる必要があります。
手順
-
変更を選択
名前が指定された場合はそれを使用します。それ以外の場合は:
- ユーザーが変更について言及した場合は会話のコンテキストから推測
- アクティブな変更が1つだけの場合は自動選択
- 曖昧な場合は
openspec list --jsonを実行して利用可能な変更を取得し、AskUserQuestionツールを使用してユーザーに選択させます
常に「使用中の変更: 」と、上書き方法(例:
/opsx:apply <other>)を通知します。 -
ステータスを確認してスキーマを理解
openspec status --change "<name>" --jsonJSONを解析して以下を把握:
schemaName: 使用中のワークフロー(例: "spec-driven")planningHome、changeRoot、actionContext: 計画範囲と編集制約- どのアーティファクトにタスクが含まれているか(通常、spec-drivenの場合は "tasks"、その他のスキーマはstatusを確認)
-
適用指示を取得
openspec instructions apply --change "<name>" --jsonこれにより以下が返されます:
contextFiles: アーティファクトID -> 具体的なファイルパスの配列(スキーマによって異なります。proposal/specs/design/tasks または spec/tests/implementation/docs など)- 進捗(合計、完了、残り)
- ステータス付きのタスクリスト
- 現在の状態に基づく動的指示
状態の処理:
state: "blocked"(アーティファクト不足)の場合: メッセージを表示し、openspec-continue-change を提案state: "all_done"の場合: 祝福し、アーカイブを提案- それ以外: 実装に進む
-
コンテキストファイルを読み込む
適用指示の出力にある
contextFilesにリストされたすべてのファイルパスを読み込みます。 ファイルは使用中のスキーマによって異なります:- spec-driven: proposal、specs、design、tasks
- その他のスキーマ: CLI出力の contextFiles に従う
-
現在の進捗を表示
以下を表示:
- 使用中のスキーマ
- 進捗: "N/M タスク完了"
- 残りのタスク概要
- CLIからの動的指示
-
タスクを実装(完了またはブロックされるまでループ)
未処理のタスクごとに:
- どのタスクに取り組んでいるかを表示
- 必要なコード変更を実施
- 変更は最小限かつ集中的に保つ
- タスクファイル内でタスクを完了としてマーク:
- [ ]→- [x] - 次のタスクに進む
一時停止する条件:
- タスクが不明瞭 → 明確化を依頼
- 実装によって設計上の問題が明らかになった → アーティファクトの更新を提案
- エラーまたはブロッカーが発生 → 報告し、指示を待つ
- ユーザーが中断
-
完了時または一時停止時にステータスを表示
以下を表示:
- このセッションで完了したタスク
- 全体の進捗: "N/M タスク完了"
- すべて完了した場合: アーカイブを提案
- 一時停止した場合: 理由を説明し、指示を待つ
実装中の出力
## 実装中: <change-name>(スキーマ: <schema-name>)
タスク 3/7 に取り組み中: <タスクの説明>
[...実装中...]
✓ タスク完了
タスク 4/7 に取り組み中: <タスクの説明>
[...実装中...]
✓ タスク完了
完了時の出力
## 実装完了
**変更:** <change-name>
**スキーマ:** <schema-name>
**進捗:** 7/7 タスク完了 ✓
### このセッションで完了
- [x] タスク 1
- [x] タスク 2
...
すべてのタスクが完了しました。この変更をアーカイブする準備ができています。
一時停止時の出力(問題発生時)
## 実装一時停止
**変更:** <change-name>
**スキーマ:** <schema-name>
**進捗:** 4/7 タスク完了
### 発生した問題
<問題の説明>
**オプション:**
1. <オプション 1>
2. <オプション 2>
3. その他のアプローチ
どうしますか?
ガードレール
- 完了またはブロックされるまでタスクを続行
- 開始前に必ずコンテキストファイルを読み込む(適用指示の出力から)
- タスクが曖昧な場合は、実装前に一時停止して質問
- 実装によって問題が明らかになった場合は、一時停止してアーティファクトの更新を提案
- コード変更は各タスクにスコープされた最小限のものに保つ
- 各タスク完了直後にタスクのチェックボックスを更新
- エラー、ブロッカー、不明確な要件の場合は一時停止し、推測しない
- CLI出力の contextFiles を使用し、特定のファイル名を想定しない
流動的なワークフロー統合
このスキルは「変更に対するアクション」モデルをサポートします:
- いつでも呼び出し可能: すべてのアーティファクトが完了する前(タスクが存在する場合)、部分的実装後、他のアクションとインターリーブ
- アーティファクトの更新を許可: 実装によって設計上の問題が明らかになった場合、アーティファクトの更新を提案します。フェーズロックされておらず、流動的に作業します。