| name | issue-spec-prep |
| description | 在 branch-ticket-issue-doc 已於所選開發工作區建立 docs/issues/<ticket-id>.md、且 Codex 需要建立或更新 docs/issues/specs/<ticket-id>.md 作為該 issue 的實作 spec 時使用此 skill;先讀 issue 文件,僅在必要時檢視程式碼,且不實作程式碼變更。 |
Issue Spec Prep
在 branch-ticket-issue-doc 之後使用此 skill。
目標:從 issue 文件與當前 worktree 的程式碼脈絡,建立或更新 docs/issues/specs/<ticket-id>.md。
在此處不要變更產品程式碼。在此處不要執行實作重構。
前置條件
- 確認當前目錄是
ticket-id-dev-prep 所選的開發工作區。
- 從使用者輸入、分支名稱或既有 issue 文件解析 ticket id。
- 先讀取
docs/issues/<ticket-id>.md。
- 若 issue 文件缺失,停下並先執行
branch-ticket-issue-doc。
- 若
docs/issues/specs/ 不存在則建立。
工作流程
- 讀取
docs/issues/<ticket-id>.md。
- 擷取:
- 問題陳述
- 預期與實際行為
- 受影響的流程
- 已知事實、推論與待解問題
- 只檢視足以讓 spec 可執行的程式碼:
- 可能的檔案或模組
- 當前邏輯邊界
- 既有測試或缺漏的測試面
- 共用工具或重複的流程
- agy 優先策略:收集完 issue doc 內容與程式碼觀察後,優先委派 antigravity-cli(
agy)生成 spec 文件本文:
- (Fallback)自行撰寫並建立或更新
docs/issues/specs/<ticket-id>.md,依照 Spec Template。
- 讓 acceptance criteria 保持可測試。
- 讓 open questions 保持可見;不要把未知項目轉成需求。
- 在實作前停下。
檔案命名
使用:
docs/issues/specs/<TICKET-ID>-<description-suffix>.md
其中 <description-suffix> 取自當前分支名稱的最後一段路徑,並移除開頭的 ticket id 部分。
範例:
- Branch:
fix/202605/BUG-2362-some-feature-fix
- 最後一段:
BUG-2362-some-feature-fix
- Description suffix:
some-feature-fix
- 檔案:
docs/issues/specs/BUG-2362-some-feature-fix.md
執行以下指令解析 suffix:
git rev-parse --abbrev-ref HEAD | sed 's|.*/||' | sed 's/^[A-Z][A-Z]*-[0-9]*-//'
保留 ticket id 的大小寫。
Spec Template
使用此結構:
# <TICKET-ID> Spec
## 背景
## 目標
## 非目標
## 目前行為
## 目標行為
## 修正策略
## 影響範圍
### Affected Files / Modules
## Acceptance Criteria
## Test Plan
### Automated
### Manual
## Regression Risk
## Open Questions
偏好簡短、具體的條列。
Spec 規則
- 需求以 issue 文件為依據。
- 利用程式碼檢視來提升可行性,而非發明產品意圖。
- 只在已檢視或有強烈跡象時提及確切檔案。
- Acceptance criteria 必須描述可觀察的行為。
- Test plan 應指明可能的 unit、widget、bloc、integration 或 manual 檢查。
- 若某個 open question 會阻塞實作,明確說明。
輸出規則
偏好的輸出:
Spec:建立或更新的路徑
依據:issue 文件路徑與已檢視的程式碼脈絡
修正方向:簡短摘要
測試重點
阻塞:僅當 open questions 阻塞實作時
Next:只有在沒有阻塞性問題殘留時,實作才能開始
風格規則
- 主要語言:
zh-tw
- 保留必要的
en-us 技術術語,例如 Acceptance Criteria、Test Plan、API、UI、Widget、Bloc
- 保持精簡且聚焦於 spec