全部技能

caveman-review (JuliusBrussee/caveman)

把程式碼審查壓縮成每條發現一行:位置、問題與修正方式。

caveman-review:把程式碼審查導向每項發現一行的精簡格式(對照組 3.3、技能 4.2、一句話提示 4.8),Token 用量相同,但技能自家的 L<line> 行格式只在部分執行中被遵循;把格式寫成一句話提示反而得分更高

視情況推薦安全

Codex CLI · gpt-6-astra

25.1 / 30

相對未使用技能的提升:+0.90 · 視情況推薦 · 18 次執行

視情況推薦:提升幅度 +0.90 低於 +1.0。推薦條件為總分至少 22/30、產出品質至少 3.5、提升幅度至少 +1.0。

SOTA

透過

使用 Codex 測試。

涵蓋 Codex, Claude Code

Codex CLI 0.166(SOTA 等級):18 次評分執行。依我們的等級規則,在這裡通過也涵蓋 Claude Code;但這不代表第二等級的結果。

分數

每個維度為 0 到 5 分,六個維度相加即為滿分 30 的總分。每個維度都是 5 分最好。成本 5 分代表便宜又快速;安裝 5 分代表容易安裝。

觸發可靠性
5.0
相對未使用技能的提升
2.9
產出品質
4.2
Token 與時間成本
5.0
安裝與可攜性
4.0
安全性
4.0

安全審查

安全

靜態掃描:0 CRITICAL / 0 HIGH / 0 MEDIUM。人工審查:可在無網路沙箱中安全執行(未發現問題)。掃描結果乾淨,不代表技能一定安全。

安裝

npx skills@latest add JuliusBrussee/caveman --skill caveman-review

來源

固定 Commit: 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4

測試日期: 2026-11-02

我們測了什麼

  • 審查小型服務模組 — 在我合併 orders_service.py 之前先審查它。列出你發現的問題,最嚴重的優先。不要修改任何檔案。
  • 審查驗證輔助程式 — 審查 auth_handlers.py:這是我剛為登入流程寫的。列出問題,最嚴重的優先。不要修改任何檔案。
  • 依書面標準與規格審查最新 Commit — 對照 CODING_STANDARDS.md 與 SPEC.md,審查我最新的 Commit(HEAD~1 以來的變更)。列出每一處偏離,最嚴重的優先。不要修改任何檔案。

優點

  • 相對未使用技能,平均分數從 3.26 提升到 4.16(+0.90)。
  • 技能即使未被點名也會被採用:6/6 次實驗組執行都讀取了技能檔案。
  • 沒有 Token 額外負擔:Token 用量是未使用技能的 1.02 倍。

缺點

  • 一句話提示得分 4.83,使用技能則為 4.16(-0.67)。
  • 每個任務的每個組別 n=2;約 1 分以內的差異屬於雜訊。

評測

Codex CLI 0.166(gpt-6-astra,低推理)在專用的 Windows 測試電腦上執行,每次執行都使用全新的暫存專案與暫存 HOME/TMPDIR/快取;技能已安裝(實驗組)、未安裝(對照組),或未安裝但把技能的核心要求壓縮成一句話附加到提示詞(一句話提示組)。每個任務的每個組別執行 2 次,關閉網路,封鎖 /tmp 寫入。提示詞從未提及技能(除下方註明的措辭外)。三個審查任務,對象都是各含 8 個植入問題的小型 Python 檔案:一個訂單服務(SQL injection、缺少授權、硬編碼金鑰被寫進日誌、以浮點數儲存金額等)、一支身分驗證處理常式檔案,以及對最新 Commit 是否符合 CODING_STANDARDS.md 與 SPEC.md 的審查。提示詞要求進行審查,最嚴重的問題優先,不要修改任何檔案。一句話提示組說明了行格式與不得模糊帶過的規則。

三組對照

組別平均分數(0-5)每次執行 Token 用量
未使用技能3.2669k
一句話提示4.8360k
使用技能4.1670k

以 Codex CLI 執行 18 次,採規則式檢查評分,不經 LLM 評審。總分 25.1 / 30,評級為 視情況推薦。

判定:視情況而定(25.1 / 30)。 來源:JuliusBrussee/caveman,skills/caveman-review,固定於提交 9b68f7e。安裝:npx skills@latest add JuliusBrussee/caveman --skill caveman-review。授權條款: MIT(儲存庫 LICENSE)。

