The quality gate for Agent Skills — validate, secure, conflict-detect, and test skills across their full lifecycle
Project description
skill-guard
The quality gate for Agent Skills.
skill-guard is a CLI tool that validates, secures, and governs Agent Skills across their full lifecycle — from contribution to production monitoring.
The Problem
Agent Skills are powerful. They're also ungoverned. As soon as more than one person contributes skills to a shared agent, things break in hard-to-diagnose ways:
- A new skill's description overlaps with an existing one → agent picks the wrong skill half the time
- Skills with dangerous scripts get merged because nobody reviewed the
scripts/directory - Nobody knows what skills are installed, who owns them, or whether they still work
- A skill passes every test in isolation but fails when the real agent uses it with 25 other skills loaded
skill-guard is the quality gate that catches these problems before they reach production.
What It Does
ONBOARDING (pre-merge, in CI):
skill-guard validate → format compliance + quality scoring
skill-guard secure → scan for dangerous patterns
skill-guard conflict → detect trigger overlap with existing skills
skill-guard test → inject into staging agent, run evals [requires --agent-url]
skill-guard check → run all four as a single gate
ONGOING (post-merge, scheduled):
skill-guard monitor → re-run evals, detect drift, manage lifecycle
skill-guard catalog → searchable registry of approved skills
Quick Start
pip install skill-guard
# Initialize in your skills repo
skill-guard init
# Validate a skill
skill-guard validate ./skills/my-skill/
# Check for security issues
skill-guard secure ./skills/my-skill/
# Check for conflicts with existing skills
skill-guard conflict ./skills/my-skill/ --against ./skills/
# Run the full gate (validate + secure + conflict)
skill-guard check ./skills/my-skill/ --against ./skills/
Example Output
$ skill-guard validate ./skills/my-skill/
skill-guard validate — my-skill
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Check ┃ Result ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ skill_md_exists │ ✅ SKILL.md found │
│ valid_yaml_frontmatter │ ✅ Valid YAML frontmatter │
│ name_field_present │ ✅ name: my-skill │
│ description_field_present │ ✅ description field present │
│ directory_name_matches │ ✅ Directory name matches skill name │
│ description_trigger_hint │ ✅ Description contains trigger hint ('Use when')│
│ no_broken_body_paths │ ✅ No broken relative paths in SKILL.md body │
│ evals_directory_exists │ ⚠️ No evals/ directory found │
│ │ → Create evals/config.yaml with test cases │
│ metadata_has_author │ ✅ author: my-team │
│ metadata_has_version │ ✅ version: 1.0 │
└───────────────────────────┴──────────────────────────────────────────────────┘
Score: 97/100 | Grade: A | Blockers: 0 | Warnings: 1
Installation
# Core (static analysis — no agent required)
pip install skill-guard
# With embedding-based conflict detection
pip install skill-guard[embeddings]
Requires Python 3.11+.
Documentation
- Getting Started
- End-to-End Integration Guide ← start here for real agent setup
- Writing Evals
- Hook Scripts
- CI/CD Integration
- Configuration Reference
What skill-guard Does NOT Do
- Does not replace Anthropic's skill-creator for writing skills
- Does not host or serve skills — skills live in your repo
- Does not modify skills — it reports issues, authors fix them
- Does not require a database or server — the catalog is a YAML file in your repo
Contributing
See CONTRIBUTING.md. We welcome contributions of all kinds.
License
Apache 2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
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 skill_guard-0.4.3.tar.gz.
File metadata
- Download URL: skill_guard-0.4.3.tar.gz
- Upload date:
- Size: 64.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91a210a6ea96792bfa379c7f0139b690cc860d9e570379873e0c881aad7377b7
|
|
| MD5 |
7ea87c5d2416f920fa2790d6f60ff206
|
|
| BLAKE2b-256 |
b77312c076f9b3c2ea16c0b39431d727436958d17ff94c547a9d935f200643f3
|
Provenance
The following attestation bundles were made for skill_guard-0.4.3.tar.gz:
Publisher:
publish.yaml on vaibhavtupe/skill-guard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skill_guard-0.4.3.tar.gz -
Subject digest:
91a210a6ea96792bfa379c7f0139b690cc860d9e570379873e0c881aad7377b7 - Sigstore transparency entry: 1051894621
- Sigstore integration time:
-
Permalink:
vaibhavtupe/skill-guard@bad91c095266044b63c66c82612e9a6ddb5f30d7 -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/vaibhavtupe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@bad91c095266044b63c66c82612e9a6ddb5f30d7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file skill_guard-0.4.3-py3-none-any.whl.
File metadata
- Download URL: skill_guard-0.4.3-py3-none-any.whl
- Upload date:
- Size: 45.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87c0a090b59754bd0772c4bcb8bd64a0cffcc6a92b12a6b227ee8247507a81b1
|
|
| MD5 |
5dcecb256007ddc77fcce5c4cb34f3bc
|
|
| BLAKE2b-256 |
7d1e6f6c3d7b1e42dd0e63b9ac0b9483e61738f4fd39f6078f7ca9a6a73bf790
|
Provenance
The following attestation bundles were made for skill_guard-0.4.3-py3-none-any.whl:
Publisher:
publish.yaml on vaibhavtupe/skill-guard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skill_guard-0.4.3-py3-none-any.whl -
Subject digest:
87c0a090b59754bd0772c4bcb8bd64a0cffcc6a92b12a6b227ee8247507a81b1 - Sigstore transparency entry: 1051894627
- Sigstore integration time:
-
Permalink:
vaibhavtupe/skill-guard@bad91c095266044b63c66c82612e9a6ddb5f30d7 -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/vaibhavtupe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@bad91c095266044b63c66c82612e9a6ddb5f30d7 -
Trigger Event:
push
-
Statement type: