指令詳解
/opsx:propose 指令詳解
如何使用 /opsx:propose 一鍵建立變更計畫並生成所有規劃產物
指令用途
/opsx:propose 是啟動全新開發工作時最常使用的指令。它的作用是將一個模糊的開發想法(例如「修復登入閃退」或「新增商品評論功能」),在一個步驟中展開成結構化的變更計畫 (Change) 資料夾,並自動規劃與生成所有必要的規格與實作任務檔案。
此指令會引導 AI 助手在 openspec/changes/<change-name>/ 目錄下建立以下三個核心檔案:
proposal.md(提案):描述為什麼要改(Why)、改動內容(What)與不受影響範圍。design.md(設計方案):選填,描述技術實現方案與架構設計。tasks.md(任務清單):拆解出具體、可測試的實作步驟。
運作流程
- 解析輸入:指令後方的參數可以是一個簡單的描述(例如
/opsx:propose "新增購物車按鈕")或一個已經命名好的 Change 代號。若未提供參數,AI 會主動詢問。 - 建立目錄:執行
openspec new change "<name>"建立變更計畫資料夾。 - 分析狀態:透過
openspec status取得依賴關係,以確保文件以正確的順序生成。 - 生成產物:AI 依序調用指令生成並寫入
proposal.md、design.md與tasks.md,並為你生成本次變更專屬的規格增量(Spec Delta)。 - 提示實作:生成完畢後,提示開發者審查這些文件,並可執行
/opsx:apply進入實作。
實戰對話範例
以下是三個不同開發情境下的對話範例,展示 /opsx:propose 如何運作:
範例一:前端 UI 需求(新增深色模式)
- You:
/opsx:propose "為教學網站加上深色模式切換按鈕" - AI:
好的,我已為您建立變更計畫
add-dark-mode:- 建立 proposal.md: 規劃在右上角新增 Sun/Moon 圖示按鈕,儲存設定至
localStorage。 - 建立 design.md: 採用 Tailwind CSS 的
dark類別 (Class) 與 CSS 變數實作。 - 建立 tasks.md: 拆解出元件製作、切換邏輯與樣式套用等 4 個步驟。
所有規劃檔案已生成完畢!請執行
/opsx:apply開始實作。 - 建立 proposal.md: 規劃在右上角新增 Sun/Moon 圖示按鈕,儲存設定至
範例二:API 修改(新增訂單運送狀態欄位)
- You:
/opsx:propose "在訂單 API 增加 shipment_status 欄位" - AI:
好的,已建立變更計畫
add-order-shipment-status:- 建立 proposal.md: 修改
GET /api/orders回傳格式,加入shipment_status(枚舉值:processing, shipped, delivered)。 - 建立 specs/order-api/spec.md: 更新 API 規格書,新增一個關於回傳欄位與格式的驗收情境 (Scenario)。
- 建立 tasks.md: 包含修改資料庫 Model、API Serializer 及更新單元測試的任務。
計畫已建立!確認無誤後請使用
/opsx:apply執行修改。 - 建立 proposal.md: 修改
範例三:資料庫優化(為訂單建立時間加上索引)
- You:
/opsx:propose "為 orders 資料表的 created_at 欄位加上 index 以加速查詢" - AI:
好的,已建立變更計畫
add-orders-created-at-index:- 建立 proposal.md: 解決訂單分頁查詢緩慢的問題。
- 建立 design.md: 規劃遷移 (Migration) 腳本,使用並行建立索引 (
CREATE INDEX CONCURRENTLY) 避免鎖表。 - 建立 tasks.md: 任務包含產生 DB Migration 檔案、在 Staging 環境跑 Migration 並進行效能比對。
規劃檔案已備妥,請執行
/opsx:apply開始執行。