/opsx:propose → apply → archive:跑完一輪完整的 OpenSpec 流程

/opsx:propose → apply → archive:跑完一輪完整的 OpenSpec 流程

5 min read

OpenSpec 的核心工作流就三個指令:/opsx:propose、/opsx:apply、/opsx:archive。聽起來很少,但這三步把「想做 → 說清楚 → 動手 → 歸檔」這條線串起來了。這篇拿「加深色模式」當範例,帶你走完一整輪。

第一步:/opsx:propose — 說清楚要做什麼

/opsx:propose add-dark-mode

這個指令做了什麼:AI 替你建立 openspec/changes/add-dark-mode/ 資料夾,然後生成四個 artifact:

openspec/changes/add-dark-mode/
├── proposal.md         ← 為什麼要做、範圍是什麼
├── specs/ui/spec.md    ← delta spec:哪些行為在改變
├── design.md           ← 技術方案
└── tasks.md            ← 實作清單

AI 通常會問你一些問題來幫助生成,例如:

  • 這個功能的動機是什麼?
  • 要支援 system preference(跟隨系統設定)嗎?
  • localStorage 要保存偏好嗎?

這裡是整個流程最重要的一步——你要花時間看 AI 生成的這四份文件,確認跟你想的一致。特別是 proposal.md 和 tasks.md,看到「哦不對」的地方直接說,讓 AI 修正,這時候改比實作完再改便宜太多。

確認沒問題了,繼續往下。

中場確認:看一下 tasks.md

/opsx:apply 之前,先打開 tasks.md 看一眼——這是 AI 等一下要按照執行的清單,你確認一下任務拆得對不對、有沒有漏掉什麼:

# Tasks
 
## 1. Theme Infrastructure
- [ ] 1.1 建立 ThemeContext 管理 light/dark state
- [ ] 1.2 加入 CSS custom properties
- [ ] 1.3 實作 localStorage 偏好保存
 
## 2. UI Components
- [ ] 2.1 建立 ThemeToggle 元件
- [ ] 2.2 加入設定頁面
- [ ] 2.3 在 Header 加入快速切換按鈕
 
## 3. Styling
- [ ] 3.1 定義 dark theme 色盤
- [ ] 3.2 更新元件改用 CSS variables

清單沒問題,下一步。

第二步:/opsx:apply — 動手實作

/opsx:apply

AI 按照 tasks.md 的清單一條一條執行,你會看到它打勾:

✓ 1.1 建立 ThemeContext with light/dark state
✓ 1.2 加入 CSS custom properties to globals.css
✓ 1.3 實作 localStorage persistence
✓ 2.1 建立 ThemeToggle 元件
✓ 2.2 加入設定頁面
...
All tasks complete!

實作過程中,如果 AI 發現原本的設計有問題——例如發現你的元件庫已經有 theme 機制,跟 tasks 裡規劃的方向衝突——直接跟它說,更新 design.md 或 tasks.md,然後繼續。OpenSpec 不鎖定你不能回頭改 artifact,這就是「流動而非剛性」的意思。

完成後,驗證一下

實作完,自己跑一下功能確認沒有問題——這不是 OpenSpec 強制要求的步驟,但是個好習慣,特別是功能稍微複雜的時候。

如果你啟用了進階工作流 profile,可以用:

/opsx:verify

讓 AI 比對實作結果跟 artifact 的規格是否一致,把明顯的漏網之魚抓出來。

第三步:/opsx:archive — 收尾歸檔

/opsx:archive

AI 把這個 change 做三件事:

  1. 合併 delta spec 進主 spec — changes/add-dark-mode/specs/ 裡的 ADDED/MODIFIED/REMOVED 規格,合併回 openspec/specs/ 對應的 spec.md
  2. 搬移 change 資料夾 — changes/add-dark-mode/ 移到 changes/archive/2026-04-01-add-dark-mode/
  3. 完成 — 主 spec 現在反映了最新狀態,可以開始下一個 change

這時候 openspec/specs/ui/spec.md 裡就多了「用戶可以切換 light/dark 主題」這條規格,未來有人要在這上面繼續修改,就有已有的 spec 可以參考和 delta。

整條流程一眼看清楚

/opsx:propose        →   確認 artifacts   →   /opsx:apply   →   驗證   →   /opsx:archive
    ↓                         ↓                    ↓                           ↓
建立 changes 資料夾      proposal/specs/         按 tasks.md            delta spec 合併
生成四份 artifact        design/tasks            一條一條做              進主 specs

如果想先探索、再 propose 呢

功能方向還沒想清楚,可以先用 /opsx:explore:

/opsx:explore 怎麼處理行動 App 的登入?

AI 會幫你調查現有的 codebase、比較幾種方案、討論取捨,但不建立任何 artifact。想清楚了再 /opsx:propose,這樣生成的 artifact 品質會更高。


流程跑通了,下一篇看真實場景——新功能、修 bug、舊專案怎麼加入 OpenSpec,各有一套對應的套路。

下一篇:真實場景怎麼用:新功能、修 bug、舊專案加入 OpenSpec