在調查現有程式碼與實作限制後,為重要的 Warp 功能撰寫 TECH.md 規格。當使用者要求與產品規格相關的技術規格、實作計畫或架構文件時使用。
write-tech-spec
為 Warp 中的重要功能撰寫 TECH.md 規格。
概述
技術規格應將產品意圖轉化為符合現有程式碼庫的實作計畫,記錄架構選擇,並讓代理人更容易執行、審查者更容易評估。
將規格寫入 specs/<id>/TECH.md,其中 <id> 為下列之一:
- Linear 票號(例如
specs/APP-1234/TECH.md) - GitHub issue ID,加上前綴
gh-(例如specs/gh-4567/TECH.md) - 簡短的 kebab-case 功能名稱(例如
specs/vertical-tabs-hover-sidecar/TECH.md)
若存在對應的 PRODUCT.md,請使用相同的 id。specs/ 目錄下應只包含以 id 命名的子目錄。
票號 / issue 參考為選填。如果使用者有 Linear 票或 GitHub issue,請使用其 id。如果沒有,請向他們詢問一個功能名稱作為目錄名稱。僅在使用者明確要求時才建立新的 Linear 票或 GitHub issue;在這種情況下,請分別使用 Linear MCP 工具或 gh CLI(若團隊、標籤或儲存庫不明確,則使用 ask_user_question)。
使用時機
當實作跨越多個模組、有重要的架構取捨,或審查者希望在看程式碼之前或同時看到計畫時,使用此技能。對於純 UI 變更或簡單的修正,通常不需要技術規格。
建議先有 PRODUCT.md,以便技術計畫能錨定在已確認的行為上。如果實作仍不確定,請先建立端到端原型,再根據學到的經驗撰寫技術規格。
撰寫前的研究
在起草前,請閱讀產品規格(如果有的話),檢查相關程式碼,並找出主要檔案、型別、資料流程與所有權邊界。不要猜測當前的架構,應直接檢查程式碼。
在規格中引用相關程式碼區塊時,建議使用 commit 固定的參考,以便未來讀者能檢查您研究時的確切程式碼。記錄您檢查的每個儲存庫的目前 commit SHA(例如 git rev-parse HEAD),並盡可能將檔案參考製作成 Markdown 連結,指向對應的 GitHub blob/<sha>/...#Lx-Ly URL。使用連結文字保持路徑在規格中可讀。
結構
必要章節:
-
Context — 正在建構什麼、目前系統在受影響區域的運作方式,以及最相關的檔案與行號參考。將「問題」、「現狀」和「相關程式碼」合併為一個有根據的章節。範例參考:
app/src/workspace/mod.rs:42 @ <commit-sha>— 使用者流程的進入點app/src/workspace/workspace.rs (120-220) @ <commit-sha>— 可能會變更的狀態與事件處理
請參考PRODUCT.md了解使用者可見的行為,而非重述。
-
Proposed changes — 實作計畫:哪些模組會變更、引入的新型別/API/狀態、資料流程、所有權邊界,以及設計如何遵循現有模式。當存在多個合理路徑時,請指出取捨。
-
Testing and validation — 如何根據產品行為驗證實作。負責所有關於證明功能正常的事項:單元測試、整合測試、手動步驟、截圖、影片以及其他驗證方式。直接參考
PRODUCT.md中的編號行為不變量,而非重述;每個重要的不變量應對應到具體的測試或驗證步驟。此章節是驗證的所在 —PRODUCT.md刻意不包含驗證章節。 -
Parallelization — 積極評估平行子代理人(透過
run_agents啟動)是否能有效減少實際時間或隔離工作。如果run_agents不可用,請跳過此章節。當規提議使用子代理人時,請為每個提議的代理人包含:- 簡短的名稱/角色及其擁有的子任務。
- 執行模式(
local或remote)與一行理由。 - 對於本地代理人:應使用的工作目錄或 git worktree,以避免平行代理人衝突到同一個 checkout 或檔案。
- 對於遠端代理人:要使用的環境,或明確說明代理人將在空環境中執行。
- 分支與 PR 策略:每個代理人工作的分支、每個代理人將使用的 worktree 路徑,以及他們的工作如何合併(每個代理人一個 PR、單一合併 PR 等)。
- 協調邊界:每個代理人擁有的檔案/服務,以及如何與同級代理人同步(訊息傳遞、合併點、驗證所有權)。
區分哪些步驟可以平行執行,哪些必須循序執行。當依賴圖較複雜時,考慮使用簡短的 Mermaid 圖表(
graph TD或flowchart LR),讓讀者一目了然看到扇出與合併點。當不建議平行化時,簡短說明為何沒有好處(例如任務很小,或子任務緊密耦合),以便審查者可以挑戰這個判斷。
為 worktree、分支名稱和執行模式提出具體的預設值,而非留空。
可選章節 — 僅在能增加資訊時才包含。如果內容為空,請省略標題;不要寫「無」作為佔位符。
- End-to-end flow — 僅在追蹤系統路徑能告訴您「Proposed changes」列表未提及的資訊時包含。
- Diagram — 僅在視覺化能比文字更快解釋設計時包含 Mermaid 圖表(資料流程、狀態轉換、跨層序列)。偏好一兩個重點圖表,而非裝飾性圖表。
- Risks and mitigations — 當存在真實的失敗模式、回歸、遷移問題或部署風險值得提出時包含。
- Follow-ups — 當有延遲清理或未來工作值得命名時包含。
長度建議
根據功能調整規格大小:
- 單一檔案變更且方法明確:跳過技術規格或保持在約 40 行以下。
- 多模組變更且有些模糊:目標約 80–150 行。
- 大型跨領域或架構新穎的變更:只要每個章節都有其價值,較長也沒問題。
如果 Context 和 Proposed changes 最終從不同角度描述相同的檔案和狀態,請合併它們。
寫作指引
- 將計畫建立在實際的程式碼庫結構和模式上。
- 將重要的程式碼參考固定到 commit SHA,並在儲存庫有可存取的遠端時連結到對應的 GitHub 行。
- 偏好具體的實作指引,而非泛泛的架構語言。
- 解釋為什麼提議的設計適合此儲存庫。
- 參考
PRODUCT.md了解行為,而非重述。 - 每個章節都應有其價值 — 如果某章節會重複其他章節或僅包含樣板內容,請省略它。
保持規格最新
已核准的規格可以在與實作相同的 PR 中交付。當模組邊界、實作順序、風險、驗證策略或部署假設變更時,請在相同 PR 中更新 TECH.md。簽入的規格應描述實際交付的實作。
對於大型功能,實作者可以選擇保留 DECISIONS.md 檔案,總結具體決策。當它有助於未來代理人時提供;否則跳過。
相關技能
implement-specswrite-product-specspec-driven-implementation






