skill-upper
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseuse-skill-up-cli
使用skill-up CLI
Help the user evaluate and evolve Agent Skills through the CLI.
skill-up帮助用户通过 CLI评测和优化Agent Skill。
skill-upLanguage Policy
语言规范
Default to English when responding to the user. If the user writes in Chinese (or any other language), switch to that language and stay consistent with the user's input throughout the session.
Detection rules (highest priority first):
- The user explicitly specifies a language in the current message (e.g. "answer in English" / "用中文回答") → follow the user's instruction.
- The natural language used in the user's current message → match it.
- None of the above → use English (default).
Regardless of the response language, technical identifiers in this SKILL — CLI commands, / field names, report field names, etc. — MUST stay in their original English form. Do not translate them.
eval.yamlcase.yaml默认使用英文回复用户。若用户使用中文(或其他语言)提问,则切换为对应语言,并在整个会话中保持与用户输入语言一致。
检测规则(优先级从高到低):
- 用户在当前消息中明确指定语言(例如“answer in English” / “用中文回答”)→ 遵循用户指示。
- 用户当前消息使用的自然语言→ 匹配该语言。
- 以上均不满足→ 使用英文(默认)。
无论回复语言如何,本SKILL中的技术标识符——CLI命令、/字段名、报告字段名等——必须保持原始英文形式,不得翻译。
eval.yamlcase.yamlLanguage Rules for Generated Artifacts
生成产物的语言规则
When creating or editing , , grading scripts, README snippets, final replies, or any other user-visible artifact, treat the language of the user's current message as the output language for this turn:
eval.yamlcase.yaml- If the user asks in Chinese, write the final response and all generated natural-language content in Chinese, including YAML comments, ,
title,description,input.promptkeywords, andexpect.judge.criteria - If the user asks in English, write the final response and all generated natural-language content in English, including YAML comments, ,
title,description,input.promptkeywords, andexpect; do not leave Chinese or CJK characters in generated case files.judge.criteria - If the target Skill itself is written in Chinese but the user asks in English, translate the Skill's functional intent into English test prompts and assertions instead of copying Chinese prose from the target Skill or templates.
- In an English context, deterministic keywords in cases, including
rule_basedandexpect.must_contain, must also be English keywords. Translate terms such asjudge.success.output_contains,资源泄漏, and关闭into异常处理,resource leak, andclose; do not write bilingual parentheticals likeexception handling."资源" (resources) - Keep technical identifiers unchanged, such as ,
schema_version,environment.type,engine.name,rule_based,agent_judge, file paths, and commands.script_path - Treat as structural references only. Rewrite placeholder prose and comments into the current output language; in an English context, translate or remove every Chinese comment and Chinese placeholder before writing generated files.
assets/*.tmpl - In an English context, after generating all files but BEFORE submitting the final reply, you MUST perform a CJK self-check: open every and
evals/cases/*.yamland scan for CJK characters (Unicode rangesevals/eval.yaml), including but not limited to\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff\u3000-\u303f\uff00-\uffef,title,description,input.promptkeywords,expect, and YAML comments. If any CJK character is found, replace it with an equivalent English expression before finishing the task. This step is mandatory and must not be skipped.judge.criteria
创建或编辑、、评分脚本、README片段、最终回复或其他用户可见产物时,将用户当前消息的语言作为本轮输出语言:
eval.yamlcase.yaml- 若用户用中文提问,最终回复及所有生成的自然语言内容均使用中文,包括YAML注释、、
title、description、input.prompt关键字和expect。judge.criteria - 若用户用英文提问,最终回复及所有生成的自然语言内容均使用英文,包括YAML注释、、
title、description、input.prompt关键字和expect;生成的用例文件中不得保留中文或CJK字符。judge.criteria - 若目标Skill本身为中文但用户用英文提问,需将Skill的功能意图翻译成英文测试提示和断言,而非直接复制目标Skill或模板中的中文文本。
- 在英文场景下,用例中的确定性关键字(包括
rule_based和expect.must_contain)也必须为英文关键字。将“资源泄漏”“关闭”“异常处理”等术语翻译为judge.success.output_contains、resource leak和close;不得使用“资源(resources)”这类双语括号形式。exception handling - 技术标识符保持不变,例如、
schema_version、environment.type、engine.name、rule_based、agent_judge、文件路径和命令。script_path - 将仅视为结构参考。将占位文本和注释重写为当前输出语言;在英文场景下,生成文件前需翻译或移除所有中文注释和中文占位符。
assets/*.tmpl - 在英文场景下,生成所有文件后、提交最终回复前,必须执行CJK自检:打开所有和
evals/cases/*.yaml,扫描CJK字符(Unicode范围evals/eval.yaml),包括但不限于\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff\u3000-\u303f\uff00-\uffef、title、description、input.prompt关键字、expect和YAML注释。若发现任何CJK字符,需替换为等效英文表达后再完成任务。此步骤为必填项,不得跳过。judge.criteria
What is skill-up
什么是skill-up
skill-upTypical layout:
my-skill/
SKILL.md
evals/
eval.yaml
cases/
<case-id>.yaml
fixtures/skill-up典型目录结构:
my-skill/
SKILL.md
evals/
eval.yaml
cases/
<case-id>.yaml
fixtures/When to trigger
触发场景
Use this skill in any of the following situations:
- The user asks to "run / evaluate / verify / test this skill".
- The user asks to "fix / improve / iterate / evolve this skill" from eval failures.
- The user wants to "add evals, test cases, or regression cases to a skill".
- The user wants to edit /
eval.yaml, or asks you to choose an appropriatecase.yamltype.judge - The user mentions .
skill-up run/validate/list-cases/report/import/init - The user wants to migrate from Anthropic to skill-up.
evals.json - The current working directory contains or
evals/eval.yamland the user wants to run it.evals/evals.json
在以下任一场景中使用本Skill:
- 用户要求“运行/评测/验证/测试这个Skill”。
- 用户要求从评测失败中“修复/改进/迭代/升级这个Skill”。
- 用户希望“为Skill添加评测、测试用例或回归用例”。
- 用户希望编辑/
eval.yaml,或询问如何选择合适的case.yaml类型。judge - 用户提及命令。
skill-up run/validate/list-cases/report/import/init - 用户希望从Anthropic 迁移到skill-up。
evals.json - 当前工作目录包含或
evals/eval.yaml且用户希望运行它。evals/evals.json
Main flow (follow this order strictly)
主流程(严格遵循此顺序)
Step 0: Make sure skill-up is installed
步骤0:确保skill-up已安装
Before doing anything, verify is available:
skill-upbash
command -v skill-up && skill-up --versionIf a version is printed, continue. If you see , on macOS / Linux:
command not foundbash
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bash
export SKILL_UP_VERSION=v0.1.0
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bash
export INSTALL_DIR="$HOME/bin"
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bashPlatform:currently supports macOS / Linux only; Windows is not supported.skill-up
After installing, run again. If the command is still missing, add to .
skill-up --version~/.local/binPATHMore details: .
references/install.md执行任何操作前,先验证是否可用:
skill-upbash
command -v skill-up && skill-up --version若打印出版本信息,继续操作。若显示,在macOS/Linux系统中执行:
command not foundbash
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bash
export SKILL_UP_VERSION=v0.1.0
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bash
export INSTALL_DIR="$HOME/bin"
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bash平台支持:目前仅支持macOS/Linux;暂不支持Windows。skill-up
安装完成后,再次运行。若仍找不到命令,需将添加到中。
skill-up --version~/.local/binPATH更多细节:。
references/install.mdStep 0.5 (optional): User config and telemetry
步骤0.5(可选):用户配置与遥测
For OTLP defaults, (e.g. OpenSandbox ), etc.:
runtime_kwargsbase_urlbash
skill-up init
skill-up init --local
skill-up init --print
skill-up init --forcePrecedence (low → high): embedded empty defaults < user config < project < . can point at the user config file (env var name is historical). See the upstream README "User config".
.skill-up.yaml--configSKILL_UP_CONFIG针对OTLP默认值、(例如OpenSandbox )等配置:
runtime_kwargsbase_urlbash
skill-up init
skill-up init --local
skill-up init --print
skill-up init --force优先级(从低到高):内置空默认值 < 用户配置 < 项目 < 参数。可指向用户配置文件(环境变量名称为历史遗留)。详见上游README中的“User config”部分。
.skill-up.yaml--configSKILL_UP_CONFIGStep 1: Locate the target Skill
步骤1:定位目标Skill
- Identify the root directory of the target Skill (the directory containing ). Search in this priority: user path → nearest
SKILL.mdupward from CWD → recently viewed files.SKILL.md - Read the target for scope, triggers, and dependencies. If the Skill is Chinese but the user writes in English, translate capabilities into English for prompts and assertions.
SKILL.md - Check :
evals/- exists → Step 4 (optionally Step 3).
evals/eval.yaml - Only →
evals/evals.json(references/migrate-anthropic.mdorskill-up run --auto).skill-up import - Nothing → Step 2.
- 确定目标Skill的根目录(包含的目录)。按以下优先级搜索:用户指定路径 → 从当前工作目录向上查找最近的
SKILL.md→ 最近查看的文件。SKILL.md - 读取目标以了解范围、触发条件和依赖关系。若Skill为中文但用户用英文提问,需将功能翻译成英文用于提示词和断言。
SKILL.md - 检查目录:
evals/- 存在→ 执行步骤4(可选择先执行步骤3)。
evals/eval.yaml - 仅存在→ 参考
evals/evals.json(使用references/migrate-anthropic.md或skill-up run --auto)。skill-up import - 无任何文件 → 执行步骤2。
- 存在
Step 2: Scaffold the evals (only when none exist)
步骤2:搭建评测框架(仅当无现有评测时)
- Copy to
assets/eval.yaml.tmpl.<skill-root>/evals/eval.yaml - Copy to
assets/case.yaml.tmpl.<skill-root>/evals/cases/<case-id>.yaml
Adapt language per "Language Rules for Generated Artifacts". In an English context, it is prohibited to copy Chinese placeholder text from the templates into generated files — all prose must be rewritten in English. The Chinese in the templates is for structural reference only, not to be carried over.
Selection guidelines:
- : use
environment.typefor pure-text Skills; usenonewhen you need a remote sandbox (setopensandbox, put non-secrets inOPENSANDBOX_API_KEY).environment.kwargs - +
engine.name: defaultengine.model;claude_codeis optional. Formodel, often omitqodercli.model - :
judge.type(preferred),rule_based,script(expensive) — seeagent_judge.references/judge-types.md - Case ID = filename without ; prompts should exercise real Skill value.
.yaml
See and .
references/eval-yaml.mdreferences/case-yaml.md- 将复制到
assets/eval.yaml.tmpl。<skill-root>/evals/eval.yaml - 将复制到
assets/case.yaml.tmpl。<skill-root>/evals/cases/<case-id>.yaml
根据“生成产物的语言规则”调整语言。在英文场景下,禁止将模板中的中文占位文本复制到生成文件中——所有文本必须重写为英文。模板中的中文仅用于结构参考,不得沿用。
选择指南:
- :纯文本Skill使用
environment.type;需要远程沙箱时使用none(需设置opensandbox,将非敏感信息放入OPENSANDBOX_API_KEY)。environment.kwargs - +
engine.name:默认engine.model;claude_code为可选参数。对于model,通常省略qodercli。model - :优先选择
judge.type,其次是rule_based,最后是script(成本较高)——详见agent_judge。references/judge-types.md - 用例ID = 文件名(不含);提示词应体现Skill的实际价值。
.yaml
详见和。
references/eval-yaml.mdreferences/case-yaml.mdStep 3: Fill the gaps (when evals already exist)
步骤3:补充完善(当已有评测时)
skill-up list-cases <path>- Review and representative cases; avoid
eval.yamlabuse.agent_judge - Add or edit YAML under as needed.
cases/
skill-up list-cases <path>- 检查和代表性用例;避免滥用
eval.yaml。agent_judge - 根据需要添加或编辑下的YAML文件。
cases/
Step 4: Validate the configuration
步骤4:验证配置
bash
skill-up validate <skill-root>/evals/eval.yamlExpect: .
✓ eval.yaml is valid (loaded N case(s))bash
skill-up validate <skill-root>/evals/eval.yaml预期结果:。
✓ eval.yaml is valid (loaded N case(s))Step 5: Prepare credentials
步骤5:准备凭证
Priority: > env (, , ) > .
--api-keyANTHROPIC_API_KEYOPENAI_API_KEYQODER_PERSONAL_ACCESS_TOKEN~/.skill-up/credentials.yamlbash
printenv | grep -E 'ANTHROPIC_API_KEY|OPENAI_API_KEY|QODER_PERSONAL_ACCESS_TOKEN'If missing, stop and ask; do not write secrets into YAML without consent.
For , also ensure (and related env) as needed.
opensandboxOPENSANDBOX_API_KEY优先级:参数 > 环境变量(、、) > 。
--api-keyANTHROPIC_API_KEYOPENAI_API_KEYQODER_PERSONAL_ACCESS_TOKEN~/.skill-up/credentials.yamlbash
printenv | grep -E 'ANTHROPIC_API_KEY|OPENAI_API_KEY|QODER_PERSONAL_ACCESS_TOKEN'若缺失,停止操作并询问用户;未经同意不得将密钥写入YAML文件。
对于,还需确保(及相关环境变量)已配置。
opensandboxOPENSANDBOX_API_KEYStep 6: Run the evaluation
步骤6:运行评测
bash
skill-up run <skill-root>/evals/eval.yaml| Scenario | Command |
|---|---|
| Subset | |
| Exclude | |
| HTML report | |
| Engine override | |
| Parallelism | |
| Anthropic JSON | |
| Stability/flakiness sampling | |
| Auto-append after last iteration | |
| Verbose | |
Exit = all passed; = failure or error — suitable for CI. When
an explicit positive runs more than one sample, inspect the
terminal's simple current-command summary for lines like
.
01--iteration Ncase_a: 3 trials, 2 PASS, 1 FAIL -> flakybash
skill-up run <skill-root>/evals/eval.yaml| 场景 | 命令 |
|---|---|
| 运行子集用例 | |
| 排除指定用例 | |
| 生成HTML报告 | |
| 覆盖引擎配置 | |
| 并行运行 | |
| 兼容Anthropic JSON格式 | |
| 稳定性/波动性抽样测试 | |
| 在最后一次迭代后自动追加 | |
| Verbose模式 | |
退出码表示全部通过;表示失败或出错——适用于CI流程。当指定正整数运行多次抽样时,查看终端中的命令摘要,例如。
01--iteration Ncase_a: 3 trials, 2 PASS, 1 FAIL -> flakyStep 7: Interpret the report
步骤7:解读报告
Artifacts under :
<skill-root>/<skill-name>-workspace/iteration-N/- ,
result.json, optionalbenchmark.jsonreport.html - ,
<case-id>/with_skill/grading.jsonoutputs/
Summarize: pass rate and timing; for failures, case id, assertion , and ; benchmark deltas if enabled; offer HTML path or .
textevidenceskill-up report result.json --format html产物位于目录下:
<skill-root>/<skill-name>-workspace/iteration-N/- 、
result.json、可选benchmark.jsonreport.html - 、
<case-id>/with_skill/grading.jsonoutputs/
总结内容:通过率和耗时;失败用例的ID、断言文本和证据;启用基准测试时的差异;提供HTML报告路径或命令。
skill-up report result.json --format htmlStep 8: Evolve the Skill when requested
步骤8:按需优化Skill
Only enter this loop when the user asks to fix, improve, iterate, or evolve the
target Skill. If the user only asks to evaluate or report results, stop after
Step 7 without modifying it.
- Diagnose failures from ,
result.json, and output evidence.grading.json - Fix or supporting files when the Skill behavior is incorrect.
SKILL.md - Add or refine eval cases when coverage is missing.
- Do not weaken valid assertions merely to make a failure pass.
- Rerun failed cases first, then run the full eval suite.
- Continue until the evals pass or clearly report what remains blocked.
仅当用户要求修复、改进、迭代或升级目标Skill时进入此循环。若用户仅要求评测或报告结果,完成步骤7后停止操作,不得修改Skill。
- 从、
result.json和输出证据中诊断失败原因。grading.json - 若Skill行为不正确,修改或相关支持文件。
SKILL.md - 若覆盖范围不足,添加或优化评测用例。
- 不得为了让失败用例通过而削弱有效断言。
- 先重新运行失败用例,再运行完整评测套件。
- 持续操作直到评测通过,或明确报告剩余阻塞问题。
Command quick reference
命令速查
| Command | Purpose |
|---|---|
| Validate before |
| List cases. |
| Run evals. |
| Run from |
| Re-render reports. |
| Convert Anthropic format to YAML. |
| Write user-config template. |
| Debug judge. |
| Debug report. |
Full flags: .
references/cli.md| 命令 | 用途 |
|---|---|
| 运行前验证配置 |
| 列出所有用例 |
| 运行评测 |
| 从 |
| 重新生成报告 |
| 将Anthropic格式转换为YAML格式 |
| 生成用户配置模板 |
| 调试评判器 |
| 调试报告 |
完整参数说明:。
references/cli.mdCommon pitfalls
常见陷阱
- Model IDs vs proxy aliases — preserve what works for the user's .
base_url - without
opensandbox— auth failures.OPENSANDBOX_API_KEY - Chinese vs English model output — align language in prompts/assertions.
expect.must_contain - Abusing .
agent_judge - Anthropic expectations → default
evals.json; useagent_judge+ hand edits for deterministic checks.import - Paths relative to Skill root (directory).
SKILL.md - appends one run after the latest existing iteration without summarizing history; positive
--iteration 0runs N samples of the selected cases and, when N > 1, prints a simple stability/flakiness summary covering only samples from the current command.--iteration N
- 模型ID与代理别名冲突——保留对用户有效的配置。
base_url - 使用但未配置
opensandbox——导致认证失败。OPENSANDBOX_API_KEY - 中文与英文模型输出不匹配——确保提示词和断言语言一致。
expect.must_contain - 滥用。
agent_judge - Anthropic 中的预期默认使用
evals.json;使用agent_judge命令后需手动编辑以实现确定性检查。import - 路径需相对于Skill根目录(所在目录)。
SKILL.md - 会在最新迭代后追加一次运行,但不汇总历史记录;正整数
--iteration 0会对选定用例运行N次抽样,当N>1时,仅打印当前命令中抽样的稳定性/波动性简要总结。--iteration N
References
参考资料
references/install.mdreferences/eval-yaml.mdreferences/case-yaml.mdreferences/judge-types.mdreferences/cli.mdreferences/migrate-anthropic.md- ,
assets/eval.yaml.tmplassets/case.yaml.tmpl
references/install.mdreferences/eval-yaml.mdreferences/case-yaml.mdreferences/judge-types.mdreferences/cli.mdreferences/migrate-anthropic.md- 、
assets/eval.yaml.tmplassets/case.yaml.tmpl