skill-evaluator-srl

👤 vuact 📦 v1.0.0 ⭐ 0.0 ⬇️ 646 下載
🤖 AI-Agent 免費

📖 技能介紹


name: skill-evaluator-srl description: 對 Skill 進行質量評估打分的 Skill,輸出評分報告與改進建議。評估 skill、skill 評分、SRL 評估、skill 質量、檢查 skill、skill review、skill score


Skill SRL 評估工具

概述

本 Skill 基於 SRL (Skill Reliability Level) 框架,對目標 Skill 進行評估打分。

核心架構:AI 評審 + 指令碼計算

AI 閱讀 Skill 全部內容
    → AI 對五維度逐項評分(輸出結構化 JSON)
    → Python 指令碼加權計算 + 等級對映 + 報告生成
  • AI 負責:閱讀理解、語義判斷、給出評分和證據
  • 指令碼負責:數學加權、修正因子、等級對映、報告格式化

核心理念:Skill 的置信度 = 輸出中可被外部驗證的客觀事實佔比。可驗證的外部事實越多,置信度越高;模型自主推理越多,幻覺累積風險越高。


階段 0: 確認評估目標

輸入獲取

  • [ ] 確認使用者要評估的 Skill 路徑
  • 如果使用者提供了具體路徑,直接使用
  • 如果使用者說"評估所有 skill",逐個評估當前專案 skills 目錄下的所有 Skill
  • 如果使用者說"評估 xxx skill",在當前專案 skills 目錄下查詢匹配的目錄

驗證目標

  • [ ] 確認目標路徑存在且包含 SKILL.md

階段 1: 閱讀 Skill 全部內容

讀取檔案

  • [ ] 讀取目標 Skill 的 SKILL.md 完整內容(這是最核心的評估物件)
  • [ ] 讀取 scripts/ 目錄下的所有指令碼檔案(如有)
  • [ ] 讀取 README.md(如有)
  • [ ] 讀取 references/ 目錄下的參考文件(如有,僅作為理解上下文的輔助,不作為評分物件)
  • [ ] 瀏覽 _meta.json 獲取元資訊

建立全域性理解

通過閱讀上述檔案,形成對 Skill 的完整理解: - 這個 Skill 做什麼?解決什麼問題? - 它的工作流有多少步驟/階段? - 它依賴哪些外部系統(CLI/API/DB/網頁/AI推理)? - 它有哪些指令碼?指令碼做什麼? - 它的錯誤處理策略是什麼?

資訊充分性檢查("我不知道"機制)

在進入階段 2 之前,先判斷目標 Skill 是否提供了足夠資訊進行有意義的評估:

拒絕評估條件(滿足任一則停止): - SKILL.md 不存在 - SKILL.md 總行數 < 10 行(排除空行和 frontmatter) - SKILL.md 中沒有任何可識別的工作流/階段/步驟描述

觸發時的行為

⚠️ 資訊不足,無法進行有意義的 SRL 評估。

原因: [具體原因,如"SKILL.md 僅有 5 行有效內容"]

建議: 
- 補充 SKILL.md 中的工作流描述(階段劃分、步驟說明、錯誤處理策略等)
- 最低要求: 至少描述 Skill 的目標、工作流步驟、依賴的資料來源

停止評估,不輸出任何評分。

降級評估條件(不拒絕但標註不確定性): - SKILL.md 有效行數 < 50 行 - 沒有 scripts/ 目錄(無法評估指令碼質量) - 沒有 references/ 目錄(缺少上下文輔助) - 評估目標是 skill-evaluator-srl 自身(自評場景,存在迴圈論證風險)