這是什麼

caveman-review 技能(JuliusBrussee/caveman):一種精簡的程式碼審查風格:每行一個發現,格式為 L<line>: <problem>. <fix>.,可選擇加上嚴重性前綴(bug、risk、nit、q),符號名稱以反引號精確標示,提出具體修正,並且不模糊其詞、不讚美、不重述程式碼的功能。

我們如何測試

在專用 Windows 測試 PC 上使用 Codex CLI 0.166(gpt-6-astra,低推理),每次執行都使用全新的暫存專案與暫存 HOME/TMPDIR/快取,安裝技能(實驗組)、未安裝(對照組),或未安裝但將技能核心要求濃縮成一句話附加在提示詞後(一句話提示組),每個任務每組執行 2 次,網路關閉,/tmp 寫入封鎖。提示詞從未提及技能(以下註明的措辭除外)。

三項審查任務,對象是各預埋 8 個問題的小型 Python 檔案:一個訂單服務(SQL 注入、缺少授權、硬編碼金鑰被記錄、以浮點數處理金額等)、一個驗證處理常式檔案,以及依 CODING_STANDARDS.md 與 SPEC.md 審查最新提交。提示詞要求進行審查、最嚴重的問題排在最前面、不要修改任何內容。一句話提示組則說明行格式與不得模糊其詞的規則。

  1. 審查一個小型服務模組 — 在我合併前審查 orders_service.py。列出你發現的問題,最嚴重的排在最前面。不要修改任何檔案。
  2. 審查一個驗證輔助程式 — 審查 auth_handlers.py:這是我剛為登入流程寫的。列出問題,最嚴重的排在最前面。不要修改任何檔案。
  3. 依既定標準與規格審查最新提交 — 依 CODING_STANDARDS.md 與 SPEC.md 審查我的最新提交(HEAD~1 以來的變更)。列出每一處偏離,最嚴重的排在最前面。不要修改任何檔案。

評分方式為程式化檢查(隱藏測試/預埋問題召回/限制條件檢查/視情況進行渲染與 OCR),每次執行 0–5 分。沒有任何 LLM 評審決定分數。

結果

提供給第三組的一句話提示:「將每個發現寫成一行 L<line>: <problem>. <fix>.,可加上嚴重性前綴(bug、risk、nit、q),符號名稱以反引號精確標示,並提出具體修正;不要模糊其詞、不要讚美、不要冗長開場,也不要重述程式碼在做什麼。」

任務對照組分數一句話提示使用技能對照組 Token 數一句話提示 Token 數使用技能 Token 數技能讀取
t1-orders3.064.664.1574k64k61k2/2
t2-auth3.194.923.3173k64k88k2/2
t3-diff3.534.925.059k50k60k2/2

平均分數:未使用技能 3.26,使用技能 4.16(差異 +0.9)。每次執行 Token 數:69k 對 70k(1.02 倍);時間 56 秒對 54 秒。一句話提示組:4.83(技能相較一句話提示的增益:-0.67;一句話提示相較無技能的增益:+1.57);一句話提示每次執行 60k Token,因此技能的成本是一句話提示的 1.17 倍。

實際發生了什麼

  • 對照組 3.26、技能 4.16、一句話提示 4.83(各 n=6)。找出預埋問題的表現各組相近(8 個中找出 5-7 個,幾乎每次執行都漏掉缺少速率限制的問題);差異主要在格式與長度。
  • 格式:對照組 6 次執行都沒有使用 L<n>: 行格式(其訂單審查是編號清單加上粗體嚴重性)。技能在提交審查任務(兩次執行都 5.0)與一次訂單執行中符合格式,但在驗證任務中,各行以數字與粗體嚴重性開頭,因此格式檢查 2/2 失敗,分數停在 3.3。一句話提示幾乎全部通過。
  • 精簡度:對照組在訂單與驗證任務的審查為 233-332 字(220 字可得滿分);技能的驗證審查也約 300 字,而一句話提示幾乎每次執行都低於上限。
  • 沒有任何一組使用模糊其詞的措辭。Token:技能 70k、一句話提示 60k、對照組 69k(每次執行,為對照組的 1.01 倍)。技能在 6/6 次實驗組執行中被讀取。

各面向分數

面向分數原因
1_輸出品質4.16

使用技能時平均分數 4.16/5(程式化檢查,見各任務 表格)。

