skills-eval
skills-eval is a pre-release CLI for Claude Plugin repositories containing one
or more Skills. It validates the publishable structure and runs configured
security scanners before release.
Install
pipx install skills-eval
Use
# Check every Skill declared by the plugin.
skills-eval check .
# Check one Skill by name or directory.
skills-eval check . --skill wenqu-write
# Show the selected scope and format checks without running security scanners
# or writing a report.
skills-eval check . --dry-run
A normal run prints a compact summary and writes skills-eval-report.md in the
target repository. The report records the selected Skills, each format rule,
enabled publishing targets, security scanner configuration, and every finding.
Checks
The portable checks cover the plugin manifest, declared Skills, SKILL.md and
frontmatter, local file references, duplicate names or paths, and configured
temporary files. The bundled Cisco AI Skill Scanner reviews each selected Skill
directory for risky commands, prompt injection, secret exposure, network
access, and persistence-related behavior.
Scanner findings are signals for review, not a guarantee that a Skill is safe.
Configuration
Create .skills-eval.json in the plugin root. JSON Schema support is available
through the GitHub-hosted schema URL:
{
"$schema": "https://raw.githubusercontent.com/gogoingai/skills-eval/main/src/skills_eval/schemas/skills-eval.schema.json",
"schemaVersion": 1,
"extends": ["wenqu"],
"publishing": {
"targets": [
{ "name": "claude-plugin", "enabled": true },
{ "name": "workbuddy", "enabled": true },
{ "name": "skillhub", "enabled": true },
{ "name": "openclaw", "enabled": true },
{ "name": "clawhub", "enabled": true }
]
},
"report": {
"language": "auto"
},
"security": {
"sources": [
{
"name": "cisco",
"enabled": true,
"options": {
"policy": "balanced",
"useBehavioral": true
}
}
]
}
}
The wenqu profile enables claude-plugin, workbuddy, skillhub,
openclaw, and clawhub. Each target owns only its own static rules: version
and changelog are the shared Wenqu baseline; package metadata, Skill metadata,
slugs and package contents, and OpenClaw homepage metadata are checked only
when their corresponding target is enabled. A project can override any profile
target by repeating its name in publishing.targets; unsupported or duplicate
target names are configuration errors. options is reserved for future
target-specific behavior such as external validation and dry runs.
Security sources are a configured list so future scanners can be added without changing the command interface.
report.language accepts auto (the default), zh, or en. In auto mode,
Skills Eval reads the computer's preferred language: Chinese preferences render
the report in Chinese; every other preference renders it in English.
Release automation
Tagged releases (v*) build the package and publish with PyPI Trusted
Publishing through GitHub Actions OIDC. The publish job uses the pypi
environment and id-token: write; it does not use a PYPI_TOKEN.
GitHub Action
The repository also provides a reusable GitHub Action. It installs the selected
published CLI version, runs the check, and uploads skills-eval-report.md as an
artifact even when the check fails. For pull requests, it creates one marked
comment and updates that same comment after each later push, so the result is
visible without downloading the report.
name: Skills review
on:
pull_request:
push:
branches: [main]
jobs:
audit:
runs-on: ubuntu-latest
permissions:
contents: read
actions: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: gogoingai/skills-eval@v0.1.6
with:
path: .
pull_request runs when a PR opens and on every later push to its branch, so
maintainers see an up-to-date Skills Eval 审查结果 comment as well as the
result in the PR's Checks tab. The comment includes a link to download the
full report; the same artifact is also available from the run in the
repository's Actions page. The comment step uses the automatic
GITHUB_TOKEN; no secret needs to be configured. On a PR from an external fork
GitHub can deny comment write access; the audit and artifact still complete
because commenting is non-fatal. Set comment: false to disable PR comments.
The caller controls triggers; this Action never publishes a package, creates a
tag, or changes repository files.
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 skills_eval-0.1.6.tar.gz.
File metadata
- Download URL: skills_eval-0.1.6.tar.gz
- Upload date:
- Size: 44.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
458d83d129e2447779936c058764ab336bd6e991b20044b7ebfbd8e9da25bbc3
|
|
| MD5 |
363ea52671acff3481332767e6494803
|
|
| BLAKE2b-256 |
f4e8797f77e0477df323055db7b7ad43fe8af9cf63567dea3f8c67cdf18973cf
|
Provenance
The following attestation bundles were made for skills_eval-0.1.6.tar.gz:
Publisher:
release.yml on gogoingai/skills-eval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skills_eval-0.1.6.tar.gz -
Subject digest:
458d83d129e2447779936c058764ab336bd6e991b20044b7ebfbd8e9da25bbc3 - Sigstore transparency entry: 2310726889
- Sigstore integration time:
-
Permalink:
gogoingai/skills-eval@5e07a550da73b8d629667391036936b3233808f3 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/gogoingai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5e07a550da73b8d629667391036936b3233808f3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file skills_eval-0.1.6-py3-none-any.whl.
File metadata
- Download URL: skills_eval-0.1.6-py3-none-any.whl
- Upload date:
- Size: 34.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 |
01e33c6bc04eed6bec679b485d702f75bff126519cff7e0bd660805fd6c68381
|
|
| MD5 |
b3831a8f5868c1997227fc33d44b879c
|
|
| BLAKE2b-256 |
986d6aa37acfbfd7c4e4f0459a64fdf0dd4840d3352e309fcde5c06ee3c0d109
|
Provenance
The following attestation bundles were made for skills_eval-0.1.6-py3-none-any.whl:
Publisher:
release.yml on gogoingai/skills-eval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skills_eval-0.1.6-py3-none-any.whl -
Subject digest:
01e33c6bc04eed6bec679b485d702f75bff126519cff7e0bd660805fd6c68381 - Sigstore transparency entry: 2310726899
- Sigstore integration time:
-
Permalink:
gogoingai/skills-eval@5e07a550da73b8d629667391036936b3233808f3 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/gogoingai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5e07a550da73b8d629667391036936b3233808f3 -
Trigger Event:
push
-
Statement type: