初始化規格驅動文件基礎層
建立專案的共享知識庫——這個層級同時供人類與代理閱讀——以便規格套件的其他部分(spec-create、spec-execute)有地方可以寫入。安全且僅新增:不會刪除任何東西,草稿在確認前皆為「推斷中」,擁有者批准後才成為權威。
解析目標結構(先學習、再設定檔、最後預設)——絕不強加
- 首先從專案學習。 如果儲存庫已有文件結構(
docs/、Documentation/、文件規則、同級功能文件),採用它——先搜尋,讀取兩個同級文件,模仿而非發明。成熟的現有結構優先於預設結構;不要重整已經運作良好的結構。 - 設定檔在路徑不明確時固定路徑:
specs_dir、features_dir、rules_dir、decisions_dir、spec_grouping。 - 全新專案預設 = AI-first 文件樹(請參閱
references/docs-tree.md):docs/包含model.md、glossary.md、rules/R-NNN-*.md、features/<feature>.md、specs/NNN-<feature>/{requirements,plan,tasks}.md、decisions/NNNN-*.md、architecture/、guides/、_inbox/。
分層模型(此技能所屬)
依其對代理的約束強度排序:代理執行可執行的檢查比遵循散文更可靠。
- L A - 可執行約束(lint/邊界/合約測試設定檔、
tests/):最強。此處不涵蓋——請另行設定。 - L B - 機器可讀規則與架構知識(以合約形式存在的規則
rules/R-NNN、依賴圖、決策記錄)。spec-init 搭建這些文件的骨架;代理進入路由器(AGENTS.md)由同步引擎負責——此技能僅確保它指向文件樹,絕不覆寫它。 - L C - 共享知識庫(模型、詞彙表、功能文件、規格、架構、指南)。spec-init 搭建並初始化種子資料。
步驟
- 盤點現有文件:每一個
*.md、Wiki 匯出、圖表、散落的筆記。將它們分類為模型/詞彙表/功能行為/流程/決策/架構/指南/未分類。 - 搭建解析後的樹狀結構——僅建立缺少的部分(資料夾 + 一份
docs/README.md索引)。絕不覆寫現有文件。 - 安全遷移——先隔離。 將所有既有的、未分類的或舊有內容移動到
_inbox/(隔離區),這樣只有新結構才被視為權威,然後一次一個項目進行重新分類,並經由擁有者審查:「某功能如何運作」的筆記 ->features/、流程圖 ->architecture/diagrams/、決策 ->decisions/。不刪除任何東西;重新分類是一次一個,絕不大量自動進行。 - 從程式碼草擬核心文件,標記為
confirmed/inferred:從型別和欄位名稱推導領域模型(model.md)和詞彙表(glossary.md);從程式碼當前的實際行為 + EARS 驗收條件推導功能行為基線(features/);從實際匯入關係推導依賴圖;推導程式碼已強制執行的候選編號業務規則(rules/R-NNN)。 - 套用命名原則。 文件根目錄下的所有內容使用小寫
kebab-case;有序系列使用補零前綴(NNNN-ADR、NNN-規格);一個概念一個名稱,無同義詞。唯一的大寫檔案是根目錄下的AGENTS.md和README.md(外部標準要求這些名稱)。 - 擁有者閘門。 呈現搭建好的樹狀結構、
_inbox/中待重新分類的內容,以及草擬的文件。在擁有者確認每份草稿之前,沒有任何內容是權威;在此之前所有內容都維持「推斷中」。
驗證
- 解析後的樹狀結構存在;索引列出它;每個既有檔案要嘛已重新分類,要嘛位於
_inbox/中(無一遺失);每份草擬的文件都標記了 confirmed/inferred;AGENTS.md未被覆寫。
範圍/交接
- 在搭建好的
specs/內建立變更規格——由spec-create負責。 - L A - 可執行約束(lint、邊界、合約測試)——不在此範圍;請另行設定。
- 事後保持文件與程式碼同步——由
spec-audit-docs負責。
關鍵注意事項
- 絕不刪除或覆寫現有文件——先隔離到
_inbox/,一次一個重新分類,由擁有者審查。 - 絕不將預設樹強加於運作中的專案結構——先學習並採用。
- 在輸出中誠實說明限制:這僅固定了程式碼中已有的結構。存在於設定檔、資料庫列或執行時期註冊的擴充功能中的業務規則,對靜態草擬是不可見的——請為它們標記功能測試或逐步移入程式碼;絕不虛構程式碼未顯示的規則。