A diagnostic instrument for AI skills. Feed it any skill, get back a structured report — what's working, what's broken (Bad Cases), and what to fix — then iterate until it passes.
Create {target-skill-name}-eval/ at the same level as the target skill:
text
{target-skill-name}-eval/
├── v1/
│ ├── plan.md
│ ├── trigger-results.json
│ ├── cases.json
│ ├── execution-results.json
│ ├── report.md
│ └── optimized-skill/SKILL.md
├── v2/ ...
└── summary.md
Version rule: v1 → v2 → v3. Always create a new v{N}/ for each run.
PhaseActionOutput FileDetail0-1Analyze skill + design planv{N}/plan.md``agents/planner.md1.5Trigger evaluationv{N}/trigger-results.json``scripts/run_trigger_eval.py2Design test casesv{N}/cases.json``references/test-case-design.md3Execute & recordv{N}/execution-results.json``agents/executor.md4Score & verify_(scores for Phase 5)_agents/judge.md + references/scoring.md5Report + optimizev{N}/report.md + optimized-skill/SKILL.md + summary.md``agents/reporter.md + agents/advisor.md
RULE: Each phase writes its file BEFORE the next begins. No file = not done. Go back.
Input: Target SKILL.md
Output: v{N}/plan.md
Assess structure (high/medium/low), dissect steps with operation types, design test strategy, identify risks and sandbox requirements.
Full protocol → agents/planner.md
CHECKPOINT: Write
v{N}/plan.md. Verify it exists. Do NOT proceed until written.
Input: v{N}/plan.md + target SKILL.md (frontmatter description field)
Output: v{N}/trigger-results.json
Design trigger probes (positive + negative queries) based on the skill's description,
then test whether each probe correctly triggers or does not trigger the skill.
Design probes from the plan's Trigger Probe Strategy:
Run probes via scripts/run_trigger_eval.py or manual testing against the platform's skill activation mechanism.
Record results as v{N}/trigger-results.json with precision, recall, and per-probe pass/fail.
Full script → scripts/run_trigger_eval.py
CHECKPOINT: Write
v{N}/trigger-results.json. Must contain precision + recall metrics. Do NOT proceed until written.
Input: v{N}/plan.md + target SKILL.md
Output: v{N}/cases.json
Generate per-step expected results with check_types (exact > regex > semantic). Quick mode: 4 cases. Deep mode: 8-12 cases.
Critical: Expected results written BEFORE execution. Never adjust after.
Full protocol → references/test-case-design.md
JSON schema → references/schemas.md
CHECKPOINT: Write
v{N}/cases.json. At least 4 cases (quick) or 8 (deep). Do NOT proceed until written.
Input: v{N}/cases.json + target SKILL.md
Output: v{N}/execution-results.json
Run each case with the skill active. Record per-step: action_taken, actual_output, tool_calls, tokens, time. Run at least 1 baseline (without skill).
Full protocol → agents/executor.md
JSON schema → references/schemas.md
CHECKPOINT: Write
v{N}/execution-results.json. Every case must have entries. Do NOT proceed until written.
Input: v{N}/execution-results.json + v{N}/cases.json Output: Scored data for Phase 5
Three independent scores per step:
Rules: Completion=0 cascades. Scores never combined. Every sub-max score needs a reason.
Full protocol → agents/judge.md
Scoring definitions → references/scoring.md
Rubric templates → references/rubrics.md
CHECKPOINT: All steps scored. Every step has three scores + reasons. Ready for Phase 5.
Input: Scored results + Advisor analysis
Outputs: v{N}/report.md + v{N}/optimized-skill/SKILL.md + summary.md
Report order: Bad Cases FIRST → Overview → Step Scores → Baseline → Efficiency → Safety → Details.
If Bad Cases exist → produce optimized skill with fixes applied. If Bad Cases = 0 + stop conditions met → PASSED.
Full protocol → agents/reporter.md
Root cause analysis → agents/advisor.md
Visual formats → references/report-format.md
CHECKPOINT:
v{N}/report.mdexists with Bad Cases + overview + step scores- Bad Cases > 0 →
v{N}/optimized-skill/SKILL.mdexistssummary.mdupdated
A step is a Bad Case if ANY: Completion=0, Correctness=0, Quality=0, or safety finding.
ConditionThresholdBad Cases = 0No steps with any score = 0Correctness avg>= 1.8/2No regressionsNo previously-passing case now failsUnsafe rate = 0%No safety findings
FilePurposeagents/planner.mdPhase 0-1: Structure assessment + plan generationagents/executor.mdPhase 3: Test execution + recordingagents/judge.mdPhase 4: Scoring engine protocolagents/advisor.mdPhase 5B: Root cause analysis + optimizationagents/reporter.mdPhase 5: Report generation + summaryreferences/test-case-design.mdPhase 2: Case design guide + cases.json schemareferences/schemas.mdAll JSON data structure definitionsreferences/scoring.mdScoring scales, computation, displayreferences/rubrics.mdPer-operation-type rubric templatesreferences/report-format.mdVisual report presentationscripts/score_engine.pyAutomated scoring computationscripts/safety_scanner.pyStatic safety analysisscripts/generate_scorecard.pyHTML report generationscripts/run_trigger_eval.pyPhase 1.5: Multi-platform trigger evaluation
PlatformSkill LocationTriggerClaude Code.claude/commands/``claude -p CLICursor.cursor/rules/Agent modeCodex.codex/skills/CLI/APIOpenClaw.claw/skills/Hub activation
html.escape() on all interpolated valuesSee agents/executor.md Safety Boundary section for full sandboxing protocol.