<!-- title: Claude Code Skill评测工程：Eval驱动质量闭环 -->

## 概述

本教程面向已经掌握Skill基础创建、希望系统化验证Skill质量的开发者。你将学会：用evals.json定义测试用例，用skill-creator四大模式驱动创建-测试-改进-基准的完整闭环，掌握触发率调优、回归检测、A/B盲测三项核心评测能力，最终构建一个经过数据验证的生产级Skill。适用人群：有3个月以上Claude Code使用经验、已创建过至少一个自定义Skill的开发者。

## 前置条件

- Claude Code v2.1.145+ 已安装并登录
- 熟悉SKILL.md基本格式（YAML frontmatter + Markdown body）
- 至少创建过一个可运行的Skill（项目级或个人级均可）
- 已安装skill-creator插件（见下文安装步骤）
- 一个Git仓库作为练习项目

## 第零步：安装skill-creator插件

skill-creator是Anthropic官方提供的Skill开发工具链插件，2026年3月更新后新增Eval、Benchmark、Improve三大模式。

```bash
# 方式一：从官方仓库安装
claude plugin add anthropics/claude-plugins-official --plugin skill-creator

# 方式二：从插件市场安装
claude plugin install skill-creator

# 验证安装
claude /skill-creator
```

安装完成后，`/skill-creator`命令可用。它提供四个核心模式：

```mermaid
graph TD
    A[用户需求] --> B[Create模式<br/>创建Skill]
    B --> C[Eval模式<br/>运行测试用例]
    C --> D{通过率 >= 80%?}
    D -->|否| E[Improve模式<br/>优化描述/指令]
    E --> C
    D -->|是| F[Benchmark模式<br/>基准对比]
    F --> G{Skill优于基线?}
    G -->|否| H[重新设计Skill]
    H --> B
    G -->|是| I[生产发布]
```

## 第一步：理解评测架构——四个Agent协作

skill-creator的评测系统不是单次问答，而是四个独立Agent在隔离上下文中并行工作：

| Agent | 职责 | 输入 | 输出 |
|-------|------|------|------|
| Executor | 执行Skill，运行测试prompt | evals.json中的prompt | 实际输出 + metrics.json |
| Grader | 评判输出是否符合预期 | expectations列表 + Executor输出 | grading.json（通过/失败） |
| Comparator | 盲测A/B对比 | 两组匿名输出 | 偏好判定 |
| Analyzer | 聚合分析，发现模式 | 所有grading + timing数据 | 改进建议 |

核心数据文件流转：

```
skill-name/
├── SKILL.md              # 被测Skill本体
├── evals.json            # 测试用例定义（你编写）
├── grading.json          # Grader评判结果（自动生成）
├── metrics.json          # 运行时统计（工具调用、步骤数）
├── timing.json           # 墙钟时间与Token消耗
└── history.json          # 版本迭代记录
```

```mermaid
sequenceDiagram
    participant User as 开发者
    participant SC as skill-creator
    participant Exec as Executor Agent
    participant Grade as Grader Agent
    participant Anal as Analyzer Agent

    User->>SC: /skill-creator eval
    SC->>Exec: 加载evals.json中的prompt
    loop 每个测试用例
        Exec->>Exec: 在隔离context中运行Skill
        Exec->>Grade: 输出结果
        Grade->>Grade: 逐条检查expectations
    end
    Grade->>Anal: 汇总grading.json
    Anal->>Anal: 分析失败模式、Token分布
    Anal->>User: 评测报告 + 改进建议
```

## 第二步：编写evals.json——测试用例定义

evals.json是评测的核心。它定义了一组测试prompt和对应的期望输出。这是你的Skill的"单元测试"。

### evals.json Schema

