SkillRoll
SkillRoll is a small behavioral eval framework for Agent Skills. Write a Markdown case beside a skill, run it in a controlled simulated world, and review the verdict and evidence.
Use it to turn an important prompt behavior into a readable regression case before changing the prompt.
If you can explain what a skill should do, you can eval it.
Status
SkillRoll is an early project. Local evaluation and advisory GitHub checks work today; expect the interface to evolve between minor releases.
A passing run means one observed attempt met one case. It is useful evidence, not proof that a skill is correct or ready for blocking CI.
Quickstart
SkillRoll requires Python 3.12 or later and
uv.
uv tool install skillroll
Initialize a repository that already contains SKILL.md files:
skillroll init \
--repo /path/to/my-skills \
--skills-path skills \
--starter-evals my-skill \
--yes
skillroll validate --repo /path/to/my-skills --all
skills_path is relative to the target repository. --starter-evals and
--case are relative to skills_path. Validation is offline: it does not need
an API key or call a model.
Open the generated case under my-skill/evals/, replace the placeholders, and
delete any starter case you do not need. A case has three parts:
Input: the realistic request and context given to the skill;World: simulated external state and action results; andSuccess criteria: observable outcomes that allow equivalent good answers.
Configure an OpenAI-compatible Chat Completions endpoint in
skillroll.toml:
schema_version = 1
skills_path = "skills"
[inference]
base_url = "https://provider.example/v1"
model = "provider/model-name"
api_key_env = "SKILLROLL_API_KEY"
The endpoint must support tool calling and strict JSON Schema structured outputs. Export the configured key, check compatibility, and run a case:
export SKILLROLL_API_KEY="your-key"
skillroll doctor --repo /path/to/my-skills
skillroll eval \
--repo /path/to/my-skills \
--case my-skill/evals/first-use.eval.md
doctor checks the endpoint. eval spends inference and writes a private run
under .skillroll/runs/. Start with report.md; use result.json for
automation and transcript.jsonl to inspect the skill's actions.
| Outcome | Meaning |
|---|---|
PASS |
The observed evidence met the case. |
FAIL |
One or more expectations were not met. |
INCOMPLETE |
A required repository check was not run. |
ERROR |
The run could not produce a trustworthy verdict. |
Know the boundaries
- Simulated World actions cannot access your real filesystem, shell, network, services, or other skills.
- Optional repository checks are ordinary host commands, not a sandbox. They run only after explicit opt-in.
- Evidence can contain case text, simulated state, action results, and model output. Review it before sharing.
- Free or changing model routes are useful for setup checks, not comparable skill-quality evidence. Pin a named model when results need to be compared.
- Start behavioral cases as manual or advisory checks. Promote them only after their failures are stable, specific, and useful.
Learn more
- Write an eval
- Configure models and cost
- Understand results and fix problems
- Add advisory GitHub checks
- Review the security model
The documentation index lists the same guides by task.
See PHILOSOPHY.md for the project principles and CONTRIBUTING.md to work on SkillRoll. Project support, security reporting, and governance are in SUPPORT.md, SECURITY.md, and GOVERNANCE.md.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skillroll-0.1.1.tar.gz.
File metadata
- Download URL: skillroll-0.1.1.tar.gz
- Upload date:
- Size: 86.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9438ba9a7363e5eb91283e62a07de4d367106aeae0977744ba59d1de524dc34c
|
|
| MD5 |
ebfa12d07a1a6e993eb19c732e455b64
|
|
| BLAKE2b-256 |
07eaac3a11c12081b4adc94e454aff81faa2dbcac206b640408fc5233cc041cc
|
Provenance
The following attestation bundles were made for skillroll-0.1.1.tar.gz:
Publisher:
release.yml on hagaiw/skillroll
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillroll-0.1.1.tar.gz -
Subject digest:
9438ba9a7363e5eb91283e62a07de4d367106aeae0977744ba59d1de524dc34c - Sigstore transparency entry: 2571362699
- Sigstore integration time:
-
Permalink:
hagaiw/skillroll@d679e3ed73a615e4007b94ae02b07392c5a9d19d -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/hagaiw
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d679e3ed73a615e4007b94ae02b07392c5a9d19d -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillroll-0.1.1-py3-none-any.whl.
File metadata
- Download URL: skillroll-0.1.1-py3-none-any.whl
- Upload date:
- Size: 114.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3db2fc1215951b5f7ae891ca6c3d5d1f8f934705f70c5c2b5d30099ff4d2a8eb
|
|
| MD5 |
d2ee28a3ecd3cceedecaba02654762b5
|
|
| BLAKE2b-256 |
89f863bfed0a120ee03626ce00cda542805c2084c59925c7707b8fcc5223e82e
|
Provenance
The following attestation bundles were made for skillroll-0.1.1-py3-none-any.whl:
Publisher:
release.yml on hagaiw/skillroll
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillroll-0.1.1-py3-none-any.whl -
Subject digest:
3db2fc1215951b5f7ae891ca6c3d5d1f8f934705f70c5c2b5d30099ff4d2a8eb - Sigstore transparency entry: 2571362849
- Sigstore integration time:
-
Permalink:
hagaiw/skillroll@d679e3ed73a615e4007b94ae02b07392c5a9d19d -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/hagaiw
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d679e3ed73a615e4007b94ae02b07392c5a9d19d -
Trigger Event:
release
-
Statement type: