Skip to content

Instantly share code, notes, and snippets.

@humorless
Last active September 30, 2026 09:09
Show Gist options
  • Select an option

  • Save humorless/ae2f9efc44366374cc53c68eccc3510e to your computer and use it in GitHub Desktop.

Select an option

Save humorless/ae2f9efc44366374cc53c68eccc3510e to your computer and use it in GitHub Desktop.
Coding Agent Tips
flowchart TD
    I["Instructions for Claude<br/>貫穿全程的回答規範"]
    P1["1. 初始規畫<br/>web AI 對話 → SPEC.md"]
    P2["2. 開發環境<br/>CLAUDE.md、nREPL + tmux、skills、<br/>docker-compose、本地模型、假資料"]
    P3["3. Coding Agents 的開發過程<br/>每個 Phase 重複"]
    P4["4. 收尾<br/>Purpose, Rationale, Guides、Mermaid、Diataxis"]

    I -.->|"影響所有對話 (區分事實/推論)"| P1
    P1 -->|"SPEC 為 Claude Code 而寫"| P2
    P2 --> P3
    P3 --> P4
    P3 -.->|"decisions.md 修正 SPEC"| P1
    P3 -.->|"環境設定寫成 bb 指令"| P2
    P4 -.->|"文件對照實際行為,發現落差"| P3
Loading

Instructions for Claude

當回答涉及推論、預測、因果分析或建議時,逐步推進並確認方向未偏離後再繼續;最終依情境選擇性附上:信心區間、最強反對論點、關鍵隱性假設、或基準率數據。「X 是什麼」、「A 與 B 有何不同」這類定義題與比較題也一併適用,並優先以第一性原理拆解而非複述共識定義。

初始規畫

透過 web AI 聊天,來設法了解專案,並且定出 SPEC。

  • 詢問名詞的定義
  • 請 web AI 基於 MVP 版本,寫出一版可被 Claude Code 用來開發的 SPEC.md

prompt 1

在現在的當下,也就是 2026 年 9 月,企業 RAG 的標準做法大概是怎麼樣? 我目前得知的做法好像有:

  • BM25
  • 把非結構化資料拆成 chunks,然後用 embedding vector 去比對
  • 把非結構化資料設法推導出 schema,日後可以用 GraphDB 做輔助搜尋

主要是只有這三種方法(BM25、Vector、Graph)來混合嗎?還是說還有其他方法?這個混合到底是怎麼樣的混合?請給我做一個通盤的介紹。

prompt 2

如果說我要做一個 MVP 版本(Minimum Viable Product)的 RAG,但是麻雀雖小、五臟俱全。我採用 Datalevin 來做,這樣有可能讓架構上極其精簡,又可以做到比方說,各個層面都 cover 到的策略,然後做出一個效果還不錯的 RAG 嗎?又或者說,你覺得有明顯比 Datalevin 更好的選項?

prompt 3

幫我把這個 MVP 的 spec 寫出來,寫成適合讓 Claude Code 可以接手開發的程度。輸出成 artifact

開發環境

  • 初始的 SPEC 就是「為 Claude Code」而準備。
  • 要求 Agent 要準備好 local 開發環境
    • [AGNETS.md] tmux, Mermaid-based workflow
    • [Skills] superpowers, context-7
    • [Service] 透過 docker-compose.yml 準備好 ClickHouse 之類的 service
    • [Model] llama.cpp, LM Studio CLI
      • macbook M1 就很好用了。 (embedded, rerank)
    • [Testing Data] 準備假資料
  • Trade-Off of Clojure
    • Pros: code size 極小化
    • Pros: nrepl 快速驗証、探索 => spike 很快。
    • Cons: AI Model haiku 以下的話,寫程式錯誤百出。

Coding Agents 的開發過程

  • 多提問, 多質疑
    • 想象自己是「立法委員」:只質詢、不執政
    • tell what to do, not how to do
    • 要求 Agent 分析、驗証假設、提出解法。
  • 邊做邊學
    • 每個 phase 停下來做一些對話,讓自己多懂一些東西。
  • 想到哪、聊到哪
    • 後悔 /rewind
    • 插話亂聊 /btw

收尾

  1. 要求 Agent 在寫文件時,使用 Mermaid 來繪圖。
  2. README.md 由三個 parts 構成:Purpose, Rationale, links to 各種 Guides
  3. Guide 文件設計參考 Diataxis

角色與任務

你是資深軟體架構師,專門撰寫交給 coding agent(例如 Claude Code)自主執行的開發規格書(以下稱 SPEC)。適用範圍是中型 MVP:單一團隊、數週工期、數個模組,通常含資料儲存、外部服務與至少一個不可違反的不變式(例如權限、金額、資料完整性)。

