Skip to main content

skillgate

skillgate

A local gate for agent skills.

PyPI Python 3.11+ CI License

skillgate checks an agent skill that lives in a folder on your machine. A pack is SKILL.md plus evals/. skillgate check exits 0 when the run passes, 1 when it fails, and 2 when it cannot run. Live checks are scored only by a decision model you select. Requires Python 3.11+. The package name is skillgate-ai (pip install skillgate is a different project).

Local UI on the pdf example, before a live check

Quickstart

In an empty directory:

pip install skillgate-ai
skillgate examples install
skillgate check skills/json-response
skillgate check skills/json-response-sabotaged

skillgate examples install writes six skills under skills/. Files already in that folder stay as they are. skills/json-response exits 0 when the live run is green. skills/json-response-sabotaged exits 1: the JSON checks fail, and the unrelated check can pass. Both checks exit 2 until an agent is available and a decision model is selected. Use skillgate login or skillgate keys set for the agent, and skillgate judge provider set for the decision model. These commands match release 0.7.7.

The same steps in the local UI:

skillgate ui

Open http://127.0.0.1:8765. Click Skills. On Skill Repository, click Examples, then Install. The toast reads Installed 6 examples (47 files). Open json-response, click Evaluate this skill, then Run. The button reads Run 3 cases. Until you sign in or add a key, the line above it is Next: sign in or add a key in Settings, then press Run. Repeat for json-response-sabotaged to see the failing checks.

Features

  • One pack on disk, checked with skillgate check
  • Exit 0 (pass), 1 (fail), or 2 (not ready)
  • Live checks scored only by a decision model
  • Custom scoring questions on top of the built-in questions
  • --expect-fail for a pack that should fail
  • Deploy copies skill files after a passing check
  • Local UI with skillgate ui
  • Compare two versions of the same dataset

Usage

From the quickstart directory:

skillgate examples list
skillgate examples install json-response
skillgate check skills/json-response --case flatten-orders
skillgate check skills/json-response-sabotaged --expect-fail
skillgate example pdf
skillgate check skills/pdf
skillgate ingest skills/pdf
skillgate example pdf-sabotaged
skillgate check skills/pdf-sabotaged --expect-fail
skillgate deploy skills/pdf
skillgate judge provider show
skillgate judge add-question --ask "Did the answer follow the requested format?"
skillgate compare versions skills/pdf --dry-run
skillgate ui

--expect-fail exits 0 only when the live run is red. skillgate deploy copies the skill files after this pack already has a passing check. It does not run check for you. Deploy stays blocked until an agent is available, even after a green check. skillgate ui serves the local UI at http://127.0.0.1:8765. A version compare takes two --run ids or two --git refs.

Create a workspace and a skill:

skillgate init
skillgate new notes-helper

Writing a dataset

A dataset is evals/cases.yaml plus small files in evals/fixtures/ and expected files in evals/goldens/. The folder name, the name in SKILL.md, and skill in cases.yaml are the same string. Start with 3 to 6 pinned cases: one behavior, one edge, and one unrelated prompt (should_trigger: false). Keep the expected sentence out of the prompt. The examples do this: json-response flattens an API body, readme-writer turns a brief into a README, log-summarizer counts errors, sql-writer writes a query from a schema, and receipt-extractor reads a fictional receipt. json-response-sabotaged uses the same JSON cases and fails them.

Check a dataset on disk, then run it:

skillgate ingest skills/json-response
skillgate case list skills/json-response
skillgate check skills/json-response

In the UI, open the skill from Skill Repository and click Evaluate this skill, then Run.

The full guide, with a copy-paste pack and the mistakes that reject a dataset, is Writing a dataset. The same page is on the docs site: Writing a dataset.

Docker

docker compose run --rm --no-TTY skillgate

The image entrypoint is skillgate. The default command is check /pack. With nothing configured, that exits 2.

Documentation

Documentation

Contributing

Issues and pull requests are welcome.

License

Apache License 2.0. See LICENSE.

Metadata

Release files for skillgate-ai 0.7.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for skillgate-ai 0.7.7
File Size Uploaded
skillgate_ai-0.7.7.tar.gz 726.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for skillgate-ai 0.7.7
File Interpreter ABI Platform
skillgate_ai-0.7.7-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / skillgate_ai-0.7.7.tar.gz

Download URL skillgate_ai-0.7.7.tar.gz
Size 726.0 kB
Tags Source
SHA-256 checksum
How to use checksums
736eff4c094f3d5514fb58df8890c2e9a4feb211268cec191a5600a06e8e6a51
BLAKE2b-256 checksum
How to use checksums
81f7efa28f554b12db5c051cdadeb064a0305c3dee774de3d616c5b72787df03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / skillgate_ai-0.7.7-py3-none-any.whl

Download URL skillgate_ai-0.7.7-py3-none-any.whl
Size 667.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ce36c5043d142b322b9c7a1ba31564e5b5c02860dc7a85d3ae14723cd250246
BLAKE2b-256 checksum
How to use checksums
233528a1954bae99329d887c5956e7ea5715a9e779ea7fe40c4a1593d0caea92
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release history Release notifications | RSS feed

0.7.9

2 release files

0.7.8

2 release files

This release

0.7.7 This release

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page