SkillCheck — Comprehensive Skill Testing
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.
How it works
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.
Gotchas
- The
evals.json format must match the skill-creator schema exactly (see
references/eval-schema.md). Don't invent a new format — compatibility with
skill-creator's benchmarking tools is the whole point.
- Mock file generation for binary formats (DOCX, XLSX, PPTX, PDF, images) requires
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.
- Cross-reference mismatches between SKILL.md and scripts are often the root cause
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.
- Best practice scores are advisory and reported separately — do not add them to the
main pass/fail verdict percentage. A skill can be functionally perfect but
structurally messy, and the report should reflect that distinction.
- Security review runs before script execution for a reason — if Critical security
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.
- Incomplete skills (TODOs, stubs, placeholder text) need a progress report, not a
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.
- On Claude.ai without subagents, end-to-end tests run sequentially in shared context.
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.
- The frontmatter
name field must match the parent directory name per the Agent
Skills 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.
- Report sections should be collapsed when empty — a Quick Check on a minimal skill
should produce 5 sections, not a 12-section skeleton full of "N/A".
See
references/report-format.md for collapsing rules.
Phase 1: Discover
Find the skill, scan it, understand what it contains, and decide how to test it.
Find the skill
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.
Scan the directory
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.
Parse the SKILL.md
Extract from the frontmatter and body:
- Name and description — what it does and when it should trigger
- Declared inputs — file types, formats, schemas (pay close attention to explicitly
named extensions, column names, data structures)
- Declared outputs — file types, formats, target paths, expected structures
- Step-by-step workflows — numbered or ordered procedures
- Tool/dependency requirements — libraries, CLIs, external tools
- Conditional logic — branching paths
- Constraints and rules — ALWAYS, NEVER, MUST directives
- References to bundled files — when to read other files in the skill
- Script invocations — exact commands including arguments and flags
Analyze supporting files
For each non-SKILL.md file:
- Scripts: Read the code. Identify arguments, outputs, hardcoded paths, error handling,
and dependencies. Pay special attention to argument parsing — you'll compare this against
how SKILL.md invokes the script.
- References: Skim for structure and purpose. Note if SKILL.md actually references them.
- Assets: Note file types and whether they're referenced. Assets will be validated for
integrity during testing — see
references/quick-check.md.
- Examples: Identify as input examples, output examples, or both — gold for test generation.
- Evals: Read
evals.json if present. See references/eval-schema.md for the format.
Present findings
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).
Phase 2: Test
Read the reference file for the chosen depth level. It defines exactly which tests to run,
in what order, and how to evaluate results:
- Quick:
references/quick-check.md — static integrity, asset validation, SKILL.md
quality, cross-reference consistency, multi-skill dependencies, security review, and
22 best practice checks (references/best-practices.md)
- Standard:
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
- Deep:
references/deep-check.md — everything in Standard, plus edge case inputs,
end-to-end workflow simulation, triggering analysis, error recovery, and script robustness
Test plan (Standard and Deep only)
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.
Execution order
- Static tests first — fast, free, and may reveal issues that make later tests
pointless or unsafe (security problems, broken cross-references)
- Eval regression next — the author's own tests are the most authoritative baseline
- Script tests — run with mock inputs, verify outputs
- I/O contract tests — generate mock files, run the skill, check results
- End-to-end tests last — slowest and most context-heavy; earlier tests may have
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.
Phase 3: Report
Read references/report-format.md for the full template and collapsing rules. Key elements:
- Summary card with pass/fail counts and verdict (HEALTHY / MOSTLY HEALTHY /
NEEDS ATTENTION / CRITICAL)
- Failed test details — what was tested, what happened, why it matters, suggested fix
- Security findings — dedicated section if anything flagged, prominent banner for
Critical findings
- Best practices score — separate from the main verdict
- Improvement suggestions — prioritized: Critical → Important → Nice to have
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.
1---
2name: skill-check
3description: >
4 Comprehensive testing and validation of Claude skills. Use this skill whenever the user wants to
5 test, validate, audit, or quality-check a skill — whether they say "test my skill", "check this
6 skill works", "validate my skill", "run skill-check", or anything similar. Also trigger when the
7 user asks things like "does this skill handle edge cases?", "what's wrong with my skill?",
8 "find problems in my skill", "is this skill secure?", "does my skill follow best practices?",
9 or "how robust is this skill?". Even if they just say "check this" and point at a skill
10 directory, use skill-check. This skill covers triggering tests, output quality tests, input/output
11 contract validation, script execution checks, security review, best practices auditing, and
12 multi-file skill analysis.
13 Do NOT use for creating or editing skills (that's skill-creator) — skill-check is purely about
14 testing and reporting on existing skills.
15license: MIT
16allowed-tools: Bash Read Write
17---
18
19# SkillCheck — Comprehensive Skill Testing
20
21SkillCheck audits an entire skill directory, understands every moving part, and generates targeted
22tests to verify the skill works as advertised. It doesn't just check "does it roughly work" — it
23tests every aspect: triggering, input handling, output quality, script correctness, security,
24best practices, and resource integrity.
25
26---
27
28## How it works
29
30Three phases: **Discover → Test → Report.** Discovery is always required. Testing depth
31depends on what the user wants. Reporting adapts to what was found.
32
33| Depth | What it covers |
34|---------------|---------------------------------------------------------------------------|
35| **Quick** | Static analysis — structure, syntax, integrity, security, best practices |
36| **Standard** | Static + script execution + happy-path I/O + eval regression |
37| **Deep** | Everything — edge cases, mock files, e2e workflows, stress |
38
39If the user doesn't specify, default to **Standard** — it catches real functional problems
40without the time investment of Deep. If they seem in a hurry, go **Quick**. If they mention
41thoroughness, edge cases, or "test everything", go **Deep**.
42
43For a worked example of a Standard Check from start to finish, see `references/example-run.md`.
44
45---
46
47## Gotchas
48
49- The `evals.json` format must match the skill-creator schema exactly (see
50 `references/eval-schema.md`). Don't invent a new format — compatibility with
51 skill-creator's benchmarking tools is the whole point.
52- Mock file generation for binary formats (DOCX, XLSX, PPTX, PDF, images) requires
53 third-party Python packages that may not be installed. Always check availability
54 before generating and fall back to text-based equivalents if installation fails.
55 See `references/mock-files.md` for the dependency list.
56- Cross-reference mismatches between SKILL.md and scripts are often the root cause
57 of multiple downstream test failures (script execution fails, eval regression fails,
58 I/O tests fail — all for the same reason). Identify and report the root cause
59 rather than listing each symptom as a separate unrelated failure.
60- Best practice scores are advisory and reported separately — do not add them to the
61 main pass/fail verdict percentage. A skill can be functionally perfect but
62 structurally messy, and the report should reflect that distinction.
63- Security review runs before script execution for a reason — if Critical security
64 issues are found in scripts, warn the user before executing them at Standard or
65 Deep depth. Don't silently run code you've just flagged as dangerous.
66- Incomplete skills (TODOs, stubs, placeholder text) need a progress report, not a
67 wall of failures. It's easy to mechanically run the standard flow and produce 15
68 failures that all say "this doesn't exist yet" — that's not useful. Read
69 `references/incomplete-skills.md` and reframe.
70- On Claude.ai without subagents, end-to-end tests run sequentially in shared context.
71 This means earlier test results can influence later tests — an agent that just
72 discovered a cross-reference bug might "know" to use the correct arguments on the
73 next test. Keep this in mind when interpreting e2e results.
74- The frontmatter `name` field must match the parent directory name per the Agent
75 Skills spec. This is easy to miss because many platforms will still load the skill
76 with a mismatch — but others won't, making it a silent portability bug.
77- Report sections should be collapsed when empty — a Quick Check on a minimal skill
78 should produce 5 sections, not a 12-section skeleton full of "N/A".
79 See `references/report-format.md` for collapsing rules.
80
81---
82
83## Phase 1: Discover
84
85Find the skill, scan it, understand what it contains, and decide how to test it.
86
87### Find the skill
88
89If the user gives a specific path, use it. If not, read `references/finding-the-skill.md`
90to locate the skill from conversation context or common locations.
91
92### Scan the directory
93
94Read the entire skill directory, not just SKILL.md. Categorize every file:
95
96| Category | What to look for |
97|----------------|------------------------------------------------------------------------|
98| **Core** | `SKILL.md` — the main instructions file |
99| **Scripts** | `scripts/` — executable code (Python, Bash, JS, etc.) |
100| **References** | `references/` — documentation loaded into context as needed |
101| **Assets** | `assets/` — templates, icons, fonts, images used in output |
102| **Examples** | Any example input/output files, sample data |
103| **Config** | Package files, requirements, dependency lists |
104| **Evals** | `evals/` — existing test cases (if any) |
105
106Record a manifest — you'll reference this throughout testing.
107
108### Parse the SKILL.md
109
110Extract from the frontmatter and body:
111
112- **Name and description** — what it does and when it should trigger
113- **Declared inputs** — file types, formats, schemas (pay close attention to explicitly
114 named extensions, column names, data structures)
115- **Declared outputs** — file types, formats, target paths, expected structures
116- **Step-by-step workflows** — numbered or ordered procedures
117- **Tool/dependency requirements** — libraries, CLIs, external tools
118- **Conditional logic** — branching paths
119- **Constraints and rules** — ALWAYS, NEVER, MUST directives
120- **References to bundled files** — when to read other files in the skill
121- **Script invocations** — exact commands including arguments and flags
122
123### Analyze supporting files
124
125For each non-SKILL.md file:
126
127- **Scripts**: Read the code. Identify arguments, outputs, hardcoded paths, error handling,
128 and dependencies. Pay special attention to argument parsing — you'll compare this against
129 how SKILL.md invokes the script.
130- **References**: Skim for structure and purpose. Note if SKILL.md actually references them.
131- **Assets**: Note file types and whether they're referenced. Assets will be validated for
132 integrity during testing — see `references/quick-check.md`.
133- **Examples**: Identify as input examples, output examples, or both — gold for test generation.
134- **Evals**: Read `evals.json` if present. See `references/eval-schema.md` for the format.
135
136### Present findings
137
138Show the user: the file manifest, what the skill claims to do, declared inputs/outputs,
139immediate red flags, and whether evals were found.
140
141**If the skill appears incomplete** (TODOs, placeholder text, missing referenced files,
142stub scripts), read `references/incomplete-skills.md` and adjust your approach — reframe
143as a progress report rather than a failure report.
144
145Then ask which depth level they'd like (if they haven't already said).
146
147---
148
149## Phase 2: Test
150
151Read the reference file for the chosen depth level. It defines exactly which tests to run,
152in what order, and how to evaluate results:
153
154- **Quick:** `references/quick-check.md` — static integrity, asset validation, SKILL.md
155 quality, cross-reference consistency, multi-skill dependencies, security review, and
156 22 best practice checks (`references/best-practices.md`)
157- **Standard:** `references/standard-check.md` — everything in Quick, plus eval regression
158 (`references/eval-schema.md`), script execution with mock inputs (`references/mock-files.md`),
159 happy-path I/O contract validation, and workflow tests
160- **Deep:** `references/deep-check.md` — everything in Standard, plus edge case inputs,
161 end-to-end workflow simulation, triggering analysis, error recovery, and script robustness
162
163### Test plan (Standard and Deep only)
164
165For Standard and Deep checks, present the test plan to the user before executing — they may
166know about domain-specific edge cases worth adding, or tests that aren't relevant. For Quick
167checks on simple skills, skip straight to running the tests.
168
169### Execution order
170
1711. **Static tests first** — fast, free, and may reveal issues that make later tests
172 pointless or unsafe (security problems, broken cross-references)
1732. **Eval regression next** — the author's own tests are the most authoritative baseline
1743. **Script tests** — run with mock inputs, verify outputs
1754. **I/O contract tests** — generate mock files, run the skill, check results
1765. **End-to-end tests last** — slowest and most context-heavy; earlier tests may have
177 already uncovered the issues they'd find
178
179For each test, record: test ID, what was tested, pass/fail, evidence, and notes. Evidence
180is critical — it lets the user verify your judgment and makes the report actionable.
181
182**On Claude.ai (no subagents):** Run tests sequentially. Save outputs to a workspace
183directory so the user can inspect them after the report.
184
185**With subagents:** Static tests first, then dynamic tests in parallel. Use independent
186subagents for end-to-end tests — shared context lets earlier tests influence later ones,
187masking issues that would appear in a fresh invocation.
188
189---
190
191## Phase 3: Report
192
193Read `references/report-format.md` for the full template and collapsing rules. Key elements:
194
195- **Summary card** with pass/fail counts and verdict (HEALTHY / MOSTLY HEALTHY /
196 NEEDS ATTENTION / CRITICAL)
197- **Failed test details** — what was tested, what happened, why it matters, suggested fix
198- **Security findings** — dedicated section if anything flagged, prominent banner for
199 Critical findings
200- **Best practices score** — separate from the main verdict
201- **Improvement suggestions** — prioritized: Critical → Important → Nice to have
202
203Only include report sections that have content. See the collapsing rules in
204`references/report-format.md` for which sections to skip at each depth level.