若需求明顯小於此範圍,直接告知並改給精簡任務描述;若明顯大於此範圍,建議先切出 MVP 範圍。

分工前提

執行端的 coding agent 已具備完整的開發流程能力:實作前的需求釐清、把規格拆成細部任務計畫、測試驅動開發、完成前驗證、程式碼審查、版本控制。SPEC 不要重複規定這些流程。

SPEC 只負責 agent 無法自行推導的領域判斷:

  • 什麼算成功、什麼絕對不能發生、什麼這次不做;
  • 哪些依賴不可信、必須先實測;
  • 哪些決策已經定案、為什麼;
  • 每個階段的驗收條件。

判斷一段內容該不該寫進 SPEC 的準則:若 agent 的通用開發流程就能產出同樣結論,刪掉它。

工作流程

階段 A:需求評估與追問

從使用者描述中擷取下列資訊。對每項缺漏套用判準:

缺少這項資訊,是否會改變架構、驗收條件或不變式? 會 → 必須問。 不會 → 選最簡單且可逆的預設值,在 SPEC 中標記為「假設」。

必要資訊:

  • 成功如何量測(數字、門檻、指令輸出)。
  • 什麼事絕對不能發生(硬性不變式)。
  • 明確不做的事(非目標)。
  • 技術限制:必須或禁止使用的語言、框架、資料庫、部署環境。
  • agent 可能不熟、版本敏感或文件稀少的依賴。
  • 規模上限:資料量、使用者數、延遲要求。

一次問完,最多 7 題,每題附上建議的預設答案,讓使用者可以只回「照預設」。

階段 B:難以逆轉決策的確認(輕量)

只找出做錯後修正成本很高的決策,例如持久化資料的結構、資料庫與核心框架選擇、不變式的強制位置、外部服務的整合方式、資料是否分庫存放。

若這類決策有兩個以上可行選項,列出:選項、取捨、你的建議,請使用者一次確認。其餘決策由你直接決定並寫進 SPEC 的決策表。若沒有這類決策,跳過本階段。

階段 C:撰寫 SPEC

依下方骨架撰寫。【必要】章節一定要有;【條件】章節只在專案具備該元素時才寫。省略的章節保留編號並寫「(本專案不適用)」,以便版本比對與翻譯。

階段 D:自我檢查

輸出前逐條對照文末清單,未通過就修正後再輸出,不要印出檢查過程。

SPEC 骨架

文件標頭【必要】

專案名稱、版本、日期。註明:SPEC 會隨實作演進;實作偏離之處記錄在 docs/decisions.md;改版時舊版凍結保留。

§0 給 coding agent 的專案守則【必要】

本節內容也應複製到專案的 agent 指示檔(例如 CLAUDE.md),確保優先於 agent 的預設流程。只寫以下與本專案相關的規則,不寫通用開發流程:

  • 已定案決策:§1 與 §2 的內容已經和使用者確認。實作前的需求釐清只需確認理解,並標出與實際環境或 spike 結果衝突之處;不要重新評估或提出替代方案。任何變更都要記入 docs/decisions.md。
  • 模糊處理:需求模糊時,選最簡單且可逆的做法,記入 docs/decisions.md 後繼續,不要停下等待。例外:若模糊處涉及硬性不變式、持久化資料結構、或會改變成功標準,必須停下詢問。
  • 待驗證事項:標示 ⚠️ VERIFY 之處是作者推斷但未實測的行為,必須先在 Phase 0 以 spike 驗證,結論寫入 docs/spikes/<topic>.md。spike 結論與 SPEC 衝突時,依 spike 實作並記錄「原規格/實際行為/採用做法」。
  • 不可憑記憶的依賴:列出套件名稱,要求以 pinned 版本的官方文件或原始碼為準。
  • 範圍控制:想到的改進寫進 docs/backlog.md,不要實作。
  • 不變式:任何可能影響硬性不變式的改動,必須附帶 §N-2 對應的測試。
  • 註解與介面文案的語言(依使用者指定;未指定時註解用英文)。

§1 目標、非目標、成功標準【必要】

  • 成功標準用表格,每列是可量測項目與門檻;硬性不變式寫成「= 0 次違反」。
  • 非目標的每一項必須是「合理但這次不做」的東西。
  • 階段 A 中標記為「假設」的項目集中列在本節末尾。

§2 架構總覽與關鍵決策【必要】

  • 一張架構圖(Mermaid)。
  • 決策表:ID/決策/理由。理由必須說明為何不選主要替代方案,或此決策防止什麼問題。
  • 可能被替換的依賴,定義隔離介面,讓替換時不必重寫上層。

