Skip to main content

Evaluation-driven Claude Code skill development

Project description

skillet

CI License Python

Evaluation-driven Claude Code skill development.

Install

pip install pyskillet

Why

Anthropic 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.

Workflow

1. Capture gaps with /gap

When Claude does something wrong, capture it:

> Write a code review comment for this SQL query...

● This code has a SQL injection vulnerability...

> /gap

● What did you expect instead?

> Should start with **issue** (blocking): using conventional comments format

● Gap saved to ~/.skillet/gaps/conventional-comments/001.yaml

2. Run baseline eval

skillet eval conventional-comments
Eval Results (baseline, no skill)
==================================
Gaps: 5
Iterations: 3 per gap
Total runs: 15

Pass rate: 0% (0/15)

3. Create the skill

skillet new conventional-comments
Found 5 gaps for 'conventional-comments', drafting SKILL.md...

Created plugins/conventional-comments/
├── .claude-plugin/
│   └── plugin.json
└── skills/conventional-comments/
    └── SKILL.md (draft from 5 gaps)

4. Eval with skill

skillet eval conventional-comments --skill plugins/conventional-comments
Eval Results (with skill)
=========================
Skill: plugins/conventional-comments
Gaps: 5
Iterations: 3 per gap
Total runs: 15

Pass rate: 80% (12/15)

5. Iterate

Edit SKILL.md, re-run eval, repeat.

Commands

skillet eval <name>                    # baseline eval (no skill)
skillet eval <name> --skill <path>     # eval with skill
skillet new <name>                     # create skill from gaps

Gaps

Gaps are stored in ~/.skillet/gaps/<name>/:

# ~/.skillet/gaps/conventional-comments/001.yaml
timestamp: 2025-01-15T10:30:00Z
prompt: "Write a code review comment for..."
actual: "This code has a SQL injection..."
expected: "Should start with **issue** (blocking):"

Roadmap

See ROADMAP.md for future ideas and planned features.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyskillet-0.2.0.tar.gz (107.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyskillet-0.2.0-py3-none-any.whl (30.5 kB view details)

Uploaded Python 3

File details

Details for the file pyskillet-0.2.0.tar.gz.

File metadata

  • Download URL: pyskillet-0.2.0.tar.gz
  • Upload date:
  • Size: 107.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pyskillet-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f3d0403225fa7cabb08dfacda72d5599d5405021ba5dab9ed2cb3d58c6b700f8
MD5 df766884d6093fb770639903237d02e3
BLAKE2b-256 f53812849acae3b8f1fe086a831c9b2db8946efc779899fd3694df589d05de45

See more details on using hashes here.

File details

Details for the file pyskillet-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyskillet-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 30.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pyskillet-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b91d26c01c8b7c44be2f3fb7d0680f6c404a1c890e0658b4a67f91a701b61ad
MD5 5d9c3ec892bb24feedd88ec546848156
BLAKE2b-256 4e96e45f4a06e5decfb79a9eddd969f67631578064d983f57c06ad8766d8e21a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page