Comprehensive testing and validation for Agent Skills. Quick, Standard, and Deep checks for structure, security, best practices, and more.
SaferSkills independently audited skill-check (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
SkillCheck audits an entire skill directory, understands every moving part, and generates targeted tests to verify the skill works as advertised. It doesn't just check "does it roughly work" — it tests every aspect: triggering, input handling, output quality, script correctness, security, best practices, and resource integrity.
Three phases: Discover → Test → Report. Discovery is always required. Testing depth depends on what the user wants. Reporting adapts to what was found.
| Depth | What it covers |
|---|---|
| Quick | Static analysis — structure, syntax, integrity, security, best practices |
| Standard | Static + script execution + happy-path I/O + eval regression |
| Deep | Everything — edge cases, mock files, e2e workflows, stress |
If the user doesn't specify, default to Standard — it catches real functional problems without the time investment of Deep. If they seem in a hurry, go Quick. If they mention thoroughness, edge cases, or "test everything", go Deep.
For a worked example of a Standard Check from start to finish, see references/example-run.md.
evals.json format must match the skill-creator schema exactly (seereferences/eval-schema.md). Don't invent a new format — compatibility with skill-creator's benchmarking tools is the whole point.
third-party Python packages that may not be installed. Always check availability before generating and fall back to text-based equivalents if installation fails. See references/mock-files.md for the dependency list.
of multiple downstream test failures (script execution fails, eval regression fails, I/O tests fail — all for the same reason). Identify and report the root cause rather than listing each symptom as a separate unrelated failure.
main pass/fail verdict percentage. A skill can be functionally perfect but structurally messy, and the report should reflect that distinction.
issues are found in scripts, warn the user before executing them at Standard or Deep depth. Don't silently run code you've just flagged as dangerous.
wall of failures. It's easy to mechanically run the standard flow and produce 15 failures that all say "this doesn't exist yet" — that's not useful. Read references/incomplete-skills.md and reframe.
This means earlier test results can influence later tests — an agent that just discovered a cross-reference bug might "know" to use the correct arguments on the next test. Keep this in mind when interpreting e2e results.
name field must match the parent directory name per the AgentSkills spec. This is easy to miss because many platforms will still load the skill with a mismatch — but others won't, making it a silent portability bug.
should produce 5 sections, not a 12-section skeleton full of "N/A". See references/report-format.md for collapsing rules.
Find the skill, scan it, understand what it contains, and decide how to test it.
If the user gives a specific path, use it. If not, read references/finding-the-skill.md to locate the skill from conversation context or common locations.
Read the entire skill directory, not just SKILL.md. Categorize every file:
| Category | What to look for |
|---|---|
| Core | SKILL.md — the main instructions file |
| Scripts | scripts/ — executable code (Python, Bash, JS, etc.) |
| References | references/ — documentation loaded into context as needed |
| Assets | assets/ — templates, icons, fonts, images used in output |
| Examples | Any example input/output files, sample data |
| Config | Package files, requirements, dependency lists |
| Evals | evals/ — existing test cases (if any) |
Record a manifest — you'll reference this throughout testing.
Extract from the frontmatter and body:
named extensions, column names, data structures)
For each non-SKILL.md file:
and dependencies. Pay special attention to argument parsing — you'll compare this against how SKILL.md invokes the script.
integrity during testing — see references/quick-check.md.
evals.json if present. See references/eval-schema.md for the format.Show the user: the file manifest, what the skill claims to do, declared inputs/outputs, immediate red flags, and whether evals were found.
If the skill appears incomplete (TODOs, placeholder text, missing referenced files, stub scripts), read references/incomplete-skills.md and adjust your approach — reframe as a progress report rather than a failure report.
Then ask which depth level they'd like (if they haven't already said).
Read the reference file for the chosen depth level. It defines exactly which tests to run, in what order, and how to evaluate results:
references/quick-check.md — static integrity, asset validation, SKILL.mdquality, cross-reference consistency, multi-skill dependencies, security review, and 22 best practice checks (references/best-practices.md)
references/standard-check.md — everything in Quick, plus eval regression(references/eval-schema.md), script execution with mock inputs (references/mock-files.md), happy-path I/O contract validation, and workflow tests
references/deep-check.md — everything in Standard, plus edge case inputs,end-to-end workflow simulation, triggering analysis, error recovery, and script robustness
For Standard and Deep checks, present the test plan to the user before executing — they may know about domain-specific edge cases worth adding, or tests that aren't relevant. For Quick checks on simple skills, skip straight to running the tests.
pointless or unsafe (security problems, broken cross-references)
already uncovered the issues they'd find
For each test, record: test ID, what was tested, pass/fail, evidence, and notes. Evidence is critical — it lets the user verify your judgment and makes the report actionable.
On Claude.ai (no subagents): Run tests sequentially. Save outputs to a workspace directory so the user can inspect them after the report.
With subagents: Static tests first, then dynamic tests in parallel. Use independent subagents for end-to-end tests — shared context lets earlier tests influence later ones, masking issues that would appear in a fresh invocation.
Read references/report-format.md for the full template and collapsing rules. Key elements:
NEEDS ATTENTION / CRITICAL)
Critical findings
Only include report sections that have content. See the collapsing rules in references/report-format.md for which sections to skip at each depth level.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.