Testing and Evals
Every skill in this repo ships with a mirrored test package so reviewers (and future automation) can judge it consistently.
The test package
tests/<category-folder>/<skill-folder>/
├── prompt.md # Required: a locked, realistic reviewer prompt for the skill
├── rubric.md # Required: pass conditions, scored criteria, failure conditions, threshold
└── expected.md # Optional: exemplar output or must-hit expectations for narrow tasks
prompt.mdshould be concrete, realistic, and self-contained; it's the standard scenario every reviewer runsrubric.mdis the primary review standard for open-ended skills (writing, review, design)expected.mdsuits narrow tasks with must-hit findings; it should never be the only mechanism for open-ended skills
Start from tests/templates/ when creating a new package. CI requires prompt.md and rubric.md to exist for every skill.
The two-agent eval workflow
For manual evals, use the workflow in tests/EVAL_FRAMEWORK.md. It separates generation from grading so neither agent biases the other:
- Agent 1 (
skill-user): reads the skill and the lockedprompt.md, produces only the candidate output - Agent 2 (
skill-evaluator): reads only the candidate output, scores it againstrubric.md
Report results in your PR: prompt path, rubric path, candidate output summary, and pass/fail.
When tests must change
If skill behavior changes, update the test package in the same PR. CI only checks that the files exist; alignment between the skill and its tests is a human reviewer's job.
Quality bar (from CONTRIBUTING)
A good skill is:
- Valuable: enhances or automates real consulting/day-to-day tasks
- Proven: multiple examples of success, consistent output
- Specific: minimizes divergence between intent and outcome
- Concise: preserves context window; references carry only what's needed
Validate locally before opening a PR:
uvx --from skills-ref agentskills validate path/to/skill_folder