降級時的行為: - 繼續評估,但在報告開頭新增警告:⚠️ 目標 Skill 提供的資訊有限(有效行數 X 行),以下評估的置信度較低。 - 如果是自評場景,額外新增警告:⚠️ 這是自評場景(評估工具評估自身),失敗語義清晰度等維度可能因迴圈論證而偏高。 - 在階段 3 的 JSON 輸出中新增頂層欄位 "evaluation_confidence": "low"(正常評估時為 "normal"


階段 2: AI 逐維度評審

基於對 Skill 內容的深度理解,逐一評估以下 5 個維度 + 3 個修正因子。

評分方法:先提取事實,再基於事實打分

每個維度的評審分兩步走: 1. 回答錨定問題:先回答一組客觀事實問題(列出具體行號、命令、數量等),這些答案可被複核 2. 基於答案打分:根據錨定問題的答案,參照評分公式/參考表給出子項分數

評分原則: - 每個維度 0-100 分 - 每個維度包含 2-4 個子項,子項分數總和應等於維度總分 - 每個維度必須給出至少 2 條具體證據(引用 SKILL.md 中的具體行號或指令碼中的具體程式碼位置) - 評分要基於實際閱讀到的內容,不可腦補 Skill 沒寫的能力 - evidence 格式示例:"SKILL.md:47 使用 python3 srl_analyzer.py 執行指令碼""scripts/analyzer.py:135 呼叫 subprocess.run()"

證據分層規則(重要): 評分時必須區分以下三個層級,並按層級賦予不同權重: - L1 規則宣告:SKILL.md 中寫了"應該做 X"→ 可計入評分,但最高只能達到該子項滿分的 60% - L2 規則實現:指令碼程式碼中實際實現了該規則(如 try-except、validate_input)→ 可達滿分的 80% - L3 規則驗證:有測試用例或實際執行記錄證明規則生效→ 可達滿分的 100%

例如:"SKILL.md 說應該拒絕評估" = L1,"指令碼程式碼中有 if lines < 10: exit(1)" = L2,"測試了一個 3 行的 Skill 確實被拒絕" = L3。

步驟計數規則(用於幻覺暴露面維度的 Q1/Q2): - 步驟 = SKILL.md 中明確標註的階段(如"階段 0"、"階段 1"),不包括階段內部的子步驟 - 如果 SKILL.md 沒有明確的階段標記,則按頂層 ### 標題計數 - 必須在 Q1 回答中列出每個步驟的行號和簡述,確保計數口徑透明

單維度資訊不足宣告: 如果某個維度的錨定問題全部回答為"無"或"未提及",不要強行給出評分。而是: - 該維度評分設為 0 - evidence 中寫明 "資訊不足: SKILL.md 中未找到與此維度相關的任何描述" - 在 improvement_suggestions 中標註需要補充哪些資訊

維度 1: 工程錨點密度 (25%)

評估 Skill 工作流中,有多少步驟依賴可被外部驗證的工程化手段

錨定問題(先回答,再打分)

Q1 錨點盤點: 列出 SKILL.md 和指令碼中所有工程錨點(CLI/Shell 命令、API/DB 呼叫、MCP 工具、檔案系統操作),每個標註行號和內容。 Q2 覆蓋率: 上述錨點覆蓋了總共 N 個階段中的幾個?哪些階段沒有任何工程錨點? Q3 驗證閉環: 是否存在"執行操作 → 寫入檔案 → 讀取確認"或"呼叫 API → 校驗返回值"的驗證閉環?列出所有閉環。

評分公式

子項 滿分 計算方式
anchor_coverage 40 先算: 覆蓋率 = 有錨點的階段數 / 總階段數(如 3/6=50%)。再查表: 覆蓋率≥80%→33-40分, 60-79%→22-32分, 40-59%→12-21分, 20-39%→5-11分, <20%→0-4分。注意: 嚴格按算出的百分比查表,不可跨區間。
anchor_intensity 30 密度 = 錨點總數 / 總階段數。密度≥3→25-30, 2-2.9→18-24, 1-1.9→10-17, 0.5-0.9→4-9, <0.5→0-3
verification_loop 30 有完整的驗證閉環(操作→確認)≥2處→22-30, 1處→12-21, 有錨點但無閉環→4-11, 無錨點→0-3

設計說明:不再按錨點型別(CLI/API/MCP)分別計分。一個純 CLI Skill 只要覆蓋率高、密度大、有驗證閉環,同樣可以得滿分。

維度 2: 幻覺暴露面 (20%)

評估純 AI 推理且無外部驗證的步驟佔比。分數越高 = 暴露面越小 = 越好

錨定問題(先回答,再打分)

Q1 步驟盤點: 按上述「步驟計數規則」列出 SKILL.md 中所有階段(行號+編號+簡述),標記每步屬於哪類: - [工程] = 該步有 CLI/API/DB/檔案系統 等外部驗證手段 - [AI] = 該步純靠 AI 推理,無外部驗證 - [混合] = 該步有 AI 推理但結果會被後續工程步驟驗證

Q2 統計: 工程步驟 X 個,AI 步驟 Y 個,混合步驟 Z 個,總步驟 N 個。純 AI 佔比 = Y / N = ?%

Q3 輸出格式: 最終輸出是什麼格式?結構化資料(JSON/表格)?Markdown 報告?自由文本?

評分公式

子項 滿分 計算方式
speculative_ratio 40 純AI佔比 <10%→35-40, 10-25%→25-34, 25-40%→15-24, 40-60%→8-14, >60%→0-7
external_validation 30 混合步驟佔比(有驗證配套的AI步驟)。≥50%→22-30, 20-49%→12-21, <20%→0-11
output_determinism 30 純結構化輸出(所有欄位確定性,無自由文本欄位)→22-30; 結構化為主但含自由文本欄位(如 evidence 為自由文本)→12-21; 自由文本為主→0-11

維度 3: 失敗語義清晰度 (20%)

評估 Skill 遇到錯誤時,是停下來報錯還是腦補繼續跑

錨定問題(先回答,再打分)

Q1 錯誤處理盤點: 在 SKILL.md 和指令碼中,找出所有錯誤處理相關的描述或程式碼(行號+內容摘要)。分為: - [停止型] = 檢測到錯誤後停止執行並通知使用者(如"如果失敗,停止並報告") - [降級型] = 檢測到錯誤後切換備用方案並標註(如"如果主源失敗,用備源並標記低置信度") - [模糊型] = 提到了錯誤但處理不明確(如"如果出錯,嘗試其他方法")

Q2 置信度機制: Skill 中是否有明確的置信度/不確定性標註機制?找出相關描述(行號+內容)。如果沒有,寫"無"。

Q3 "我不知道": Skill 是否有明確指導在資訊不足時拒絕輸出?找出相關描述(行號+內容)。如果沒有,寫"無"。

評分公式

子項 滿分 計算方式
error_handling_strategy 40 停止型≥3處→30-40, 停止型1-2處+降級型→20-29, 僅模糊型→10-19, 無→0-9
confidence_degradation 30 有明確的高/中/低分級→22-30, 偶爾標註不確定→10-21, 無→0-9
idk_capability 30 有明確拒絕輸出的指導→22-30, 有"待驗證"標註→10-21, 無→0-9

維度 4: 溯源性 (20%)

評估 Skill 輸出的資訊是否可追溯到可驗證的資料來源。

錨定問題(先回答,再打分)

Q1 資料來源盤點: 列出 Skill 依賴的所有資料來源,每個標註型別: - [強溯源] = 官方 API / CLI 輸出 / 資料庫查詢(有明確契約) - [中溯源] = 第三方聚合 API(有介面但不完全可控) - [弱溯源] = 網頁爬取(結構可能變化) - [無溯源] = AI 自主推理(模型"知識")

Q2 溯源統計: 強溯源 A 個,中溯源 B 個,弱溯源 C 個,無溯源 D 個。加權比例 = (A×1.0 + B×0.6 + C×0.3 + D×0) / (A+B+C+D) = ?

Q3 引用標註: Skill 是否要求在輸出中標註資料來源?找出相關描述(行號+內容)。

Q4 獨立驗證: 使用者拿到 Skill 的輸出後,能否獨立驗證其準確性?需要什麼資訊?

評分公式

子項 滿分 計算方式
source_classification 40 加權比例 ≥0.8→35-40, 0.6-0.79→25-34, 0.4-0.59→15-24, 0.2-0.39→5-14, <0.2→0-4
citation_annotation 30 有明確的來源標註要求→20-30(按嚴格程度), 偶爾提到→8-19, 無→0-7
independent_verifiability 30 使用者可完全獨立驗證→22-30, 大部分可驗證→12-21, 少量可驗證→4-11, 無法驗證→0-3

維度 5: 可重現性推斷 (15%)

推斷 Skill 的同輸入同輸出穩定性。

錨定問題(先回答,再打分)

Q1 資料來源確定性: 基於維度4的資料來源盤點,判斷 Skill 屬於哪個 Tier: - Tier 1: 主要強溯源,幾乎無弱/無溯源 - Tier 2: 混合,有一定弱溯源 - Tier 3: 主要弱溯源或無溯源

Q2 狀態管理: Skill 中是否有以下狀態持久化機制?逐項回答有/無+行號: - checkpoint/進度儲存? - 中間結果寫入檔案? - 資料庫記錄? - 如果全無,狀態如何在步驟間傳遞?(純上下文?)

Q3 隨機源: 列出所有可能導致"同輸入不同輸出"的因素(如:依賴搜尋引擎結果、網頁內容變化、AI 推理隨機性等)。

評分公式

子項 滿分 計算方式
tier_determinism 40 Tier 1→30-40, Tier 2→15-29, Tier 3→0-14
state_management 30 有完整持久化(checkpoint+檔案寫入)→22-30, 有部分→10-21, 純上下文→0-9
step_determinism 30 隨機源≤1個→22-30, 2-3個→10-21, ≥4個→0-9

Tier 分類

基於維度 5 Q1 的回答,確定 Skill 的 Tier 分類:

Tier 特徵 典型資料來源
Tier 1 確定性 主要使用 CLI/API/DB,幾乎無網頁爬取 GitHub API, PostgreSQL, 檔案系統
Tier 2 半確定性 混合使用 API 和網頁,有快取機制 天氣API, 電商頁面, 第三方聚合
Tier 3 非確定性 主要依賴開放網際網路搜尋或 AI 推理 搜尋引擎, 使用者生成內容, AI 生成

修正因子(3 個輔助維度)

這三個維度不直接參與加權,但會修正上述五維評分。每個修正因子也通過錨定問題評審。

時效性 (Timeliness) — 修正可重現性

錨定問題: - Q1: 列出 Skill 依賴的所有外部系統/介面(包括 AI 模型本身)。每個標註:最近一次已知的 breaking change 是什麼時候?(如果不確定寫"未知") - Q2: 6 個月後這個 Skill 有多大機率還能正常工作?列出最可能失效的環節(包括 AI 模型升級可能導致的評分傾向變化)。 - Q3: Skill 中是否有快取/版本鎖定/重新整理機制?找出相關描述(行號+內容)。

評分: 0-100。連續修正:修正量 = max(0, (50 - 時效性評分) / 50) × 20%,即評分 50 時不修正,0 時扣減 20%,線性插值。

魯棒性 (Robustness) — 修正幻覺暴露面

錨定問題: - Q1: Skill 或指令碼中是否有輸入校驗?列出所有校驗邏輯(行號+校驗內容)。 - Q2: 如果某個中間步驟失敗,Skill 是否能跳過/回退/降級?找出相關描述。 - Q3: Skill 是否處理了邊界條件(空輸入、超長輸入、格式錯誤等)?

評分: 0-100。連續修正:修正量 = max(0, (50 - 魯棒性評分) / 50) × 10%,即評分 50 時不修正,0 時扣減 10%,線性插值。

發現更多技能外掛,請訪問7w4.net。

級聯穩定性 (Cascade Stability) — 修正可重現性

錨定問題: - Q1: Skill 的步驟鏈路有多長(多少個有依賴關係的步驟)? - Q2: 是否有步驟的輸出是下一步的唯一輸入(緊耦合)?列出這樣的步驟對。 - Q3: 鏈路中是否有中間檢查點可以獨立驗證正確性?

評分: 0-100。連續修正:修正量 = max(0, (50 - 級聯穩定性評分) / 50) × 20%,即評分 50 時不修正,0 時扣減 20%,線性插值。


階段 3: 輸出結構化評分 JSON

  • [ ] 將上一階段的評審結果組織為以下 JSON 格式。

重要:每個維度必須包含 anchoring_answers 欄位,完整記錄錨定問題的回答過程,確保評分推導可複核:

{
  "skill_name": "skill 名稱",
  "skill_path": "/path/to/skill",
  "description": "skill 簡短描述",
  "tier": 2,
  "dimensions": {
    "anchor_density": {
      "score": 70,
      "sub_scores": {
        "anchor_coverage": 30,
        "anchor_intensity": 22,
        "verification_loop": 18
      },
      "anchoring_answers": {
        "Q1_anchor_list": [
          {"type": "CLI", "location": "SKILL.md:47", "content": "python3 srl_analyzer.py"},
          {"type": "檔案系統", "location": "SKILL.md:50", "content": "讀取 _meta.json"}
        ],
        "Q2_coverage": "2/5 階段有錨點 = 40%",
        "Q3_verification_loops": [
          "JSON輸出 → validate_input() 校驗"
        ]
      },
      "evidence": [
        "SKILL.md:47 使用 python3 srl_analyzer.py 執行指令碼",
        "scripts/xxx.py:135 呼叫 subprocess 執行 CLI 命令"
      ]
    },
    "hallucination_exposure": {
      "score": 65,
      "sub_scores": {
        "speculative_ratio": 25,
        "external_validation": 20,
        "output_determinism": 20
      },
      "evidence": ["..."]
    },
    "failure_transparency": {
      "score": 55,
      "sub_scores": {
        "error_handling_strategy": 20,
        "confidence_degradation": 18,
        "idk_capability": 17
      },
      "evidence": ["..."]
    },
    "traceability": {
      "score": 60,
      "sub_scores": {
        "source_classification": 25,
        "citation_annotation": 18,
        "independent_verifiability": 17
      },
      "evidence": ["..."]
    },
    "reproducibility": {
      "score": 50,
      "sub_scores": {
        "tier_determinism": 20,
        "state_management": 15,
        "step_determinism": 15
      },
      "evidence": ["..."]
    }
  },
  "corrections": {
    "timeliness": 70,
    "robustness": 60,
    "cascade_stability": 55
  },
  "improvement_suggestions": [
    "🔧 [失敗語義清晰度] 當前 55/100 → 在階段 X 的 API 呼叫後新增 HTTP 狀態碼檢查,非 200 時停止執行並報告",
    "🔧 [可重現性] 當前 50/100 → 新增 checkpoint 檔案將中間狀態寫入磁碟,減少對長上下文的依賴"
  ],
  "metadata": {
    "total_files": 8,
    "total_lines": 500,
    "skill_md_lines": 200,
    "total_phases": 5,
    "total_steps": 20,
    "has_scripts": true,
    "has_references": true,
    "script_files": ["scripts/xxx.py"]
  }
}

評分質量檢查

在輸出 JSON 前進行自檢,並在 JSON 頂層新增 "quality_checks" 欄位記錄檢查結果: - [ ] 每個維度的 score 等於其 sub_scores 所有子項之和 - [ ] 所有分數在 0-100 範圍內 - [ ] 每個維度至少有 2 條 evidence - [ ] 每個維度包含 anchoring_answers 欄位 - [ ] improvement_suggestions 按維度得分從低到高排序,為最低的 3 個維度各給 1-2 條建議 - [ ] 建議必須是具體可執行的(不是"改進錯誤處理",而是"在第X步的API呼叫後新增返回值檢查")

在 JSON 頂層新增:

"quality_checks": {
  "sub_scores_sum_match": true,
  "scores_in_range": true,
  "evidence_count_ok": true,
  "anchoring_answers_present": true,
  "all_passed": true
}

自檢失敗時的處理: 如果自檢發現 sub_scores 求和不等於 score,或分數超出範圍: 1. 優先自行修正:調整 sub_scores 使其求和等於 score,或將越界分數鉗位到 0-100 2. 修正後再輸出:不要輸出已知錯誤的 JSON 3. 如果無法自行修正(如發現邏輯矛盾無法調和):直接輸出當前 JSON 並在 improvement_suggestions 首條新增 "⚠️ 評分自檢未通過: [具體問題],建議人工複核",讓指令碼的 validate_input() 做最終攔截


階段 4: 執行計算指令碼

  • [ ] 將階段 3 的 JSON 儲存為臨時檔案或通過 stdin 傳遞給指令碼:
# 方式一:通過 stdin(路徑使用本 Skill 目錄的絕對路徑)
echo '<JSON資料>' | python3 <本Skill的scripts目錄絕對路徑>/srl_analyzer.py

# 方式二:通過檔案
python3 <本Skill的scripts目錄絕對路徑>/srl_analyzer.py --input /tmp/srl-eval-input.json

# 檢視輸入 JSON Schema 說明
python3 <本Skill的scripts目錄絕對路徑>/srl_analyzer.py --schema

# 示例(假設 Skill 位於專案 .claude/skills/ 下):
# python3 /absolute/path/to/.claude/skills/skill-evaluator-srl/scripts/srl_analyzer.py --input /tmp/srl-eval-input.json
  • [ ] 指令碼會自動完成:
  • 修正因子應用(時效性/魯棒性/級聯穩定性)
  • 五維加權求和
  • SRL 等級對映
  • Markdown/JSON 報告生成

  • [ ] 獲取指令碼輸出的報告


階段 5: 輸出最終報告

報告儲存

  • [ ] 將指令碼輸出的 Markdown 報告儲存到目標 Skill 目錄下的 .srl-report.md
  • [ ] 將 JSON 報告儲存到 .srl-report.json
# 生成 Markdown 報告
echo '<JSON>' | python3 <本Skill的scripts目錄絕對路徑>/srl_analyzer.py > /path/to/target-skill/.srl-report.md

# 生成 JSON 報告
echo '<JSON>' | python3 <本Skill的scripts目錄絕對路徑>/srl_analyzer.py --json > /path/to/target-skill/.srl-report.json

終端展示

  • [ ] 在終端直接展示完整評估報告的關鍵內容(總評 + 五維評分 + 改進清單)

批次評估額外輸出

如果是批次評估模式: - [ ] 逐個 Skill 執行階段 1-4 - [ ] 彙總所有結果,生成排名表 - [ ] 傳入 JSON 陣列給指令碼使用 --batch 模式


參考文件

📁 包含檔案 (7 個)

📄 README.md 5.9 KB
📄 SKILL.md 20.5 KB
📄 _meta.json 138 B
📄 assets/SRL-EVAL-TEMPLATE.md 4.7 KB
📄 references/scoring-criteria.md 12.1 KB
📄 references/srl-framework.md 6.4 KB
📄 scripts/srl_analyzer.py 31.2 KB