```json
{
  "skill_name": "deploy-checker",
  "version": "1.0.0",
  "evals": [
    {
      "id": "eval-001",
      "category": "trigger",
      "prompt": "检查一下我的代码是否可以部署到生产环境",
      "expected_output": "应该执行部署就绪检查，分析git状态、测试覆盖率、构建状态",
      "expectations": [
        {
          "type": "contains",
          "value": "部署",
          "description": "输出应包含部署相关术语"
        },
        {
          "type": "tool_used",
          "value": "Bash",
          "description": "应使用Bash工具检查git/测试状态"
        },
        {
          "type": "not_contains",
          "value": "直接部署",
          "description": "不应建议直接部署，而是先做检查"
        }
      ]
    },
    {
      "id": "eval-002",
      "category": "functional",
      "prompt": "我改了auth模块，帮我看看能不能安全上线",
      "expected_output": "应重点检查认证相关的安全问题",
      "expectations": [
        {
          "type": "contains",
          "value": "安全",
          "description": "应提及安全检查"
        },
        {
          "type": "file_read",
          "value_pattern": "auth",
          "description": "应读取auth相关文件"
        },
        {
          "type": "structured_output",
          "description": "输出应有结构化的检查清单"
        }
      ]
    },
    {
      "id": "eval-003",
      "category": "negative",
      "prompt": "帮我写一个Python排序算法",
      "expected_output": "不应触发此Skill",
      "expectations": [
        {
          "type": "not_triggered",
          "description": "此prompt不应触发deploy-checker"
        }
      ]
    }
  ]
}
```

### expectation类型详解

| type | 含义 | value格式 |
|------|------|-----------|
| `contains` | 输出必须包含指定文本 | 字符串 |
| `not_contains` | 输出不能包含指定文本 | 字符串 |
| `tool_used` | 必须使用了指定工具 | 工具名（Read/Bash/Grep等） |
| `file_read` | 必须读取了匹配的文件 | 正则表达式 |
| `not_triggered` | Skill不应被触发 | 无需value |
| `structured_output` | 输出应有结构化格式 | 可选描述 |
| `custom` | 自定义判断逻辑 | 自然语言描述 |

### 测试用例的三种类别

**触发测试（trigger）**：验证Skill是否在正确的时机激活。这是最基础也最关键的测试——如果Skill不触发，一切都是空谈。

```json
{
  "id": "trigger-positive-001",
  "category": "trigger",
  "prompt": "准备上线，帮我做最后检查",
  "expectations": [
    {"type": "triggered", "description": "应触发deploy-checker"}
  ]
}
```

**功能测试（functional）**：验证Skill执行后的输出质量。检查是否按预期流程工作。

```json
{
  "id": "func-001",
  "category": "functional",
  "prompt": "检查部署就绪状态",
  "expectations": [
    {"type": "tool_used", "value": "Bash", "description": "运行git/test命令"},
    {"type": "contains", "value": "检查清单", "description": "输出检查清单"},
    {"type": "contains", "value": "风险", "description": "识别潜在风险"}
  ]
}
```

**负面测试（negative）**：验证Skill在不应触发时保持沉默。防止误触发浪费上下文。

```json
{
  "id": "neg-001",
  "category": "negative",
  "prompt": "这段CSS怎么居中？",
  "expectations": [
    {"type": "not_triggered", "description": "CSS问题不应触发部署检查"}
  ]
}
```

## 第三步：实战——构建一个可评测的部署检查Skill

让我们从零构建一个完整的、经过评测验证的Skill：`deploy-checker`（部署就绪检查器）。

### 3.1 创建Skill目录

```bash
mkdir -p ~/.claude/skills/deploy-checker
cd ~/.claude/skills/deploy-checker
```

### 3.2 编写SKILL.md

