概述
OpenSpec v1.16.0(2026-10-30 23:38 UTC 發布,台灣時間 2026-10-31 07:38)的官方摘要聚焦三件事:從 openspec.dev 安裝、validate 抓出更多規格(Spec)錯誤,並為 npm 安裝訂出新的 Node.js 下限。這版也帶來一個 Breaking Change:npm 安裝需要 Node.js 22.12.0 以上。
Breaking:npm 安裝需 Node.js 22.12.0 以上
Node 20 已於 2026 年 4 月 30 日終止支援(end-of-life)。因此 v1.16.0 起,npm 安裝需要 Node.js 22.12.0 或更新版本。
兩個不受影響的安裝方式:
- 獨立執行檔(standalone binary)——v1.15.0 起的預設安裝方式,不使用 Node。
- Homebrew——安裝並管理它自己的 Node。
無法升級 Node 時,官方建議改用獨立執行檔:
curl -fsSL https://openspec.dev/cli/install.sh | sh
Windows 使用 PowerShell:
irm https://openspec.dev/cli/install.ps1 | iex
從 openspec.dev 安裝
安裝入口移到 openspec.dev 網域,指令同上(macOS/Linux 用 curl、Windows 用 irm)。另一個變化:release 檔案改為 .tar.gz 壓縮檔(Windows 為 .zip)。
Scenario 步驟檢查
openspec validate 現在會在 Scenario: 缺少 WHEN/GIVEN 步驟或缺少 THEN 步驟時提出警告(warning),檢查範圍涵蓋 change deltas(變更差異)與主 specs。一般 validate 與 archive 行為不變;--strict 對這種情況失敗。
Store 建議
當某個指令找不到 OpenSpec root,而你已註冊 stores(儲存庫)時,錯誤訊息會指出 id 與你 repo 的 origin 名稱相符的 store,並附上選用它所需的 --store 旗標與 store: 行。
它只提建議——絕不替你選擇 store。
修復
- 無效的
config.yaml:openspec/config.yaml無法讀取或不是有效 YAML 時,openspec validate改以 exit 1 結束——過去會照樣通過,而其中每一條規則都被忽略。其他指令仍然只警告並繼續。 ZDOTDIR下的 zsh completion:openspec completion install zsh在ZDOTDIR是絕對路徑時,改寫入$ZDOTDIR/.zshrc——zsh 實際讀取的檔案。如果你的 completion 一直沒有生效,重新執行一次安裝即可。completion uninstall zsh也會清理早期安裝留在~/.zshrc的區塊。- 行內 code fence:以三個反引號行內程式碼開頭的行(如
npm test)不再開啟幽靈 code fence(phantom code fence)而遮住其後的每個需求。 - 無空格標題:主 spec 需求寫成
###Requirement:(冒號前無空格)時,validate現在會回報重複或錯置的需求,與archive的讀法一致。
既有使用者影響
- npm 安裝的使用者:確認 Node.js 在 22.12.0 以上,或改用獨立執行檔(Homebrew 用戶不受影響)。
- CI 中跑
validate --strict的專案:缺少 WHEN/GIVEN 或 THEN 步驟的Scenario:現在會讓 strict 失敗——補齊步驟即可。 - config.yaml 曾經損壞的專案:
validate從此誠實失敗,不再默默忽略其中的規則。
互動測驗
v1.16.0 起,用 npm 安裝 OpenSpec 的 Node.js 下限是?
💡 想先看個提示?
注意題目問的是「npm 安裝」——其他安裝方式另有安排。
`openspec validate`(不帶 `--strict`)遇到缺少 WHEN/GIVEN 或 THEN 步驟的 `Scenario:` 時,預設行為是?
💡 想先看個提示?
記住 OpenSpec 的警告模型:警告不改變一般模式的判定,但 strict 會把它升級為失敗。
升級檢查清單
升級 v1.16.0:動手檢查清單
逐項勾選,確認你已完成升級必要的步驟(進度會保存在此瀏覽器)