## 前置作業 1. 安裝 node 版本 >= 20.19.0,因 OpenSpec CLI 需要。 ``` nvm install 20.19.0 ``` 預期會看到以下內容 ``` v20.19.0 is already installed. ``` 2. 檢查版本是否切換成 20.19.0 ``` node --version ``` 如果安裝後版本沒有切換成 20.19.0,執行`nvm use 20.19.0`切換版本 預期會看到以下內容 ``` Now using node v20.19.0 (npm v10.8.2) ``` 3. 安裝 Codex CLI 或是 Claude Code CLI ``` brew install --cask codex brew install --cask claude-code ``` 安裝好後確認是否成功 ``` codex --version claude --version ``` 進入 CLI ``` codex claude ``` ## Codex 版本 先說流程,它會根據你的需求產生 Proposal(提案),有完整的規格文件 (proposal → specs → design → tasks),接著可以根據這個 Proposal 去 Apply(應用),讓 AI 根據每個步驟去撰寫程式碼,最後完成後將剛剛的提案 Archive(歸檔)存成專案文件。 1. 初始化 openspec ``` openspec init ``` 在初始化時可選擇多個工具,這邊選擇 Claude Code、Codex,按下 Enter 後會看到專案跟目錄建立了`.claude`、`.codex`兩個資料夾。 ![截圖 2026-02-27 10.02.52](https://hackmd.io/_uploads/S1O8oOCuWx.png) 初始化時,會一併建立預設的 .codex/skills/openspec-* 裡面的 SKILL.md,可以調整內容讓 codex 參考你修改的內容執行。 輸入`/skills -> list skills -> openspec-explore`後會開始一系列定義方向。 ![截圖 2026-02-27 10.18.30](https://hackmd.io/_uploads/SJG-yFR_bg.png) 這邊再實作過程中發現`/prompts:opsx-explore`指令和`/skills -> list skills -> openspec-explore`是有些微差異的! `/prompts:opsx-explore`:在 Codex CLI 裡調用自訂提示檔案的方式,這些提示檔放在 ~/.codex/prompts/ 目錄裡,內容是你預先寫好的 Markdown 類型提示,用來快速重用某些常見任務指令,例如放一個`opsx-explore.md`檔案,然後在 Codex 裡輸入`/opsx-explore`就會把該提示發送給模型。 這和傳統意義上的 reusable prompt 很像,但它是客製化提示而非 Skill。 `/skills -> list skills -> openspec-explore`:是比單純提示更結構化、重用性更強的工作流程或技能包,在 Codex 中,Skills 是一種包含名稱、描述、行為指令及可能的腳本/支持資源的技能包。 它可以讓模型根據任務內容自動選擇是否啟用或可以用 $skillName 類似方式手動調用。 openspec-explore 這種 Skill 通常會有完整的 SKILL.md,不是單純一段提示。 Skills 通常有更清楚的觸發條件與流程定義和支援更複雜的工作流程,而不只是直接把一段提示塞進模型上下文。 基本上用`openspec-propose`產生變更內容`proposal/design/tasks/.openspec.yaml` 都會是在規格內。 - .openspec.yaml -> 記錄這個 change 的基本設定與 schema。 - proposal.md -> 說明 why(為何要做) and what(要做什麼)。 - design.md -> 說明該 how(怎麼做)。 - tasks.md -> 執行任務。 - spec.md -> 這次 change 的規格,是 apply 前最重要的行為。 可以用以下方式判斷該在什麼時候修改什麼檔案: - 需求/測試條件錯:改 spec.md - 邏輯不對:改 design.md - 任務拆分:改 tasks.md - 範圍改變:改 proposal.md 最常修改的應該是`spec.md`、`tasks.md`。 確認規格檔案都生成好後接著執行`/skills -> $openspec-apply-change`指令,就會開始按照先前所產出的規格實作。 最後當所有的 task 完成後就可以操作`$openspec-archive-change`進行歸檔。 流程可以理解為: openspec-explore -> openspec-propose -> openspec-apply-change -> openspec-archive-change。 `openspec-explore` -> 需求不明確時使用。 `openspec-propose` -> 需求明確時可直接從這步開始。 `openspec-apply-change` -> 可重複執行很多次直到 tasks 全部完成才進 archive。 `openspec-archive-change` -> 將處理完成的任務內容進行歸檔。 - 需求明確:propose -> apply -> archive。 - 需求不明確:explore -> propose -> apply -> archive。 在進行`explore`或`propose`階段時,會在`openspec/changes`層級產生 artifacts,如果發現內容規格不正確可以在這步驟自行調整規格內容,確認沒問題後再進行`apply(應用)`,最後`archive(歸檔)`。 ## Claude Code 版本