```markdown
---
name: deploy-checker
description: >
  检查代码是否准备好部署到生产环境。分析git状态、测试覆盖率、
  构建状态和安全风险。Use when the user asks about deploying,
  going to production, release readiness, or pre-deploy checks.
argument-hint: [environment]
---

# Deploy Readiness Checker

## Overview
评估当前代码变更是否可以安全部署。通过多层检查生成结构化的就绪报告。

## Pre-check: Dynamic Context
!`git status --short 2>/dev/null || echo "Not a git repo"`
!`git log --oneline -5 2>/dev/null || echo "No git history"`
!`git diff --stat HEAD 2>/dev/null || echo "No uncommitted changes"`

## Steps

### Step 1: Change Analysis
1. Use `Read` to examine each modified file from the git status above
2. Classify changes by impact level:
   - **CRITICAL**: auth, payment, database schema, config changes
   - **HIGH**: API endpoints, business logic, data processing
   - **MEDIUM**: UI components, documentation, tests
   - **LOW**: formatting, comments, dependencies

### Step 2: Test Coverage Check
1. Run `Bash` to check test status: look for test commands in package.json/Makefile
2. Identify untested changed files
3. Flag any modified critical files without corresponding test changes

### Step 3: Security Scan
For each CRITICAL/HIGH change, check:
- No hardcoded secrets (API keys, passwords, tokens)
- No SQL injection patterns (string concatenation in queries)
- No exposed debug endpoints
- Auth changes follow security best practices

### Step 4: Dependency Check
1. Check for new dependencies in package.json/requirements.txt
2. Flag any unknown or low-maintenance packages
3. Verify lock files are updated

## Output Format

### Deploy Readiness Report

| Check | Status | Details |
|-------|--------|---------|
| Change Impact | ✅/⚠️/❌ | Summary of change classification |
| Test Coverage | ✅/⚠️/❌ | Coverage of changed files |
| Security | ✅/⚠️/❌ | Security issues found |
| Dependencies | ✅/⚠️/❌ | New dependency assessment |

### Risk Items (if any)
For each risk:
- **File**: `path/to/file:line`
- **Severity**: CRITICAL / HIGH / MEDIUM / LOW
- **Issue**: Description
- **Recommendation**: How to fix

### Verdict
- **READY**: All checks pass, safe to deploy
- **READY WITH CAUTION**: Minor issues, document risks
- **NOT READY**: Blocking issues found, do not deploy

## Error Handling
- If not in a git repo: report "No git repository detected, limited checks available"
- If no test framework found: report "No test framework detected, manual testing required"
- If build fails: report as CRITICAL blocking issue
```

注意这个Skill使用了动态上下文注入（`!`git status --short``语法）——在Skill被加载时，这些命令会先执行，输出结果替换占位符。Claude看到的不是命令，而是实际的git状态。

### 3.3 编写evals.json

在同一目录创建`evals.json`：

```json
{
  "skill_name": "deploy-checker",
  "version": "1.0.0",
  "evals": [
    {
      "id": "trigger-001",
      "category": "trigger",
      "prompt": "我的代码能上线了吗",
      "expected_output": "触发部署就绪检查",
      "expectations": [
        {"type": "triggered", "description": "应触发deploy-checker"}
      ]
    },
    {
      "id": "trigger-002",
      "category": "trigger",
      "prompt": "准备发布到生产环境，帮我把关",
      "expected_output": "触发部署就绪检查",
      "expectations": [
        {"type": "triggered", "description": "应触发deploy-checker"}
      ]
    },
    {
      "id": "trigger-003",
      "category": "trigger",
      "prompt": "pre-deploy check for the latest changes",
      "expected_output": "触发部署就绪检查",
      "expectations": [
        {"type": "triggered", "description": "英文prompt也应触发"}
      ]
    },
    {
      "id": "neg-001",
      "category": "negative",
      "prompt": "帮我写一个二叉树的层序遍历",
      "expected_output": "不应触发此Skill",
      "expectations": [
        {"type": "not_triggered", "description": "算法问题不相关"}
      ]
    },
    {
      "id": "neg-002",
      "category": "negative",
      "prompt": "这段代码的时间复杂度是多少",
      "expected_output": "不应触发此Skill",
      "expectations": [
        {"type": "not_triggered", "description": "复杂度分析不相关"}
      ]
    },
    {
      "id": "func-001",
      "category": "functional",
      "prompt": "检查我的代码能不能部署",
      "expected_output": "生成结构化的部署就绪报告",
      "expectations": [
        {"type": "tool_used", "value": "Bash", "description": "执行git/test命令"},
        {"type": "contains", "value": "检查", "description": "包含检查相关内容"},
        {"type": "structured_output", "description": "输出应为结构化报告"}
      ]
    },
    {
      "id": "func-002",
      "category": "functional",
      "prompt": "我刚改了支付模块，能上线吗",
      "expected_output": "重点检查支付模块安全性",
      "expectations": [
        {"type": "tool_used", "value": "Bash", "description": "检查git差异"},
        {"type": "contains", "value": "安全", "description": "支付模块必须安全检查"},
        {"type": "contains", "value": "CRITICAL", "description": "支付变更应标记为高影响"}
      ]
    }
  ]
}
```

