domain-modeling (mattpocock/skills)
建立並打磨專案的領域模型,維護術語表與架構決策紀錄。
domain-modeling:把單純的「建立詞彙表/記錄這個決策」需求,轉成簡短的 GLOSSARY.md + ADR 格式(對照組 2.8,技能 5.0),一句話提示可得 4.6;沒有 Token 額外負擔
Codex CLI · gpt-6-astra
28.2 / 30
相對未使用技能的提升:+2.20 · 推薦 · 18 次執行
推薦:總分 28.2/30 至少 22,產出品質 5.0 至少 3.5,提升幅度 +2.20 至少 +1.0。
SOTA
透過使用 Codex 測試。
涵蓋 Codex, Claude Code
Codex CLI 0.166(SOTA 等級):18 次評分執行。依我們的等級規則,在這裡通過也涵蓋 Claude Code;但這不代表第二等級的結果。
分數
每個維度為 0 到 5 分,六個維度相加即為滿分 30 的總分。每個維度都是 5 分最好。成本 5 分代表便宜又快速;安裝 5 分代表容易安裝。
- 觸發可靠性
- 5.0
- 相對未使用技能的提升
- 4.2
- 產出品質
- 5.0
- Token 與時間成本
- 5.0
- 安裝與可攜性
- 4.0
- 安全性
- 5.0
安全審查
安全靜態掃描:0 CRITICAL / 0 HIGH / 0 MEDIUM。人工審查:可在無網路沙箱中安全執行(未發現問題)。掃描結果乾淨,不代表技能一定安全。
安裝
npx skills@latest add mattpocock/skills --skill domain-modeling
固定 Commit: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
測試日期: 2026-11-02
我們測了什麼
- 從過載的詞彙建立詞彙表 — 我們的圖書館借閱應用把同一個人(可以借書的人)稱為「member」、「patron」、「borrower」和「customer」。「loan」也被叫做「checkout」或「rental」。「copy」是一本實體書,「title」是抽象的書目。請建立專案…
- 記錄一個難以復原的決策 — 為儲存庫記錄這個架構決策:我們在 Postgres 中以整數分儲存金額,而不是用 NUMERIC/DECIMAL,因為付款夥伴的 API 使用整數分,而四捨五入的錯誤已經害了我們兩次。把它寫成文件。
- 只記錄值得寫成 ADR 的內容 — 今天會議的兩個決策:(a) 我們要把身分驗證從自家的密碼表遷移到第三方身分提供者(Auth0):要復原得花四分之一的工作量;(b) 我們把 CSS 類別 .btn-main 改名為 .btn-primary。記錄任何值得記錄…
優點
- 相對未使用技能,平均分數從 2.8 提升到 5.0(+2.20)。
- 技能即使未被點名也會被採用:6/6 次實驗組執行都讀取了技能檔案。
- 沒有 Token 額外負擔:Token 用量是未使用技能的 0.96 倍。
- 比把自身規則濃縮成一句話的版本高出 +0.39。
- 使用技能後的絕對品質很高:5.0 / 5。
缺點
- 測試注意事項:在看到對照組的檔案名稱後,檢查中的檔名 glob 規則被放寬,且每一次執行都依相同的放寬規則重新評分。
- 每個任務的每個組別 n=2;約 1 分以內的差異屬於雜訊。
評測
Codex CLI 0.166(gpt-6-astra,低推理)在專用的 Windows 測試電腦上,每次執行都使用全新的暫存專案與暫存的 HOME/TMPDIR/快取,技能已安裝(實驗組)或未安裝(對照組),或未安裝但把技能的核心要求濃縮成一句話附加在提示詞後(一句話提示組),每個任務的每個組別執行 2 次,關閉網路,封鎖 /tmp 寫入。提示詞從未提及技能(除非下方註明的措辭)。三個任務都使用自然措辭、不點名任何格式:「建立專案的領域詞彙表」(一個圖書館應用,把同一個人稱為 member/patron/borrower/customer)、「記錄這個架構決策」(金額以整數分儲存),以及「會議中的兩個決策;只記錄值得記錄的」(一個難以復原的 Auth0 遷移,和一個不需要記錄的 CSS 類別重新命名),起點是已有 ADR 0001 與 0002 的儲存庫。一句話提示組 = 把整套慣例濃縮成一句話。
三組對照
| 組別 | 平均分數(0-5) | 每次執行 Token 用量 |
|---|---|---|
| 未使用技能 | 2.8 | 83k |
| 一句話提示 | 4.61 | 83k |
| 使用技能 | 5.0 | 80k |
以 Codex CLI 執行 18 次,採規則式檢查評分,不經 LLM 評審。總分 28.2 / 30,評級為 推薦。
揭露事項:在看到對照組的檔案名稱後,我們放寬了檢查中的檔名 glob 規則,並依相同的放寬規則重新評分每一次執行。
評定:推薦(28.2 / 30)。 來源:mattpocock/skills,skills/engineering/domain-modeling,固定於 commit 4ae2317。安裝:npx skills@latest add mattpocock/skills --skill domain-modeling。授權: MIT(儲存庫 LICENSE)。
這是什麼
domain-modeling 技能(mattpocock/skills):讓專案的領域語言保持精準。它維護一份 GLOSSARY.md(每個概念一個標準的 粗體 詞彙、精簡的定義、_Avoid_: 同義詞,且不採用泛用的程式術語),並且只在 docs/adr/ 下為難以逆轉、出人意料且確實有所取捨的決策撰寫 ADR,形式是一段簡短文字加上連續編號。
我們如何測試
在專用的 Windows 測試 PC 上使用 Codex CLI 0.166(gpt-6-astra、低推理),每次執行都使用全新的臨時專案與臨時 HOME/TMPDIR/快取,安裝技能(使用技能組)、不安裝(對照組),或是不安裝但把技能核心要求濃縮成一句話附加在提示詞後(一句話組);每個任務的每組各執行 2 次,關閉網路、封鎖 /tmp 寫入。提示詞完全沒有提到技能名稱(下述措辭除外)。
三個以自然措辭描述、未指名格式的任務:「建立專案的領域詞彙表」(一個把同一個人稱為 member/patron/borrower/customer 的圖書館應用程式)、「記錄這項架構決策」(金額以整數分存放),以及「會議中的兩項決策;該記錄的就記錄」(一項難以復原的 Auth0 遷移,以及一項不必記錄的 CSS 類別重新命名),起點是已有 ADR 0001 與 0002 的儲存庫。一句話提示=把整套慣例濃縮成一句話。
- 從過載詞彙建立詞彙表 — 我們的圖書館借閱應用程式用 'member'、'patron'、'borrower' 和 'customer' 來指同一個人(能借書的人)。'loan' 也稱為 'checkout' 或 'rental'。'copy' 是一本實體書,'title' 是抽象的那本書。請建立專案…
- 記錄一項難以逆轉的決策 — 為儲存庫記錄這項架構決策:我們在 Postgres 中以整數分存放金額,而不用 NUMERIC/DECIMAL,因為付款合作夥伴的 API 使用整數分,而四捨五入的錯誤已經讓我們吃過兩次虧。請寫成文件。
- 只記錄值得寫成 ADR 的決策 — 今天會議的兩項決策:(a) 我們要把驗證從自家的密碼資料表遷移到第三方身分提供者(Auth0):要花一季才能復原;(b) 我們把 CSS 類別
.btn-main改名為.btn-primary。該記錄的就記錄…
評分採程式化方式(隱藏測試/植入問題召回/限制條件檢查/視情況搭配渲染+OCR),每次執行 0–5 分。所有分數都不是由 LLM 評審決定。
結果
給第三組的一句話提示:"讓專案的領域語言保持精準:撰寫 GLOSSARY.md,每個概念一個標準的粗體詞彙(精簡的定義與 _Avoid_: 同義詞,不採用泛用的程式術語),並且只把難以逆轉、出人意料且確實有所取捨的決策,以簡短、連續編號的 ADR 記錄在 docs/adr/(一段文字,不是範本)。"
| 任務 | 對照組分數 | 一句話提示 | 使用技能 | 對照組 token | 一句話組 token | 使用技能 token | 技能讀取 |
|---|---|---|---|---|---|---|---|
| t1-glossary | 1.46 | 4.38 | 5.0 | 75k | 90k | 79k | 2/2 |
| t2-adr | 2.5 | 5.0 | 5.0 | 91k | 74k | 69k | 2/2 |
| t3-adr-numbering | 4.45 | 4.45 | 5.0 | 82k | 83k | 89k | 2/2 |
平均分數:未使用技能 2.8,使用技能 5.0(差異 +2.2)。每次執行 token:83k 對 80k(0.96x);時間 45 秒對 35 秒。一句話組:4.61(技能相對一句話提示的增益:+0.39;一句話提示相對未使用技能的增益:+1.8);一句話組每次執行 83k token,因此技能成本是一句話提示的 0.96 倍。
實際情況
- 對照組 2.80、一句話組 4.61、使用技能 5.00(各 n=6)。對照組做了合理的事,但用自己的形式:一份 DOMAIN*GLOSSARY.md(不是 GLOSSARY.md),用表格或文字段落,兩次執行都沒有
\_Avoid*行,ADR 則是 263 與 355 字、帶 Context/Decision/Consequences 標題,而慣例要求的是簡短段落;有一次對照組的 ADR 放到 docs/decisions/ 而不是 docs/adr/。 - 技能的兩個判斷都正確:第三個任務的兩次使用技能組執行中,都只把 Auth0 遷移記錄為 ADR 0003(在既有的 0001/0002 之後編號正確),並表示略過 CSS 改名,因為它容易復原。對照組與一句話組也略過了改名,但 control-2 與 one-liner-2 給的理由我的正規表達式沒辨識出來(例行變更、未記錄),所以「告訴我為什麼」這項檢查對它們給分偏低。
- 一句話提示大致能達到格式要求(詞彙表 3.75 與 5.0,ADR 5.0、5.0),但有一份一句話組的詞彙表用了不同版面,因此未通過
_Avoid_結構檢查。 - 沒有額外成本:使用技能每次執行 80k token,對照組與一句話組都是 83k。技能在 6/6 次使用技能組執行中都被讀取,而且全程未被指名。
面向分數
| 面向 | 分數 | 原因 |
|---|---|---|
| 1_output_quality | 5.0 | 使用技能時平均 5.00/5(程式化檢查,見各任務表)。 |
| 2_lift_vs_no_skill | 4.2 | 相對未使用技能的 2.80 提升 +2.20 分(每個任務 n=2;約 1 分以下屬雜訊)。 |
| 3_trigger | 5.0 | 使用技能組 6/6 次執行都讀取技能檔案。 |
| 4_instructions_portability | 4 | 簡短的 SKILL.md 加上幾份參考範本;沒有腳本。 |
| 5_efficiency | 5 | token 0.96x(每次執行 80k 對 83k)、時間 0.78x(35 秒對 45 秒)。 |
| 6_safety_hygiene | 5 | 只有文字說明;請見 security.md。 |
這項測試的限制
- 針對檔名、標題、粗體詞彙數量、字數與
_Avoid_行做規則式檢查。其中幾項是形式檢查,對照組在沒被告知形式的情況下不可能符合;這些檢查衡量的是對這套內部慣例的遵循程度,而不是一般寫作品質。 - 看到對照組寫出 DOMAIN_GLOSSARY.md、一句話組寫出項目符號式條目後,我放寬了檔名與版面樣式(檔名仍是一項獨立檢查),並以相同規則重新評分所有執行。「為什麼略過 (b)」的正規表達式仍然嚴格。
- 小型合成儲存庫;沒有需要長期維護更新的詞彙表。
- 每組每任務 n = 2:約 1 分以下的差異屬雜訊。
- 規則式評分只能衡量檢查項目看得到的部分,無法判斷品味,也無法判斷結果是否為最佳。
安全性
請見 security.md。掃描:CRITICAL 0 / HIGH 0 / MEDIUM 0。評定:可安全執行(無網路沙盒)。掃描乾淨並不代表技能安全。
總結
對想要這套詞彙表與 ADR 慣例的團隊來說,這項技能第一次就能做對,並讓 ADR 保持精簡,而且不增加 token。一句話指示就能達成大部分效果,因此技能主要省下你每次貼上慣例的功夫。
完整紀錄
執行日誌:domain-modeling (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 欄位:任務、組-輪次、得分(0-5)、token、秒、通過的檢查、代理開啟的 skill 檔案。 t1-glossary control-1: 得分 1.25, token 67501, 秒 45.5, 檢查 2/7, 未開啟 t1-glossary control-2: 得分 1.67, token 82953, 秒 59.9, 檢查 3/7, 未開啟 t1-glossary oneliner-1: 得分 5.0, token 99071, 秒 37.6, 檢查 7/7, 未開啟 t1-glossary oneliner-2: 得分 3.75, token 82400, 秒 36.8, 檢查 6/7, 未開啟 t1-glossary treatment-1: 得分 5.0, token 89157, 秒 40.7, 檢查 7/7, 開啟 domain-modeling t1-glossary treatment-2: 得分 5.0, token 70479, 秒 32.2, 檢查 7/7, 開啟 domain-modeling t2-adr control-1: 得分 3.12, token 99540, 秒 43.6, 檢查 3/5, 未開啟 t2-adr control-2: 得分 1.88, token 82829, 秒 51.1, 檢查 2/5, 未開啟 t2-adr oneliner-1: 得分 5.0, token 66964, 秒 43.7, 檢查 5/5, 未開啟
18 次執行、3 個產出檔案
範例產出
SOTA · 装了 skill:GLOSSARY.md(t1-glossary,第 1 次,Codex)
# Library Lending The library-lending context describes people who can borrow books, the books available to borrow, and their loans. ## Language **Member**: A person who can borrow books from the library, whether or not they currently have a loan. _Avoid_: Patron, borrower, customer **Loan**: An instance of a member borrowing a physical copy of a title from the library. _Avoid_: Checkout, rental **Copy**: One physical book belonging to a title. Two physical books of the same title are two distinct copies. _Avoid_: Title (when referring to a physical book) **Title**: The abstract book represented by physical copies. Multiple copies of the same book share a title. _Avoid_: Copy (when referring to the abstract book)