Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Evaluate agents and skills for quality and standards compliance.
.claude/skills/notque-agent-evaluation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 125% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 292% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 116% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 116% | 0% |
Evidence-based quality assessment for agents and skills. The deterministic scorer supplies a 90-point structural precheck; qualitative review covers usefulness and behavior without inventing extra points. Every qualitative finding must cite a file path and line number.
| Signal | Load These Files | Why | |---|---|---| | evaluating an entire agent/skill collection | batch-evaluation.md | Loads detailed guidance from batch-evaluation.md. | | diagnosing recurring structural and content issues | common-issues.md | Loads detailed guidance from common-issues.md. | | writing single-item or collection evaluation reports | report-templates.md | Loads detailed guidance from report-templates.md. | | interpreting deterministic scores, JSON keys, or grade boundaries | scoring-rubric.md | Exact contract implemented by score-component.py |
Goal: Determine what to evaluate and confirm targets exist.
Read the repository CLAUDE.md first to understand current standards before evaluating anything. Only evaluate what was explicitly requested — do not speculatively analyze additional agents or skills.
bash# List all agents ls agents/*.md | wc -l # List all skills ls -d skills/*/ | wc -l # Verify specific target ls agents/{name}.md ls -la skills/{name}/
Gate: All targets confirmed to exist on disk. Proceed only when gate passes.
Goal: Check that required components exist and are well-formed.
Score every rubric category — never skip a category even if it "looks fine." Parse each required field explicitly rather than eyeballing YAML. Record PASS/FAIL with the line number for each check.
Run score-component.py to get deterministic structural scores. It checks frontmatter, referenced paths, pattern and error headings, routing registration, reference-directory presence, workflow structure, and internal links. It does not emit line references or judge content depth, Operator Context, tool semantics, or behavioral quality.
bash# Deterministic structural checks via score-component.py python3 scripts/score-component.py agents/{name}.md --json # or for a skill: python3 scripts/score-component.py skills/{name}/SKILL.md --json
The JSON output includes results[0].checks with status, earned, max, and detail, plus results[0].total, max_total, and grade. Record these exact keys. Do not refer to earned_points or max_points; those are internal Python attributes, not JSON fields.
See references/scoring-rubric.md for the exact eight checks, 90-point maximum, percentage grade boundaries, optional secret penalty, and JSON contract.
Gate: All structural checks scored with evidence. Proceed only when gate passes.
Goal: Assess whether the component carries useful, accurate, proportionate guidance.
Line counts can describe size, but do not award points for length. More prose is not evidence of better behavior.
bash# Skill total lines (SKILL.md + references) skill_lines=$(wc -l < skills/{name}/SKILL.md) ref_lines=$(cat skills/{name}/references/*.md 2>/dev/null | wc -l) total=$((skill_lines + ref_lines)) # Agent total lines agent_lines=$(wc -l < agents/{name}.md)
Check for concrete domain knowledge, stale or contradictory claims, unnecessary bulk, and missing instructions needed to execute the advertised task. Keep these findings outside the deterministic score.
Gate: Qualitative findings cite evidence, or explicitly state that none were found.
Goal: Validate that code examples and scripts are functional.
A script existing on disk does not mean it works — run python3 -m py_compile on every .py file. Search for placeholder text in every file, not just files that "look incomplete."
python3 -m py_compile on all .py files[TODO], [TBD], [PLACEHOLDER], [INSERT] ) vs tagged ( language ) blocksbash# Python syntax check # Syntax-check any .py scripts found in the skill's scripts/ directory python3 -m py_compile scripts/*.py 2>/dev/null # Placeholder search grep -nE '\[TODO\]|\[TBD\]|\[PLACEHOLDER\]|\[INSERT\]' {file} # Untagged code blocks grep -c '```$' {file}
Gate: All code checks complete. Proceed only when gate passes.
Goal: Confirm cross-references and tool declarations are consistent.
Reference Resolution:
references/)../shared-patterns/)Tool Consistency:
allowed-tools from YAML front matterallowed-toolsAnti-Rationalization Table:
anti-rationalization-core.mdbash# Check referenced files exist grep -oE 'references/[a-z-]+\.md' skills/{name}/SKILL.md | while read ref; do ls "skills/{name}/$ref" 2>/dev/null || echo "MISSING: $ref" done # Check tool consistency grep "allowed-tools:" skills/{name}/SKILL.md grep -oE '(Read|Write|Edit|Bash|Grep|Glob|Task|WebSearch)' skills/{name}/SKILL.md | sort -u # Check anti-rationalization reference grep -c "anti-rationalization-core" skills/{name}/SKILL.md
Gate: All integration checks complete. Proceed only when gate passes.
Goal: Compile all findings into the standard report format.
Show all test results with individual scores — never summarize as "all tests pass." Sort findings by impact (HIGH / MEDIUM / LOW). Include specific, actionable recommendations with file paths and line numbers. When batch evaluating, show how each item compares to collection averages; do not report "most are good quality" without quantitative data.
This phase is read-only: report findings but never modify agents or skills. Use skill-creator for fixes. Clean up any intermediate analysis files created during evaluation.
Use the report template from references/report-templates.md. The report MUST include:
earned/max, and detailIssue Priority Classification:
| Priority | Criteria | Examples | |----------|----------|---------| | HIGH | Broken functionality or a severe structural failure | Syntax errors, invalid frontmatter, broken critical references | | MEDIUM | Incomplete or misleading guidance | Stale instructions, weak recovery guidance, tool mismatch | | LOW | Cosmetic or minor quality issues | Untagged code blocks, missing changelog |
Grade Boundaries (percentage of total / max_total):
| Score | Grade | Interpretation | |-------|-------|----------------| | 90-100 | A | Strong structural health | | 75-89 | B | Good structural health | | 60-74 | C | Structural gaps to address | | 40-59 | D | Significant structural gaps | | <40 | F | Major structural gaps |
Gate: Report generated with all sections populated and evidence cited. Evaluation complete.
User says: "Evaluate the test-driven-development skill" Actions:
skills/testing/test-driven-development/ exists (IDENTIFY)score-component.py and record all eight checks (STRUCTURAL)Result: Structured report with score, grade, and prioritized findings
User says: "Audit all agents and skills" Actions:
Result: Per-item scores plus distribution, top performers, and improvement areas
User says: "Check the structural health of systematic-refactoring" Actions:
skills/systematic-refactoring/ exists (IDENTIFY)Result: Structural score plus evidence-backed qualitative findings
Cause: Agent or skill path incorrect, or item was deleted Solution: Verify path exists with ls before evaluation. If truly missing, exclude from batch and note in report.
Cause: Malformed YAML — missing --- delimiters, bad indentation, or invalid syntax Solution: Flag as HIGH priority structural failure. Score YAML section as 0/10. Include the specific parse error in the report.
Cause: Validation script has syntax issues Solution: Run python3 -m py_compile and capture the specific error. Score validation script as 0/10. Include error output in report.
Cause: The evaluator read internal earned_points or max_points names instead of the JSON contract. Solution: Read checks[*].earned and checks[*].max; confirm top-level total, max_total, and grade before reporting.
${CLAUDE_SKILL_DIR}/references/scoring-rubric.md - Full/partial/no credit breakdowns per rubric category${CLAUDE_SKILL_DIR}/references/report-templates.md - Standard report format templates (single, batch, comparison)${CLAUDE_SKILL_DIR}/references/common-issues.md - Frequently found issues with fix templates${CLAUDE_SKILL_DIR}/references/batch-evaluation.md - Batch evaluation procedures and collection summary format| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 23,620 | 5,963 | -75% | 1 | 1 | 0% | 4,039 | 3,098 | -23% | 0 | 0 | — |
case-01 | fail→fail | 3,041 | 4,981 | +64% | 1 | 1 | 0% | 233 | 2,859 | +1127% | 0 | 0 | — |
case-03 | fail→fail | 21,407 | 4,805 | -78% | 1 | 1 | 0% | 3,794 | 2,867 | -24% | 0 | 0 | — |
case-04 | fail→fail | 4,006 | 4,317 | +8% | 1 | 1 | 0% | 565 | 2,872 | +408% | 0 | 0 | — |
case-05 | pass→pass | 17,402 | 27,720 | +59% | 1 | 1 | 0% | 3,437 | 7,736 | +125% | 0 | 0 | — |
case-06 | pass→fail | 3,676 | 12,254 | +233% | 1 | 1 | 0% | 372 | 4,092 | +1000% | 0 | 0 | — |
case-07 | fail→pass | 14,062 | 6,605 | -53% | 1 | 1 | 0% | 2,330 | 3,898 | +67% | 0 | 0 | — |
case-08 | fail→pass | 8,604 | 1,902 | -78% | 1 | 1 | 0% | 1,292 | 2,903 | +125% | 0 | 0 | — |
case-09 | fail→pass | 3,869 | 2,544 | -34% | 1 | 1 | 0% | 789 | 3,089 | +292% | 0 | 0 | — |
case-10 | pass→pass | 3,615 | 2,590 | -28% | 1 | 1 | 0% | 621 | 3,043 | +390% | 0 | 0 | — |
case-11 | pass→pass | 5,444 | 1,525 | -72% | 1 | 1 | 0% | 954 | 2,878 | +202% | 0 | 0 | — |
case-12 | pass→pass | 13,201 | 1,785 | -86% | 1 | 1 | 0% | 2,069 | 2,908 | +41% | 0 | 0 | — |
case-13 | fail→pass | 29,337 | 3,309 | -89% | 1 | 1 | 0% | 1,473 | 3,178 | +116% | 0 | 0 | — |
case-14 | pass→pass | 8,883 | 2,673 | -70% | 1 | 1 | 0% | 1,483 | 3,038 | +105% | 0 | 0 | — |
case-15 | pass→pass | 5,710 | 1,940 | -66% | 1 | 1 | 0% | 799 | 2,994 | +275% | 0 | 0 | — |
case-16 | fail→pass | 9,487 | 2,969 | -69% | 1 | 1 | 0% | 1,476 | 3,183 | +116% | 0 | 0 | — |
case-17 | fail→pass | 12,970 | 2,290 | -82% | 1 | 1 | 0% | 1,963 | 3,020 | +54% | 0 | 0 | — |
case-18 | fail→pass | 7,544 | 1,810 | -76% | 1 | 1 | 0% | 1,256 | 2,983 | +138% | 0 | 0 | — |
case-19 | fail→fail | 4,641 | 1,430 | -69% | 1 | 1 | 0% | 694 | 2,853 | +311% | 0 | 0 | — |
case-20 | pass→pass | 11,639 | 3,519 | -70% | 1 | 1 | 0% | 1,764 | 3,192 | +81% | 0 | 0 | — |
case-21 | pass→pass | 6,356 | 1,800 | -72% | 1 | 1 | 0% | 1,019 | 2,912 | +186% | 0 | 0 | — |
case-22 | pass→pass | 6,303 | 2,712 | -57% | 1 | 1 | 0% | 1,023 | 3,134 | +206% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.