## 第四步：运行评测——Eval模式详解

### 4.1 运行首次评测

在Claude Code中执行：

```
/skill-creator eval deploy-checker
```

skill-creator会：
1. 读取`deploy-checker/evals.json`
2. 为每个测试用例启动一个独立的Executor Agent
3. Executor执行prompt，记录所有工具调用和输出
4. Grader Agent逐条检查expectations
5. 汇总结果到`grading.json`

### 4.2 理解评测报告

评测完成后，你将看到类似输出：

```
━━━ Eval Report: deploy-checker v1.0.0 ━━━

📊 Summary: 5/7 passed (71.4%)

✅ trigger-001   [trigger]   "我的代码能上线了吗" → TRIGGERED
✅ trigger-002   [trigger]   "准备发布到生产环境..." → TRIGGERED  
✅ trigger-003   [trigger]   "pre-deploy check..." → TRIGGERED
✅ neg-001       [negative]  "帮我写一个二叉树..." → NOT TRIGGERED ✓
✅ neg-002       [negative]  "这段代码的时间..." → NOT TRIGGERED ✓
❌ func-001      [functional] "检查我的代码能不能..." 
   → FAIL: expectation "structured_output" not met
❌ func-002      [functional] "我刚改了支付模块..."
   → FAIL: "CRITICAL" not found in output

📈 Metrics:
   Total tokens: 12,847
   Avg duration: 8.3s per eval
   Tools used: Bash(12), Read(8), Grep(3)
```

### 4.3 分析失败原因

两个功能测试失败：
1. **func-001**：输出缺少结构化格式——说明SKILL.md的指令不够明确
2. **func-002**：未将支付模块标记为CRITICAL——说明分类逻辑需要加强

## 第五步：Improve模式——数据驱动优化

### 5.1 描述优化——触发率调优

触发测试全部通过，但如果你在更大规模的测试中发现触发问题，Improve模式可以分析description字段并给出优化建议。

运行：
```
/skill-creator improve deploy-checker --focus trigger
```

Analyzer Agent会检查description中的关键词与测试prompt的匹配度，生成优化建议：

```
━━━ Trigger Analysis ━━━

Current description:
"检查代码是否准备好部署到生产环境。分析git状态、测试覆盖率、
构建状态和安全风险。Use when the user asks about deploying..."

Suggestions:
1. ADD trigger phrase: "can I release", "上线", "发布"
2. ADD negative trigger: "Do NOT use for coding questions, algorithm help"
3. IMPROVE: Include "pre-deploy" as explicit trigger keyword

Optimized description:
"检查代码变更是否准备好部署到生产环境。分析git状态、测试覆盖率、
构建状态和安全风险。Use when the user asks about deploying, release 
readiness, going to production, pre-deploy checks, 上线检查, or 发布.
Do NOT use for general coding questions or algorithm help."
```

### 5.2 指令优化——功能测试改进

针对func-001和func-002的失败，改进SKILL.md中的指令。

关键改进点：
1. 在Output Format部分明确要求使用Markdown表格
2. 在Step 1的CRITICAL分类中明确列出"payment"关键词

改进后重新运行评测：

