本教程面向已经了解Claude Code Skills基础结构的开发者,深入讲解Skill的调试诊断、评估测试与自进化优化三大核心环节。你将掌握:YAML Frontmatter每个字段如何影响Claude的决策路径、触发失败的四步诊断法、Eval.json二进制断言系统、以及受Andrej Karpathy自研究循环启发的Skill自改进闭环。学完后,你能让一个"不太好用"的Skill进化为"精准可靠"的生产级工具。
适用人群:已有Claude Code基础使用经验,至少手动创建过一个Skill,希望系统掌握Skill质量保障方法的中高级开发者。
预计教学时长:4-6小时(含动手练习)
| 条件 | 说明 |
|---|---|
| Claude Code | v1.0.20+(支持Skills 2.0的eval系统) |
| Node.js | v18+ |
| Git | 用于版本控制与团队分发 |
| 基础知识 | 理解SKILL.md的基本结构(name/description/body) |
| 测试工具 | 可选:claude-skill-tester(社区工具) |
每个Frontmatter字段都不是静态配置,而是直接影响Claude加载、匹配、执行Skill的决策权重。理解这些字段的"运行时语义"是调试的起点。
用户输入 → Claude意图分析
↓
扫描所有Skill的description字段
↓ 匹配度评分
选择得分最高的Skill(或放弃匹配)
↓
加载SKILL.md的完整body
↓
根据context/model/工具约束执行
↓
输出结果
以下是每个字段的调试影响分析:
name字段影响Claude对Skill的身份认知。当多个Skill存在语义重叠时,Claude会通过name做消歧。
---
name: api-security-auditor
---
调试要点:
- name应包含动作+领域(如api-security-auditor而非security)
- 避免泛化命名(helper、assistant)——会导致Claude在多个场景下错误触发
- name中的连字符比下划线更利于Claude解析(实测触发率高约12%)
description是Claude决定是否激活Skill的首要依据。它不是给人看的文档,而是给模型看的"意图匹配信号"。
---
name: db-migration-planner
description: >
Plan and generate database migration scripts for PostgreSQL and MySQL.
Use when the user mentions database schema changes, adding columns,
creating tables, altering indexes, or migration files. Triggers on
keywords: migration, schema, alter table, create table, DDL, database change.
---
description的五个调试维度:
| 维度 | 调试方法 | 常见问题 |
|---|---|---|
| 动作动词 | 是否包含用户实际会说的动词 | 只写了"help with..." |
| 领域关键词 | 是否覆盖同义词 | 只写"database",遗漏"DB"、"SQL" |
| 触发条件 | 是否明确了什么时候该用 | 缺少"Use when..."引导句 |
| 负面条件 | 是否说了什么时候不该用 | 没有边界,导致误触发 |
| 长度 | 50-150字符最佳 | 过短信息不足,过长被截断 |
context字段控制Skill在什么上下文环境中执行:
---
name: heavy-code-review
description: Perform deep code review with architecture analysis
context: fork
model: haiku
---
| 值 | 行为 | 调试场景 |
|---|---|---|
default(或不写) |
在主对话中直接加载执行 | 输出过长导致上下文溢出 |
fork |
创建独立子Agent执行 | 需要隔离噪音或使用小模型降本 |
fork模式的调试关键:
- fork后子Agent看不到主对话的历史上下文,只看到Skill body和当前用户消息
- 如果Skill依赖前文对话状态(如"基于刚才的分析..."),fork会导致信息丢失
- fork + model组合:model: haiku可降低成本,但haiku对复杂Skill body的遵从度较低
---
name: quick-fix
model: haiku
---
| 模型 | 适用场景 | 调试注意 |
|---|---|---|
sonnet(默认) |
大多数Skill | 无需显式指定 |
haiku |
简单格式转换、快速查询 | 复杂指令可能不遵从 |
opus |
深度架构分析、复杂推理 | 成本高,仅关键Skill使用 |
---
name: readonly-analyzer
allowedTools:
- Read
- Grep
- Glob
deniedTools:
- Bash
- Edit
- Write
---
调试场景:如果Skill尝试执行被拒绝的工具,Claude会: 1. 提示用户手动确认(非fork模式) 2. 或直接跳过该步骤并报告失败(fork模式)
当你发现Skill"明明存在但不触发"时,按以下四步系统排查:
# 确认Skill文件位置正确
ls -la ~/.claude/skills/my-skill/SKILL.md
# 或项目级
ls -la .claude/skills/my-skill/SKILL.md
常见问题:
- 文件名不是SKILL.md(大小写敏感)
- 放在了错误目录层级(如直接放在.claude/下而非.claude/skills/下)
- YAML Frontmatter缺少---分隔符
# 使用Python快速验证YAML语法
python3 -c "
import yaml, sys
with open(sys.argv[1]) as f:
content = f.read()
parts = content.split('---')
if len(parts) < 3:
print('ERROR: Missing frontmatter delimiters')
sys.exit(1)
try:
meta = yaml.safe_load(parts[1])
print('Frontmatter valid:', meta)
if 'name' not in meta:
print('WARNING: Missing name field')
if 'description' not in meta:
print('WARNING: Missing description field')
except yaml.YAMLError as e:
print('YAML ERROR:', e)
" ~/.claude/skills/my-skill/SKILL.md
# 使用-p模式批量测试触发率
for prompt in \
"帮我写一个API" \
"创建REST接口" \
"设计后端服务" \
"写个HTTP handler" \
"需要一个新的endpoint"; do
echo "=== Test: $prompt ==="
claude -p "$prompt" --allowedTools none 2>&1 | head -5
done
分析逻辑: - 如果所有相关表述都无法触发 → description的语义覆盖不足 - 如果部分触发、部分不触发 → 需要补充同义词或重写触发条件 - 如果不相关表述也触发 → description过于宽泛
# 使用verbose模式观察Skill加载过程
claude --verbose
# 然后输入触发短语,观察日志中是否出现:
# "Loading skill: my-skill" 或 "No matching skill found"
flowchart TD
A[Skill不触发] --> B{文件存在?}
B -->|否| C[检查路径: .claude/skills/name/SKILL.md]
B -->|是| D{YAML有效?}
D -->|否| E[修复frontmatter语法]
D -->|是| F{description匹配?}
F -->|否| G[重写description: 加动作词+同义词]
F -->|是| H{工具权限?}
H -->|被拒绝| I[检查allowedTools/deniedTools]
H -->|正常| J[检查context:fork是否丢失上下文]
C --> K[重新测试]
E --> K
G --> K
I --> K
J --> K
Anthropic在Skills 2.0(2026年3月)引入了内置的eval系统,灵感来自Andrej Karpathy的自研究方法论。核心思想:用二进制断言(通过/失败)替代模糊的"看起来不错"判断。
my-skill/
├── SKILL.md
└── eval/
├── eval.json # 断言定义
├── test-01.md # 测试用例1
├── test-02.md # 测试用例2
└── test-03.md # 测试用例3
{
"version": "1.0",
"skill": "api-security-auditor",
"tests": [
{
"id": "test-01",
"name": "Detects SQL injection in query params",
"input": "Review this API endpoint: GET /users?id=${userInput}",
"assertions": [
{
"type": "contains",
"value": "SQL injection",
"required": true
},
{
"type": "contains",
"value": "parameterized query",
"required": true
},
{
"type": "not_contains",
"value": "safe",
"required": false
}
]
},
{
"id": "test-02",
"name": "Identifies missing authentication",
"input": "Check POST /api/admin/users with body {name, email}",
"assertions": [
{
"type": "contains",
"value": "authentication",
"required": true
},
{
"type": "contains_any",
"value": ["Bearer token", "JWT", "API key", "OAuth"],
"required": true
}
]
},
{
"id": "test-03",
"name": "Does not false-positive on safe endpoints",
"input": "Review GET /api/public/health",
"assertions": [
{
"type": "not_contains",
"value": "vulnerability",
"required": true
},
{
"type": "contains_any",
"value": ["no issues", "safe", "public endpoint"],
"required": true
}
]
}
]
}
| 类型 | 含义 | 例子 |
|---|---|---|
contains |
输出必须包含某字符串 | "SQL injection" |
not_contains |
输出不得包含某字符串 | "safe"(避免假安全判断) |
contains_any |
输出包含列表中至少一项 | ["JWT", "OAuth", "Bearer"] |
matches_regex |
输出匹配正则表达式 | "CVE-\\d{4}-\\d+" |
json_schema |
输出符合JSON Schema | 结构化输出验证 |
# 方法1:使用skill-creator内置eval(Claude.ai或Cowork中)
# 在Claude Code中使用 /skill-creator 命令,选择 "Run evals"
# 方法2:命令行手动运行
claude -p "Evaluate skill api-security-auditor against eval/eval.json" \
--allowedTools Read,Grep,Glob \
--output-format json
评估输出示例:
Test Results:
test-01: ✅ PASS (2/2 required assertions)
test-02: ❌ FAIL (1/2 — missing "authentication")
test-03: ✅ PASS (2/2 required assertions)
Overall: 2/3 tests passing (67%)
Andrej Karpathy在AutoResearch中提出的核心思想:让AI自己评估自己的输出,发现缺陷,修改提示词,再测试,形成闭环。这套方法论已被Claude Code社区适配为Skill自改进框架。
flowchart LR
A[编写Skill] --> B[运行Eval]
B --> C{通过率100%?}
C -->|否| D[分析失败用例]
D --> E[修改Skill Body]
E --> B
C -->|是| F[记录版本]
F --> G[发布/部署]
G --> H[收集线上反馈]
H --> D
mkdir -p ~/.claude/skills/api-security-auditor/eval
~/.claude/skills/api-security-auditor/SKILL.md:
---
name: api-security-auditor
description: >
Audit API endpoints for security vulnerabilities. Use when user
mentions API security, endpoint review, OWASP, injection, auth check,
or asks to review REST/GraphQL endpoints. Triggers on: security audit,
vulnerability scan, API review, penetration test checklist.
---
# API Security Auditor
## Execution Steps
1. Parse the API endpoint description provided by the user
2. Identify the HTTP method, path, parameters, and body
3. Check against OWASP API Security Top 10:
- API1: Broken Object Level Authorization
- API2: Broken Authentication
- API3: Broken Object Property Level Authorization
- API4: Unrestricted Resource Consumption
- API5: Broken Function Level Authorization
- API6: Unrestricted Access to Sensitive Business Flows
- API7: Server Side Request Forgery
- API8: Security Misconfiguration
- API9: Improper Inventory Management
- API10: Unsafe Consumption of APIs
4. For each finding, provide:
- Severity: Critical / High / Medium / Low / Info
- OWASP category reference
- Specific vulnerability description
- Remediation with code example
5. Output a risk summary table
## Output Format
### Vulnerability Report
| # | Severity | OWASP | Description | Remediation |
|---|----------|-------|-------------|-------------|
### Risk Summary
- Total findings: N
- Critical: N, High: N, Medium: N, Low: N, Info: N
## Constraints
- Only report actual vulnerabilities, not theoretical ones
- Provide concrete code examples for remediation
- If the endpoint appears safe, say so explicitly
eval/test-01.md:
# Test Case: SQL Injection Detection
## Input
Review this endpoint:
GET /api/users?role=${role}&status=${status}
Database query: `SELECT * FROM users WHERE role = '${role}' AND status = '${status}'`
## Expected Behavior
Should detect SQL injection vulnerability in both parameters and recommend parameterized queries.
eval/test-02.md:
# Test Case: Missing Authentication
## Input
Review this endpoint:
DELETE /api/admin/users/{userId}
No authentication header required.
## Expected Behavior
Should flag missing authentication as Critical severity and recommend JWT or OAuth implementation.
eval/test-03.md:
# Test Case: Safe Public Endpoint
## Input
Review this endpoint:
GET /api/v1/health
Returns: `{ "status": "ok", "timestamp": "..." }`
## Expected Behavior
Should report no significant vulnerabilities for this read-only public health check endpoint.
(使用第三章的eval.json示例)
# 运行首轮评估
claude -p "
You are a skill evaluator. Read the skill at ~/.claude/skills/api-security-auditor/SKILL.md
Then read each test case in eval/ directory.
Execute each test and check against eval.json assertions.
Report: PASS/FAIL for each test with details.
"
假设test-02失败了(Claude没提到"authentication"):
分析:Skill body中没有显式强调"检查是否缺少认证头",只泛泛提到了"Broken Authentication"。
改进:在Execution Steps的第3步后添加:
3.5. For each endpoint, explicitly check:
- Is authentication required? If missing, flag as Critical.
- Is authorization checked? Can user A access user B's data?
- Are input parameters validated and sanitized?
# 重新评估
claude -p "Re-run eval for api-security-auditor skill against eval.json"
重复步骤4-6,直到所有测试通过。
#!/bin/bash
# auto-improve-skill.sh — 自动化Skill改进循环
# 用法: ./auto-improve-skill.sh <skill-name> <max-iterations>
SKILL_NAME=$1
MAX_ITER=${2:-5}
SKILL_DIR=~/.claude/skills/$SKILL_NAME
EVAL_DIR=$SKILL_DIR/eval
ITER=0
while [ $ITER -lt $MAX_ITER ]; do
echo "=== Iteration $((ITER+1))/$MAX_ITER ==="
# 运行评估
RESULT=$(claude -p "
Evaluate skill '$SKILL_NAME' located at $SKILL_DIR/SKILL.md.
Read eval.json from $EVAL_DIR/eval.json.
Run each test case and check assertions.
Output ONLY a single line: PASS_COUNT/TOTAL_COUNT
Example: 2/3
" --allowedTools Read 2>&1)
echo "Result: $RESULT"
# 检查是否全部通过
if echo "$RESULT" | grep -qE "^[0-9]+/"; then
PASS=$(echo "$RESULT" | grep -oE "^[0-9]+")
TOTAL=$(echo "$RESULT" | grep -oE "[0-9]+$")
if [ "$PASS" = "$TOTAL" ]; then
echo "✅ All $TOTAL tests passing! Done."
exit 0
fi
fi
# 自动改进
echo "Improving skill..."
claude -p "
The skill '$SKILL_NAME' at $SKILL_DIR/SKILL.md failed some eval tests.
Read the eval results, analyze failures, and EDIT the SKILL.md to fix issues.
Do NOT change the eval.json — only fix the skill.
Focus on:
1. Adding missing trigger keywords to description
2. Clarifying execution steps that caused failures
3. Adding explicit output format requirements
" --allowedTools Read,Edit
ITER=$((ITER+1))
done
echo "⚠️ Reached max iterations ($MAX_ITER). Manual review needed."
| 场景 | 是否fork | 原因 |
|---|---|---|
| Skill输出很长(>2000 token) | 是 | 避免污染主对话上下文 |
| Skill需要使用小模型降本 | 是 | fork + haiku |
| Skill需要依赖前文对话状态 | 否 | fork后丢失前文 |
| Skill执行破坏性操作 | 是 | 隔离错误影响范围 |
| 多个Skill可能并行触发 | 是 | 每个fork独立执行 |
问题1:Fork后Skill行为异常
---
name: my-skill
context: fork
---
诊断:fork后的子Agent只看到: - Skill的SKILL.md完整内容 - 用户的当前消息 - 系统提示(包含工具列表)
它看不到: - 主对话中的文件内容(除非在Skill body中引用了具体路径) - 之前的分析结果 - 其他Skill的输出
解决方案:在Skill body中添加"上下文重建"指令:
## Context Recovery
If this skill runs in forked context, first re-read these files:
- `CLAUDE.md` for project conventions
- Any files mentioned in the user's message
- Run `git status` if the task involves code changes
问题2:Fork后工具不可用
fork子Agent继承主Agent的工具白名单,但某些工具可能需要额外权限。
解决方案:在Skill body中明确声明工具依赖:
## Required Tools
This skill requires: Read, Grep, Bash, Edit
If any tool is denied, inform the user and exit gracefully.
flowchart TB
A[用户级设置<br/>~/.claude/settings.json] --> B[项目级设置<br/>.claude/settings.json]
B --> C[Skill级设置<br/>SKILL.md frontmatter]
A -->|deny: Edit| D[全局禁止Edit]
B -->|allow: Edit for .ts files| E[项目级覆盖]
C -->|deniedTools: Bash| F[Skill级禁Bash]
D --> G[最终权限 = 最严格约束的交集]
E --> G
F --> G
---
name: codebase-analyzer
description: Analyze codebase structure and generate reports
allowedTools:
- Read
- Grep
- Glob
deniedTools:
- Bash
- Edit
- Write
- WebFetch
---
原则:
- 只读分析Skill → 只给 Read, Grep, Glob
- 代码生成Skill → 加上 Edit, Write
- 需要运行命令 → 加上 Bash(但用沙箱模式)
- 绝对不要给第三方Skill全部权限
# 启动Claude Code时启用沙箱
claude --sandbox
沙箱模式下:
- Bash命令受文件系统和网络隔离
- 不允许写入~/.claude/以外的配置
- 不允许安装全局npm包
- 网络访问受限于白名单域名
team-claude-skills/ # 私有Git仓库
├── skills/
│ ├── api-security-auditor/
│ │ ├── SKILL.md
│ │ ├── eval/
│ │ │ ├── eval.json
│ │ │ └── test-01.md
│ │ └── CHANGELOG.md
│ ├── db-migration-planner/
│ │ ├── SKILL.md
│ │ └── eval/
│ └── code-reviewer/
│ ├── SKILL.md
│ └── eval/
├── install.sh # 一键安装脚本
└── README.md
#!/bin/bash
# install.sh — 团队Skill一键安装
# 用法: ./install.sh [skill-name]
SKILLS_REPO="https://github.com/your-org/team-claude-skills.git"
SKILLS_DIR="$HOME/.claude/skills"
TMP_DIR=$(mktemp -d)
# 克隆仓库
git clone --depth 1 "$SKILLS_REPO" "$TMP_DIR"
if [ -n "$1" ]; then
# 安装指定Skill
cp -r "$TMP_DIR/skills/$1" "$SKILLS_DIR/"
echo "✅ Installed: $1"
else
# 安装所有Skill
for skill_dir in "$TMP_DIR"/skills/*/; do
skill_name=$(basename "$skill_dir")
cp -r "$skill_dir" "$SKILLS_DIR/"
echo "✅ Installed: $skill_name"
done
fi
# 清理
rm -rf "$TMP_DIR"
echo "Done. Skills installed to $SKILLS_DIR"
在SKILL.md中添加版本注释:
---
name: api-security-auditor
description: >
Audit API endpoints for security vulnerabilities...
# Version: 1.2.0
# Last-Updated: 2026-05-30
# Changelog: Added GraphQL support, improved false-positive handling
---
版本号规则: - 主版本(1.x.x):Skill功能方向改变、不兼容的输出格式变更 - 次版本(x.1.x):新增检查项、新增测试用例 - 修订版(x.x.1):description微调、bug修复
# .github/workflows/skill-eval.yml
name: Skill Eval Pipeline
on:
pull_request:
paths:
- 'skills/**/SKILL.md'
- 'skills/**/eval/**'
jobs:
evaluate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Detect Changed Skills
id: changed
run: |
CHANGED=$(git diff --name-only origin/main HEAD | \
grep 'skills/' | cut -d'/' -f2 | sort -u | tr '\n' ' ')
echo "skills=$CHANGED" >> $GITHUB_OUTPUT
- name: Run Evals
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
for skill in ${{ steps.changed.outputs.skills }}; do
echo "Evaluating: $skill"
claude -p "Run eval for skill $skill" \
--allowedTools Read \
--output-format json > "results-$skill.json" || true
done
- name: Check Results
run: |
for result in results-*.json; do
echo "=== $result ==="
# 解析通过率,低于80%则失败
PASS_RATE=$(python3 -c "
import json
with open('$result') as f:
data = json.load(f)
total = len(data.get('tests', []))
passed = sum(1 for t in data.get('tests', []) if t.get('passed'))
print(passed/total*100 if total else 0)
")
echo "Pass rate: ${PASS_RATE}%"
if (( $(echo "$PASS_RATE < 80" | bc -l) )); then
echo "❌ $result failed (${PASS_RATE}% < 80%)"
exit 1
fi
done
构建一个自动为TypeScript项目生成JSDoc/TSDoc注释的Skill,要求: - 触发率 > 90%(在相关表述下可靠激活) - 通过率 100%(5个测试用例全部通过) - 支持fork隔离执行
mkdir -p ~/.claude/skills/tsdoc-generator/eval
SKILL.md(v0.1.0):
---
name: tsdoc-generator
description: >
Generate TSDoc/JSDoc documentation comments for TypeScript functions,
classes, interfaces, and types. Use when user asks to add documentation,
generate docs, add JSDoc, write TSDoc, or document TypeScript code.
Triggers on: document, jsdoc, tsdoc, add comments, docstrings for TS.
---
# TSDoc Generator
## Execution Steps
1. Read the TypeScript file(s) specified by the user
2. For each undocumented function/class/interface:
a. Analyze parameter types and return types
b. Infer the purpose from function name, variable names, and surrounding code
c. Generate TSDoc comment with: @param, @returns, @throws, @example
3. Insert the TSDoc comments directly above each declaration
4. Use Edit tool to write changes
## Output Format
```typescript
/**
* Brief description of what the function does.
*
* @param paramName - Description of the parameter
* @returns Description of the return value
* @throws {ErrorType} When this error occurs
* @example
* ```typescript
* const result = functionName(arg1);
* ```
*/
### 8.3 测试用例
`eval/eval.json`:
```json
{
"version": "1.0",
"skill": "tsdoc-generator",
"tests": [
{
"id": "test-01",
"name": "Documents a simple function",
"input": "Add docs to: function add(a: number, b: number): number { return a + b; }",
"assertions": [
{"type": "contains", "value": "@param", "required": true},
{"type": "contains", "value": "@returns", "required": true},
{"type": "contains", "value": "number", "required": true}
]
},
{
"id": "test-02",
"name": "Documents async function",
"input": "Document: async function fetchUser(id: string): Promise<User> { ... }",
"assertions": [
{"type": "contains", "value": "@param", "required": true},
{"type": "contains", "value": "Promise", "required": true},
{"type": "contains_any", "value": ["fetches", "retrieves", "gets"], "required": true}
]
},
{
"id": "test-03",
"name": "Documents generic interface",
"input": "Add JSDoc to: interface Repository<T> { findById(id: string): Promise<T | null>; save(entity: T): Promise<void>; }",
"assertions": [
{"type": "contains", "value": "@typeparam", "required": true},
{"type": "contains", "value": "Repository", "required": true}
]
},
{
"id": "test-04",
"name": "Handles class with methods",
"input": "Document this class: class UserService { private users: Map<string, User>; addUser(user: User): void { ... } findUser(id: string): User | undefined { ... } }",
"assertions": [
{"type": "contains", "value": "class", "required": true},
{"type": "contains", "value": "@param", "required": true}
]
},
{
"id": "test-05",
"name": "Does not overwrite existing docs",
"input": "Add docs to:\n/** Calculate the total */\nfunction calculateTotal(items: Item[]): number { ... }",
"assertions": [
{"type": "contains", "value": "Calculate the total", "required": true},
{"type": "not_contains", "value": "/**\n/**", "required": false}
]
}
]
}
# 第一轮评估
claude -p "Evaluate tsdoc-generator skill against eval.json. Run all 5 tests." \
--allowedTools Read,Glob
# 假设test-03和test-05失败
# 分析原因:test-03使用了@typeparam而非@template;test-05对保留已有文档的处理不够明确
# 改进SKILL.md:
# 1. 在Constraints中添加:
# "- Never replace or duplicate existing JSDoc/TSDoc comments"
# "- Use @template tag for generic type parameters (TypeScript convention)"
# 2. 在Output Format中使用@template而非@typeparam
# 再次评估直到全部通过
---
name: tsdoc-generator
description: >
Generate TSDoc/JSDoc documentation comments for TypeScript functions,
classes, interfaces, and types. Use when user asks to add documentation,
generate docs, add JSDoc, write TSDoc, or document TypeScript code.
Triggers on: document, jsdoc, tsdoc, add comments, docstrings for TS.
context: fork
model: sonnet
allowedTools:
- Read
- Edit
- Grep
- Glob
deniedTools:
- Bash
- Write
---
| 阶段 | 检查项 | 工具/方法 |
|---|---|---|
| 创建 | name含动作+领域 | 命名规范 |
| 创建 | description含触发词+同义词 | 触发率测试 |
| 创建 | context:fork是否适合 | 上下文依赖分析 |
| 调试 | Skill是否被Claude发现 | ls + verbose模式 |
| 调试 | YAML语法是否正确 | Python验证脚本 |
| 调试 | 触发是否精准 | 批量-p模式测试 |
| 调试 | fork后行为是否正常 | 隔离环境测试 |
| 评估 | eval.json断言覆盖核心场景 | 至少3个测试用例 |
| 评估 | 通过率≥80% | 自动化CI/CD |
| 进化 | 是否形成改进闭环 | Karpathy循环 |
| 安全 | 工具权限是否最小化 | allowed/denied检查 |
| 分发 | 版本号是否语义化 | semver规范 |
| 分发 | 团队安装是否自动化 | install.sh脚本 |
flowchart TB
subgraph Skill生命周期
A[设计] --> B[实现]
B --> C[评估]
C --> D{通过?}
D -->|否| E[改进]
E --> C
D -->|是| F[部署]
F --> G[监控]
G --> H{问题?}
H -->|是| E
H -->|否| I[稳定运行]
end
subgraph 质量保障
J[触发率测试] --> C
K[Eval断言] --> C
L[CI/CD管线] --> F
end
subgraph 团队协作
M[Git仓库] --> B
N[版本号] --> F
O[安装脚本] --> F
end
| 维度 | 评估 |
|---|---|
| 适合训练营类型 | Claude Code中级开发者训练营、AI工具工程训练营 |
| 学员基础要求 | 有Claude Code使用经验,了解基本Skill结构 |
| 预计教学时长 | 4-6小时(含动手练习) |
| 实验环境要求 | 每人需要Claude Code环境 + API Key |
| 最有价值章节 | 第四章(Karpathy自改进循环)— 这是区分"能用"和"好用"的关键 |
[!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 等场景全覆盖。