2_相較無技能的提升2.9

相較未使用技能的 3.26,+0.90 分(每項任務 n=2;約 1 分以下 屬於雜訊)。

3_觸發5.0技能檔案在 6/6 次實驗組執行中被讀取。
4_指令可攜性4僅有 SKILL.md。
5_效率51.02 倍 Token(每次執行 70k 對 69k)與 0.96 倍時間(54 秒對 56 秒)。
6_安全性與衛生4僅有文字;見 security.md。

這項測試的限制

  • 對最終訊息做規則式檢查:預埋問題的召回、L&lt;n> 格式的行首正規表達式、字數,以及模糊措辭清單。修正內容的品質並未評判。
  • 格式正規表達式嚴格要求每行開頭;像 '- L17 - High: ...' 這樣的項目符號算符合,但加上粗體嚴重性的編號清單則不算。
  • 有一項檢查(「未修改檔案」)在各處都通過,因此未列出。
  • 每個儲存格 n=2;檔案很小。
  • 每項任務每組 n = 2:約 1 分以下的差異屬於雜訊。
  • 規則式評分只能衡量檢查看得到的部分;無法評判品味,也無法判斷結果是否為最佳可能。

安全性

見 security.md。掃描:CRITICAL 0 / HIGH 0 / MEDIUM 0。判定:可安全執行(網路關閉的沙箱)。乾淨的掃描結果不能證明技能安全。

總結

這項技能會讓審查朝向精簡、每行一個發現的風格,並在不增加成本的情況下維持相同涵蓋率,但不一定每次都守住格式。在此,用一句話描述格式效果更好,因此其效益在於勝過完全沒有指引,而非勝過好的提示詞。

完整紀錄

執行日誌:caveman-review (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
欄位:任務、組-輪次、得分(0-5)、token、秒、通過的檢查、代理開啟的 skill 檔案。

t1-orders control-1: 得分 3.02, token 65430, 秒 62.1, 檢查 4/5, 未開啟
t1-orders control-2: 得分 3.1, token 82622, 秒 61.8, 檢查 4/5, 未開啟
t1-orders oneliner-1: 得分 4.66, token 64873, 秒 59.1, 檢查 5/5, 未開啟
t1-orders oneliner-2: 得分 4.66, token 64681, 秒 49.6, 檢查 5/5, 未開啟
t1-orders treatment-1: 得分 4.83, token 50257, 秒 52.3, 檢查 5/5, 開啟 caveman-review
t1-orders treatment-2: 得分 3.47, token 72971, 秒 62.1, 檢查 4/5, 開啟 caveman-review
t2-auth control-1: 得分 3.3, token 82305, 秒 67.1, 檢查 4/5, 未開啟
t2-auth control-2: 得分 3.08, token 64757, 秒 55.3, 檢查 4/5, 未開啟
t2-auth oneliner-1: 得分 5.0, token 64677, 秒 57.0, 檢查 5/5, 未開啟

18 次執行、3 個產出檔案

範例產出

SOTA · 装了 skill:final message(t1-orders,第 1 次,Codex)

- L17 — **High: Missing authorization.** `cancel_order` ignores `current_user`, allowing cancellation of another user’s order by ID (CWE-862). Require ownership or explicit administrative permission before updating. - L9 — **High: SQL injection.** `order_id` is interpolated directly into SQL; input such as `0 OR 1=1` changes the query and can retrieve an unrelated order (CWE-89). Use `WHERE id = ?` with bound parameters. - L4, L48 — **High: Credential exposure.** `API_KEY` is hardcoded and included in the successful-charge log, exposing it through source access and logs (CWE-798/CWE-532). Load it from a secret store, remove it from logs, and rotate it if genuine. - L47–55 — **High:** Every `charge` call reaches `NotImplementedError`, which is swallowed into `None`; no payment can succeed. Implement `send_to_gateway` and surface explicit payment failures. - L24, L26 — **Medium:** Discount thresholds contradict the docstring: exactly 100 receives no discount, and exactly 500 receives only 10%. Change both comparisons to `>=`. - L39–41 — **Medium:** Opening the export with `"w"` truncates an existing file before querying or serializing succeeds. Prepare the export first, then write through a temporary file and replace the destination. - L39–42 — **Medium:** The export file is never explicitly flushed or closed; completion depends on object cleanup. Use `with open(...)` so writes and closure complete before returning.

檢視 Pro