```
/skill-creator eval deploy-checker

━━━ Eval Report: deploy-checker v1.1.0 ━━━
📊 Summary: 7/7 passed (100%) ✅
📈 Tokens: 14,203 (+10%) | Avg duration: 9.1s
```

所有测试通过，Token消耗轻微增加（因为指令更详细了），但质量达标。

## 第六步：Benchmark模式——Skill vs 无Skill对比

这是最关键的验证：你的Skill是否真的比裸模型表现更好？

### 6.1 运行基准测试

```
/skill-creator benchmark deploy-checker
```

Benchmark模式会并行运行两组测试：
- **with_skill**：加载SKILL.md后运行evals
- **without_skill**：不加载Skill，直接运行相同的prompt

Comparator Agent进行盲测对比——它不知道哪组输出来自哪个版本。

### 6.2 解读Benchmark报告

```
━━━ Benchmark Report: deploy-checker ━━━

┌─────────────────┬────────────┬──────────────┐
│ Metric          │ With Skill │ Without Skill│
├─────────────────┼────────────┼──────────────┤
│ Pass Rate       │ 100% (7/7) │ 42.9% (3/7) │
│ Avg Tokens      │ 14,203     │ 9,812        │
│ Avg Duration    │ 9.1s       │ 5.3s         │
│ Structure Score │ 4.2/5      │ 1.8/5        │
│ Completeness    │ 92%        │ 45%          │
│ Consistency     │ 100%       │ 28%          │
└─────────────────┴────────────┴──────────────┘

Verdict: SKILL IMPROVES OUTPUT QUALITY ✅
- +57% pass rate improvement
- +133% structure score
- +104% completeness
- +257% consistency across runs
- Token cost: +45% (acceptable trade-off)
```

裸模型能处理简单的"检查代码"请求，但：
- 输出格式不一致（每次不同结构）
- 经常遗漏安全检查步骤
- 不了解你的项目约定
- 对支付等敏感模块缺乏特殊处理

你的Skill通过编码这些知识，显著提升了输出的一致性和完整性。

### 6.3 回归检测——模型升级后重新评测

当Claude模型更新时，重新运行Benchmark：

```
/skill-creator benchmark deploy-checker --compare previous
```

这会将新模型的结果与上次的历史记录对比。如果发现通过率下降，说明存在回归，需要调整Skill。

## 第七步：高级评测技巧

### 7.1 多Agent并行评测

对于大型Skill，评测可能耗时很长。skill-creator支持多Agent并行：

```bash
# 通过设置环境变量控制并行度
export SKILL_CREATOR_PARALLEL=4

# 运行评测（自动并行化）
/skill-creator eval deploy-checker
```

每个测试用例在一个隔离的Agent中运行，互不干扰，避免上下文污染。

### 7.2 A/B盲测——两个Skill版本对比

当你不确定改进是否真的有效时，使用A/B盲测：

```
/skill-creator benchmark deploy-checker --ab-test
```

Comparator Agent会在不知道版本标签的情况下评判两组输出。这消除了确认偏差——有时你以为的"改进"实际上降低了质量。

### 7.3 评测集的分层管理

对于复杂Skill，建议按优先级分层管理测试用例：

```json
{
  "skill_name": "deploy-checker",
  "evals": [
    {
      "id": "P0-critical-001",
      "priority": "P0",
      "comment": "必须#1通过的用例，失败即阻塞发布"
    },
    {
      "id": "P1-important-001", 
      "priority": "P1",
      "comment": "应在Top 3中，允许偶尔失败"
    },
    {
      "id": "P2-nice-001",
      "priority": "P2",
      "comment": "能触发就好，排名不重要"
    }
  ]
}
```

优先级定义：
- **P0**：阻塞级，必须100%通过。任何失败意味着Skill不可用
- **P1**：重要级，应>=90%通过。偶尔失败可接受
- **P2**：辅助级，>=70%通过即可

### 7.4 CI集成——自动化评测流水线

将评测集成到CI/CD中，确保每次修改都经过验证：