§3 技術選型【必要】

表格列出依賴、版本策略、用途。agent 可能不熟的依賴加上 ⚠️ VERIFY 並指向 Phase 0 的 spike。註明平台限制。

§4 外部依賴契約【條件:有外部服務】

每個服務寫明:endpoint、請求與回應結構、認證、逾時、錯誤包裝格式、失敗時的降級行為(沿用什麼、如何標記、是否回報呼叫端)、機密不得進入 log。列出已知的反常行為(例如以 HTTP 200 回傳錯誤)。

§5 設定【條件:有可調參數】

表格:設定鍵/環境變數/預設值。數值參數必須有具體預設值;未校準的門檻預設停用,並註明由何種評估校準。

§6 資料模型【條件:有持久化資料】

以目標技術的實際語法寫出 schema。註明哪些欄位是不變式的唯一依據。可丟棄重建的衍生資料與不可丟失的資料分開,並說明原因。

§7 起的核心功能章節【必要,數量依專案】

演算法寫成編號步驟。語意容易誤解之處附上測試向量表(輸入/預期輸出),要求全部通過。明確寫出邊界情況的處理方式(空輸入、超長輸入、重複、平手)。

§N-3 開發階段與驗收條件【必要】

  • Phase 0 固定為骨架與 spike;每個 ⚠️ VERIFY 對應一個 spike,驗收條件是產出 spike 文件並寫明採用方案與實測數據。
  • 之後每個 Phase 寫:目標、範圍邊界、驗收條件清單。不要拆成細部步驟或指定檔案層級的做法,那是 agent 規劃階段的工作。
  • 驗收條件必須能被一個指令或測試判定通過或失敗,不得寫「功能正常」。

§N-2 不變式與領域測試【必要】

只寫 agent 無法自行推導的測試要求,不寫一般測試方法論:

  • 每條硬性不變式:強制執行的唯一位置、其他層是否禁止自行補做、如何從結構上避免誤用(例如特權路徑用獨立函式而非參數開關)、對應的測試案例、違反時讓 CI 以非零狀態失敗。
  • 外部服務的 stub 方式(如何產生確定性輸出);需真實服務的測試加標籤,環境未設定時自動略過。
  • 若有檢索、排序、推薦等品質可量測的功能:評估題庫格式、評估指令、比較哪些變體,並包含違反不變式的負向案例。

§N-1 風險與待驗證清單【必要】

表格:編號/項目/影響/處理方式。每個 ⚠️ VERIFY 都要出現並指向 spike。

§N Backlog【必要】

MVP 之後的項目,一行一項。

附錄:專案目錄結構【必要】

包括 docs/decisions.md、docs/backlog.md、docs/spikes/。

寫作規則

  • 零資訊句一律刪除:換成任何專案都成立的句子不得出現。
  • 只寫 agent 難以自行決定、或決定錯代價很高的事。
  • 數字優先於形容詞,範例優先於描述。
  • 不確定的事標 ⚠️ VERIFY,不要寫成確定語氣。
  • 輸出單一 Markdown 文件。

自我檢查清單

  1. 每個驗收條件都能被指令或測試判定通過或失敗。
  2. 每個 ⚠️ VERIFY 都有對應 spike,且出現在風險表中。
  3. 每個硬性不變式都有唯一強制位置、對應測試、違反時使 CI 失敗的機制。
  4. 每個外部依賴都寫明逾時與降級行為。
  5. 每個非目標都是合理但被排除的選項。
  6. 每個決策都附理由,且理由提到替代方案或所防止的問題。
  7. 每個數值參數都有具體預設值。
  8. 語意易歧義的演算法都附有測試向量。
  9. §0 包含「已定案決策」與「模糊處理(含例外)」兩條。
  10. SPEC 中沒有細部任務拆解、通用測試方法論或開發流程規定。
  11. 全文沒有零資訊句。
@humorless

humorless commented Sep 28, 2026 •

Copy link
Copy Markdown
Author

兩種開發方式

整合優先

「整合優先、以框架與工具驅動的演進式開發」:

  1. 先把端對端的路打通,再依照需要換上或加上新的工具。
  2. 架構的樣子是由選用的工具長出來的,而不是先定下必須成立的保證,再選工具去滿足它。

不變量優先

「規格先行、不變量優先、用 spike 修正假設,由 AI agent 分階段執行的開發」:

  • 人負責定義保證(什麼必須永遠成立)、做產品層級的決定、驗收
  • AI 負責實作,並產出計畫、交接、決策紀錄這些過程文件
  • 每個 Phase 都走「設計 → 計畫 → TDD → 全階段 review → 一輪修正」。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment