Evaluation-driven Claude Code skill development.
Three levels of documentation:
- This README — the concise overview, mirroring the structure below
docs/— full markdown documentation, shipped with the package- skillet.run — the rendered docs site, 1:1 with
docs/
pip install pyskilletAnthropic recommends building evaluations before writing skills:
Create evaluations BEFORE writing extensive documentation. This ensures your Skill solves real problems rather than documenting imagined ones.
But they don't provide tooling:
We do not currently provide a built-in way to run these evaluations.
skillet fills that gap.
Capture failures with /skillet:add in Claude Code, then run the loop:
skillet eval my-skill # baseline
skillet create my-skill # generate skill from evals
skillet eval my-skill ~/.claude/skills/my-skill # eval with skill
skillet tune my-skill ~/.claude/skills/my-skill # iteratively improveSkillet captures failures, runs systematic evaluations, and iterates on skills with quantitative feedback. → docs/index.md
End-to-end walkthrough from your first capture to a tuned skill. → docs/getting-started.md
Skillet evaluates skills (instructions that shape behavior), not agents (the underlying capability). → docs/concepts/skills-vs-agents.md
The same eval format serves two purposes: capability (pass@k, exploratory) during development, regression (pass^k, strict) in CI. → docs/concepts/capability-vs-regression.md
A good eval suite needs negative cases — prompts where the skill should not trigger — to catch overtriggering. → docs/concepts/balanced-problem-sets.md
Use /skillet:add in Claude Code to record failures as YAML eval files. → docs/guides/capture-with-slash-command.md
skillet lint <path> checks a SKILL.md against 14 rules covering naming, frontmatter, body length, and recommended fields. → docs/guides/linting.md
Development setup, testing strategy, code style, and PR conventions. → docs/guides/contributing.md
skillet ships with eval, create, tune, lint, and generate-evals. → docs/reference/cli.md
YAML schema for eval files: required name/prompt/expected, optional domain/setup/teardown. → docs/reference/eval-format.md
Programmatic interface: evaluate(), tune(), create_skill(), generate_evals(), lint_skill(). → docs/reference/python-api.md