skill-linter
Skill0 starsChanged 2 months agoMITView on GitHub
Check a skill against house rules: description length, slug length, pointer scope and allowed frontmatter keys. Use when validating agent skills for length, triggers, evals, or spec rules.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- lobomfz/skillstheir own version, first seen Apr 28, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- lobomfz/skills★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository16 other files it gives its agents.
- agent-architectureSkill
- agent-identitySkill
- agent-orchestrationSkill
- agent-safetySkill
- automation-reviewSkill
- composioSkill
- create-skillSkill
- document-generationSkill
- mcp-builderSkill
- n8nSkill
- prompt-engineeringSkill
- prompt-librarySkill
- rag-systemsSkill
- report-automationSkill
- trigger-devSkill
- workflow-mappingSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Read the full SKILL.md and any bundled references/ or assets/ files, then go through each of these in order:
- Distinctive: line 71
If everything passes, say so briefly — don't manufacture nitpicks to seem thorough.
- Distinctive: line 82
NEVER ship a skill whose referenced files do not exist.
- Distinctive: line 83
NEVER write a description whose trigger only fires on the skill's own name.
- Distinctive: line 84
NEVER pad a skill body to look substantial.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill Linter
You are the quality gate for the skillary library. As this hub grows — especially if it ever takes outside contributions — the thing that keeps 300+ skills useful instead of a junk drawer is a consistent bar for what counts as a good SKILL.md. Your job is to check a draft against that bar and explain, specifically, where it falls short — not to rewrite it yourself unless asked.
Why this is a review pass, not a formatter
SKILL.md quality is mostly a judgment call about whether the instructions would actually help a model do the task well — that's not something a rigid pass/fail script can catch. Treat this skill as a thoughtful second read, not a linter in the software sense. Where something is genuinely mechanical (a missing folder, a hardcoded path), say so plainly. Where something is a judgment call (is this description "pushy" enough to trigger reliably?), explain your reasoning rather than issuing a verdict.
What to check
Read the full SKILL.md and any bundled references/ or assets/ files, then go through each of these in order:
1. Frontmatter
namematches the folder name exactly.descriptionis trigger-rich, not just a restatement of the title. It should read like it's answering "when should Claude reach for this?" — covering both what the skill does and the specific phrasings/contexts that should fire it. A description that only says what the skill does (e.g. "Formats citations") without any triggering context is too thin — flag it and suggest concrete trigger phrases the user might actually type.- Under 250 characters. This is the one that matters most. Claude truncates the description in the skill listing at roughly 250 chars, so anything past that is invisible when it is deciding whether to load the skill. A trigger clause sitting at the end of a 400-character description does nothing at all. Structure: capability first, then the concrete triggers, all inside the limit.
- The trigger must not restate the skill's own name. "Use when the user asks about tax strategist" matches nothing a real person types — they describe a task, not a skill name. Flag any trigger that just echoes the title.
- If the skill overlaps another, it must name it. A line like "Not for valuation — use
financial-analyst" is what stops two similar skills competing for the same request. Without it, whichever fires first is arbitrary. - The description should be a little "pushy" — biased toward triggering when in doubt, since skills more often under-trigger than over-trigger. If a description reads as narrow or hedged, flag that as a likely under-triggering risk.
2. Body instructions
- Written in imperative form ("Extract the API's response schema," not "The API's response schema should be extracted").
- Explains the why behind non-obvious steps, not just a checklist of MUSTs. Heavy use of all-caps ALWAYS/NEVER without reasoning is a yellow flag — note it and suggest reframing with the underlying reason instead.
- Stays general enough to handle the range of requests the description promises, rather than being hard-coded to one example scenario.
- Under roughly 500 lines. If it's approaching that, check whether it should push detail into
references/instead of bloating the main body.
3. Privacy and scope
- No personal file paths, usernames, machine-specific config, or private URLs. This is a hard fail — flag immediately and specifically, since it's the one category that shouldn't ship regardless of everything else being good.
- No third-party credits, attributions, or "built by X" content baked into the instructions.
- Nothing that resembles malicious intent (exfiltration, unauthorized access, credential harvesting) — a hard fail, no exceptions.
4. Folder structure
SKILL.mdpresent at the skill's root, andnamematching the folder name.references/only if there is genuine lookup content to split out. Do not ask for placeholder files — an emptyreferences/orassets/folder is worse than none.- Every file in
references/must be linked from the body. Agents load reference files only when SKILL.md points at them, so an unlinked reference can never be read. - The
*.skillbundle, if present, must be named for the skill. Bundles are generated byscripts/bundle.py; a mismatched name means a rename left an artifact behind.
5. Run the validator
The mechanical checks above are enforced by scripts/validate.py in the hub repo. Run it rather than eyeballing them:
python scripts/validate.py --repo <category>Review the things a script cannot judge: whether the description's triggers match how someone would actually phrase the request, whether the instructions are specific enough to act on, and whether the skill overlaps an existing one without saying so.
Output format
Give a short pass/flag list, grouped by the four checks above. For each flag, name the specific line or section and explain the fix in one or two sentences — don't just say "description is weak," say what's missing and give an example rewrite.
## Skill review: <skill-id>
**Frontmatter** — [pass / flagged: reason + suggested fix]
**Body instructions** — [pass / flagged: reason + suggested fix]
**Privacy & scope** — [pass / flagged: reason — hard fail if triggered]
**Folder structure** — [pass / flagged: reason + suggested fix]
**Overall:** [ready to commit / needs revision before commit]If everything passes, say so briefly — don't manufacture nitpicks to seem thorough. A clean skill should get a clean pass.
Verification & Quality Checklist
- Trigger clause names phrases a user would actually type, not the skill's own name.
- Every file the body tells the model to read exists in the skill folder.
- Instructions were run once end-to-end against a real request before shipping.
- Description states what the skill is NOT for, naming the sibling that is.
Anti-Patterns & Constraints
- NEVER ship a skill whose referenced files do not exist.
- NEVER write a description whose trigger only fires on the skill's own name.
- NEVER pad a skill body to look substantial; a thin skill should be deleted, not inflated.
References
Load these only when the task needs them:
- references/house-conventions.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