```bash
#!/bin/bash
# ci-skill-eval.sh

SKILL_NAME=$1
PASS_THRESHOLD=80

# 运行评测
claude -p "/skill-creator eval $SKILL_NAME --json > eval-results.json"

# 解析通过率
PASS_RATE=$(python3 -c "
import json
with open('eval-results.json') as f:
    data = json.load(f)
print(data['summary']['pass_rate'])
")

# 判断是否通过
if (( $(echo "$PASS_RATE < $PASS_THRESHOLD" | bc -l) )); then
    echo "❌ Skill $SKILL_NAME eval failed: ${PASS_RATE}% < ${PASS_THRESHOLD}%"
    exit 1
else
    echo "✅ Skill $SKILL_NAME eval passed: ${PASS_RATE}%"
    exit 0
fi
```

在GitHub Actions中使用：

```yaml
name: Skill Eval
on: [pull_request]
jobs:
  eval:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code
      - name: Run Skill Evals
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          ./ci-skill-eval.sh deploy-checker
```

## 第八步：两种Skill类型的不同评测策略

Anthropic在官方博客中区分了两类Skill，它们的评测重点不同：

### Capacity Uplift（能力提升型）

这类Skill帮助Claude做到裸模型做不好或做不稳定的事。例如：专业级的文档排版、复杂的安全审计。

评测重点：
- **与基线对比**：裸模型 vs Skill的输出质量差异
- **过期检测**：模型升级后重新运行无Skill基线，如果裸模型已经能做好，说明Skill可能需要退役
- **一致性**：多次运行的输出质量方差

```mermaid
graph LR
    A[模型升级] --> B[运行无Skill基线]
    B --> C{基线通过率?}
    C -->|<80%| D[Skill仍然必要<br/>继续维护]
    C -->|>=80%| E[Skill可能过期<br/>考虑简化或退役]
    E --> F[运行A/B对比]
    F --> G{Skill仍优于基线?}
    G -->|是| D
    G -->|否| H[退役Skill]
```

### Encoded Preference（编码偏好型）

这类Skill不教Claude"怎么做"，而是告诉它"去哪里找信息、按什么顺序处理"。例如：公司周报生成流程、代码审查checklist。

评测重点：
- **流程忠实度**：是否严格遵循定义的步骤顺序
- **数据源完整性**：是否从所有指定来源获取了信息
- **输出格式一致性**：每次运行的结构是否一致

这类Skill更耐用——模型越强，执行效果越好。评测时应关注忠实度而非绝对质量。

## 完整实战案例：从创建到评测验证的全流程

让我们把上述所有步骤串起来，演示一个完整的Skill生命周期：

```mermaid
flowchart TB
    subgraph Phase1["阶段一：创建"]
        A1[识别重复工作流] --> A2[编写SKILL.md]
        A2 --> A3[编写evals.json<br/>5+测试用例]
    end

    subgraph Phase2["阶段二：验证"]
        B1[运行Eval模式] --> B2{通过率?}
        B2 -->|<80%| B3[分析失败用例]
        B3 --> B4[改进SKILL.md]
        B4 --> B1
        B2 -->|>=80%| B5[进入Benchmark]
    end

    subgraph Phase3["阶段三：基准"]
        B5 --> C1[运行with/without对比]
        C1 --> C2{Skill优于基线?}
        C2 -->|否| C3[重新评估Skill价值]
        C3 --> A2
        C2 -->|是| C4[记录benchmark基线]
    end

    subgraph Phase4["阶段四：维护"]
        C4 --> D1[模型更新时重跑Benchmark]
        D1 --> D2{回归?}
        D2 -->|是| B3
        D2 -->|否| D3[发布/继续使用]
    end

    Phase1 --> Phase2 --> Phase3 --> Phase4
```

### 关键指标跟踪表

| 阶段 | 核心指标 | 目标值 | 工具 |
|------|----------|--------|------|
| 创建 | 测试用例覆盖度 | >=5个，覆盖3种类别 | 手动编写 |
| 验证 | Eval通过率 | >=80% | skill-creator eval |
| 基准 | vs无Skill提升 | >=20%通过率提升 | skill-creator benchmark |
| 维护 | 回归检测间隔 | 每次模型更新后 | CI自动化 |

