Capture and review Agent Skill observations, and create, run, diagnose, or iteratively improve Skill evaluations (evals) with the skill-up CLI. Use when the user asks to record explicitly attributed Skill usage or feedback; review observations; turn an approved observation into a regression case; evaluate, test, regress, verify, fix, improve, iterate, or evolve a Skill; add or strengthen eval cases; write eval.yaml/case.yaml; run skill-up run/validate/list-cases/report/import/init; or migrate from Anthropic evals.json. Observation capture and review require either the Codex skill-up plugin or an observer-enabled DSH skill-up plugin; evaluation remains multi-engine.
76
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Help the user evaluate and evolve Agent Skills through the skill-up CLI.
Manual: https://alibaba.github.io/skill-up/
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):
Regardless of the response language, technical identifiers in this SKILL — CLI commands, eval.yaml / case.yaml field names, report field names, etc. — MUST stay in their original English form. Do not translate them.
When creating or editing eval.yaml, case.yaml, 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:
title, description, input.prompt, expect keywords, and judge.criteria.title, description, input.prompt, expect keywords, and judge.criteria; do not leave Chinese or CJK characters in generated case files.rule_based cases, including expect.must_contain and judge.success.output_contains, must also be English keywords. Express concepts such as resource leaks, closing resources, and exception handling in English; do not mix source-language terms into English assertions.schema_version, environment.type, engine.name, rule_based, agent_judge, script_path, file paths, and commands.none | opensandbox | docker and rule_based | agent_judge | script.assets/*.tmpl as structural references only. Replace placeholder prose and comments with case-specific content in the current output language. The bundled templates are in English; translate their prose and comments when the user requests another language.skill-up import uses the CLI conversion path and does not preserve template comments; do not promise commented YAML for import-generated files.evals/cases/*.yaml and evals/eval.yaml and scan for CJK characters (Unicode ranges \u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff\u3000-\u303f\uff00-\uffef), including but not limited to title, description, input.prompt, expect keywords, judge.criteria, 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.skill-up is an evaluation CLI for Agent Skill authors. It installs the Skill into a real Agent Engine (Claude Code, Codex, qodercli, etc.), spins up an execution environment for each case, runs the prompt, then grades the result via declared rules / LLM judges / custom scripts, and finally produces a report.
Typical layout:
my-skill/
SKILL.md
evals/
eval.yaml
cases/
<case-id>.yaml
fixtures/Use this skill in any of the following situations:
eval.yaml / case.yaml, or asks you to choose an appropriate judge type.skill-up run/validate/list-cases/report/import/init.evals.json to skill-up.evals/eval.yaml or evals/evals.json and the user wants to run it.Use this mode when the user asks to record the current Skill interaction or
feedback and observation tools are available. It requires either a current
Codex release with the codex-skill-up plugin and lifecycle-hook support, or DSH with
the skill-up plugin's observer explicitly enabled. Do not retrofit observation
capture onto the pinned Codex 0.80.0 evaluation adapter.
If the user asks how to install either host plugin, or the required observation
tools are missing and the user asks to enable them, read
references/install.md under "Install an observation host plugin (optional)". Do not
install or enable a plugin unless the user asks.
Claude Code, qodercli, Qwen Code, and other Agent Engines are not supported for
this observation workflow. This restriction does not apply to normal skill-up
evaluation runs, which remain multi-engine.
$my-skill) or the responsible Skill is otherwise known with
certainty.mark_skill_invocation once with the Skill name and optional version. DSH
derives exact attribution from its durable /skill injection or successful
skill tool result; do not add inferred attribution.attach_skill_evidence only for references that help reproduce or
evaluate the behavior. Prefer paths and short summaries over copied file
contents.record_skill_feedback during the observed turn. In DSH,
the observer stores the next user turn in the same session as an unclassified
follow-up candidate. For explicit feedback, use record_observation_feedback
with the completed observation's ID. Never invent sentiment or comments.Both adapters redact common credential shapes before local persistence, but still avoid sending secrets to marker tools. If the request is capture-only, stop after recording it; do not edit, evaluate, commit, or publish a Skill unless the user also asks for that work.
When the request starts from a captured Skill observation, read
references/observations.md first. Use the available observation tools to
inspect and preview the observation, require explicit approval for the exact
candidate, write it only after approval, and then continue at Step 4. If the
request does not start from an observation, use the normal flow below.
Before doing anything, verify skill-up is available:
command -v skill-up && skill-up --versionIf a version is printed, continue. If you see command not found, on macOS / Linux:
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:
skill-upcurrently supports macOS / Linux only; Windows is not supported.
After installing, run skill-up --version again. If the command is still missing, add ~/.local/bin to PATH.
More details, including optional Codex and DSH observation host plugins:
references/install.md.
For OTLP defaults, runtime_kwargs (e.g. OpenSandbox base_url), etc.:
skill-up init
skill-up init --local
skill-up init --print
skill-up init --forcePrecedence (low → high): embedded empty defaults < user config < project .skill-up.yaml < --config. SKILL_UP_CONFIG can point at the user config file (env var name is historical). See the upstream README "User config".
SKILL.md). Search in this priority: user path → nearest SKILL.md upward from CWD → recently viewed files.SKILL.md for scope, triggers, and dependencies. If the Skill is Chinese but the user writes in English, translate capabilities into English for prompts and assertions.evals/:
evals/eval.yaml exists → Step 4 (optionally Step 3).evals/evals.json → references/migrate-anthropic.md (skill-up run --auto or skill-up import).assets/eval.yaml.tmpl to <skill-root>/evals/eval.yaml.assets/case.yaml.tmpl to <skill-root>/evals/cases/<case-id>.yaml.Adapt language per "Language Rules for Generated Artifacts". Replace the templates' generic English placeholders with case-specific prose in the requested output language. Preserve short field-leading comments in generated YAML; translate them when the output language differs from English, while keeping field names and enum values in English.
Selection guidelines:
environment.type: use none for pure-text Skills; use opensandbox when you need a remote sandbox (set OPENSANDBOX_API_KEY, put non-secrets in environment.kwargs).engine.name + engine.model: default claude_code; model is optional. For qodercli, often omit model.judge.type: rule_based (preferred), script, agent_judge (expensive) — see references/judge-types.md..yaml; prompts should exercise real Skill value.See references/eval-yaml.md and references/case-yaml.md.
skill-up list-cases <path>eval.yaml and representative cases; avoid agent_judge abuse.cases/ as needed.skill-up validate <skill-root>/evals/eval.yamlExpect: ✓ eval.yaml is valid (loaded N case(s)).
Priority: --api-key > env (ANTHROPIC_API_KEY, OPENAI_API_KEY, QODER_PERSONAL_ACCESS_TOKEN) > ~/.skill-up/credentials.yaml.
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 opensandbox, also ensure OPENSANDBOX_API_KEY (and related env) as needed.
skill-up run <skill-root>/evals/eval.yaml| Scenario | Command |
|---|---|
| Subset | --include-case-name "basic-*" |
| Exclude | --exclude-case-name "*-flaky" |
| HTML report | --format html |
| Engine override | --engine codex --model openai/gpt-4 |
| Parallelism | --parallelism 4 (1–256) |
| Anthropic JSON | --auto |
| Stability/flakiness sampling | --iteration 3 |
| Auto-append after last iteration | --iteration 0 (default behavior) |
| Verbose | -v, -vv |
Exit 0 = all passed; 1 = failure or error — suitable for CI. When
an explicit positive --iteration N runs more than one sample, inspect the
terminal's simple current-command summary for lines like
case_a: 3 trials, 2 PASS, 1 FAIL -> flaky.
Artifacts under <skill-root>/<skill-name>-workspace/iteration-N/:
result.json, benchmark.json, optional report.html<case-id>/with_skill/grading.json, outputs/Summarize: pass rate and timing; for failures, case id, assertion text, and evidence; benchmark deltas if enabled; offer HTML path or skill-up report result.json --format html.
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.
result.json, grading.json, and output evidence.SKILL.md or supporting files when the Skill behavior is incorrect.| Command | Purpose |
|---|---|
skill-up validate <eval.yaml> | Validate before run. |
skill-up list-cases <eval.yaml> | List cases. |
skill-up run [eval.yaml] | Run evals. |
skill-up run --auto | Run from evals/evals.json. |
skill-up report <result.json> --format html | Re-render reports. |
skill-up import <evals.json> | Convert Anthropic format to YAML. |
skill-up init | Write user-config template. |
skill-up debug judge <input.json> | Debug judge. |
skill-up debug report <input.json> | Debug report. |
Full flags: references/cli.md.
base_url.opensandbox without OPENSANDBOX_API_KEY — auth failures.expect.must_contain vs English model output — align language in prompts/assertions.agent_judge.evals.json expectations → default agent_judge; use import + hand edits for deterministic checks.SKILL.md directory).--iteration 0 appends one run after the latest existing iteration without
summarizing history; positive --iteration N runs N samples of the selected
cases and, when N > 1, prints a simple stability/flakiness summary covering
only samples from the current command.references/install.mdreferences/eval-yaml.mdreferences/case-yaml.mdreferences/judge-types.mdreferences/cli.mdreferences/migrate-anthropic.mdreferences/observations.mdassets/eval.yaml.tmpl, assets/case.yaml.tmplLuminairPrime/git-worktrees-prime
49d6ae2
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.