## 常见问题与解决方案

### Q1：Skill触发率低，经常需要手动`/skill-name`调用

**原因**：description字段不够精确，缺少关键触发词。

**解决**：使用Improve模式优化description。关键是加入"Use when..."句式和多种表述的同义短语。官方数据显示，优化description后触发准确率可从61%提升至88%。

```yaml
# 改进前
description: Helps with deployment

# 改进后
description: >
  Checks code readiness for production deployment. Analyzes git status,
  test coverage, build state, and security risks. Use when the user 
  asks about deploying, release readiness, going to production, 
  pre-deploy checks, 上线检查, or 发布.
```

### Q2：Eval运行报错"Skill not found"

**原因**：evals.json中的`skill_name`与SKILL.md目录名不匹配。

**解决**：确保三处一致：
1. 目录名：`deploy-checker/`
2. SKILL.md中name字段：`name: deploy-checker`
3. evals.json中skill_name：`"skill_name": "deploy-checker"`

### Q3：功能测试时好时坏，通过率不稳定

**原因**：LLM的随机性导致输出波动。

**解决**：使用Benchmark模式多次运行（默认3-5次），取平均值。关注通过率的置信区间而非单次结果。

```bash
# 运行5次取平均
/skill-creator benchmark deploy-checker --runs 5
```

### Q4：Skill的Token消耗过高

**原因**：SKILL.md过长或动态注入的上下文过多。

**解决**：
1. 将详细参考文档移至`references/`子目录，SKILL.md中只保留核心指令
2. 限制动态注入命令的输出：`!`git log --oneline -5``而非完整log
3. 使用`context: fork`让Skill在隔离上下文中运行，不污染主对话

### Q5：如何判断Skill是否应该退役

**决策框架**：
1. 运行Benchmark，对比无Skill基线
2. 如果无Skill基线通过率>=90%，且Skill无额外增益——考虑退役
3. 如果Skill是Encoded Preference型——通常不应退役，因为模型越强执行越好
4. 如果Skill是Capacity Uplift型——裸模型已经能做到，可以退役

## 训练营适用性评估

| 维度 | 评估 |
|------|------|
| 适合训练营类型 | AI工程训练营、Claude Code进阶训练营 |
| 学员基础要求 | 已有Skill创建经验，理解YAML和Markdown |
| 预计教学时长 | 3-4小时（含实操） |
| 实操占比 | 70%（大量时间用于编写evals、运行评测、分析结果） |
| 所需环境 | 每人一个Git仓库 + Claude Code + skill-creator插件 |
| 课前准备 | 学员需提前创建一个简单Skill带到课堂 |
| 最佳分组方式 | 2人一组，互相编写对方Skill的测试用例 |

---

## 参考来源
1. [Extend Claude with skills - Claude Code Docs](https://code.claude.com/docs/en/skills) — Anthropic官方Skills文档，涵盖创建、配置、高级模式全流程
2. [Improving skill-creator: Test, measure, and refine Agent Skills](https://claude.com/blog/improving-skill-creator-test-measure-and-refine-agent-skills) — Anthropic官方博客，介绍eval/benchmark/improve三大新模式
3. [SKILL.md Format Specification - agensi.io](https://www.agensi.io/learn/skill-md-format-reference) — SKILL.md格式完整参考，包含所有frontmatter字段详解
4. [Build a Claude Skill: YAML Frontmatter, SKILL.md Instructions](https://sjramblings.io/building-skills-for-claude-part-2/) — 第三方深度教程，覆盖描述优化和测试方法
5. [Claude Code Skills 2.0: Evals, Benchmarks and A/B Testing](https://pasqualepillitteri.it/en/news/341/claude-code-skills-2-0-evals-benchmarks-guide) — Skills 2.0功能全面解析，含Capacity Uplift vs Encoded Preference对比分析

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
