claude-skill-spec-audit
Skill15 starsChanged 9 days agoMITView on GitHub
Audit skill SKILL.md files for compliance with the agentskills.io specification and house conventions. Checks frontmatter fields (name, description, compatibility, metadata, argument-hint), metadata sub-fields (author, scope, layer, confirms), and layer/suffix consistency. Use when adding new skills, reviewing skill quality, or ensuring all skills follow the spec. Triggers: "audit skills", "check skill spec", "skill compliance", "are my skills up to spec", "/claude-skill-spec-audit".
- Installs packages
- Commits and pushes
In this repository31 other files it gives its agents.
- claude-permissions-auditSkill
- claude-skill-orchestration-auditSkill
- claude-skill-prereq-auditSkill
- dev-cli-consistency-auditSkill
- dev-code-qualitySkill
- dev-new-toolSkill
- dev-software-designSkill
- gh-dep-pr-triageSkill
- gh-issue-reportSkill
- gh-org-chartSkill
- gh-oss-go-bumpSkill
- gh-oss-release-prepSkill
- gh-oss-releaseSkill
- gh-review-triageSkill
- git-conventional-commitSkill
- gws-meeting-schedulerSkill
- p-activity-digestSkill
- p-blog-post-miningSkill
- p-blog-writerSkill
- p-clipboard-copySkill
- p-daily-reflectionSkill
- p-daily-reportSkill
- p-daily-standupSkill
- p-ego-searchSkill
- p-md-to-slidesSkill
- p-meeting-prepSkill
- p-news-briefingSkill
- project-namerSkill
- p-slack-triageSkill
- p-violentmonkey-userscript-syncSkill
- restaurant-searchSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 5 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Check installed skills against the agentskills.io specification and local conventions for metadata completeness.
- Very specific: line 71
Multi-platform or general skills stay unprefixed: If a skill touches 2+ platforms, no platform prefix — the scope prefix alone is enough.
- Distinctive: line 83
When creating a new skill, check for existing siblings.
- Very specific: line 87
Every skill is exactly one of four layers, declared via metadata.layer.
- Distinctive: line 101
Not appear in user-facing trigger phrases.
- Distinctive: line 124
If user specified skill names, filter to matching directories
- Very specific: line 125
Read each SKILL.md frontmatter
- Distinctive: line 141
No platform prefix if skill uses 2+ platforms
- Distinctive: line 143
No single-word names (must have at least one hyphen)
- Very specific: line 191
After fixing, use Edit to insert missing fields before the closing ---.
- Very specific: line 205
Only add confirms if the skill can perform irreversible or externally-visible operations.
≈ “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 Spec Audit
Check installed skills against the agentskills.io specification and local conventions for metadata completeness.
Arguments
- Skill names: tokens after the command -> filter to those skills only
- --fix: automatically add missing fields (prompts for values)
- Default: scan all non-symlinked skills in
~/.claude/skills/
Spec Requirements (agentskills.io)
| Field | Required | Notes |
name | Yes | 1-64 chars, lowercase, hyphens only, must match directory name |
description | Yes | 1-1024 chars, non-empty |
compatibility | No | Max 500 chars, environment requirements |
metadata | No | Arbitrary key-value map |
allowed-tools | No | Space-delimited tool list (experimental) |
Naming Conventions
Skill names follow the pattern: [scope]-[platform/org]-[group]-<name-with-layer-suffix>
Rules
- Lowercase, kebab-case, no consecutive hyphens, 2-4 words, max 40 chars
- Suffix encodes the layer (see "Layer Conventions" below)
- Standardized action synonyms:
audit(compliance),scan(broad analysis),search(lookup),triage(classify+act)
Scope prefix (required)
Derived from metadata.scope:
| Scope | Prefix | Example |
personal | p- | p-slack-triage, p-daily-standup |
organization | o- | o-org-release-digest |
generic | (none) | skill-spec-audit, gh-dep-pr-triage |
Platform prefix (when single-platform dependent)
| Platform | Prefix | When to use |
| GitHub | gh- | Skill requires gh CLI or GitHub API |
| Git | git- | Skill requires git but not GitHub |
| Slack | slack- | Skill requires Slack MCP server |
| Google Workspace | gws- | Skill requires gws CLI |
Multi-platform or general skills stay unprefixed. If a skill touches 2+ platforms, no platform prefix — the scope prefix alone is enough.
Group prefix (when 2+ skills share a domain)
| Group | Skills in group |
daily- | standup, report, reflection |
skill- | dry-run, prereq-audit, spec-audit |
blog- | writer, post-mining |
oss- | release, release-prep |
org- | release-digest, incident-investigation, sync-skills-to-plugins |
When creating a new skill, check for existing siblings. If a second skill appears in the same domain, retroactively add a shared prefix to both.
Layer Conventions
Every skill is exactly one of four layers, declared via metadata.layer. The
suffix of the name must match the layer.
| Layer | metadata.layer | Suffix family | Example |
| Primitive | primitive | verb: -read, -list, -fetch, -search, -post, -insert, -append, -query, -get, -scan | gws-sheets-read |
| Renderer | renderer | format noun (-slides, -docs, -pdf, -card, -message) or agent noun (-writer, -explainer, -namer, -generator) | gws-slides, visual-explainer |
| Workflow | workflow | outcome noun: -digest, -deck, -report, -triage, -audit, -standup, -prep, -recap, -investigation | o-tailor-allhands-deck |
| Reference | reference | -shared | o-tailor-shared |
Reference skills must:
- End in
-shared. - Begin their description with:
"Internal reference loaded by other <prefix>-* skills. Do not invoke directly." - Not appear in user-facing trigger phrases.
See ~/.claude/skills/CONVENTIONS.md for full rationale.
Local Conventions (beyond spec)
These are project-specific conventions enforced on top of the spec:
| Field | Expected | Values |
argument-hint | If skill accepts args | Short usage hint string |
metadata.author | Always | Must be present (non-empty) |
metadata.scope | Always | generic, personal, or organization |
metadata.layer | Always | primitive, renderer, workflow, or reference |
metadata.confirms | If skill has side effects | List of operations requiring user confirmation |
Workflow
Phase 1: Discover Skills
- Glob for
~/.claude/skills/*/SKILL.md - Also check
.claude/skills/*/SKILL.md(project-level) - Skip symlinks — those point to
.agents/skills/and have their own conventions - If user specified skill names, filter to matching directories
- Read each SKILL.md frontmatter
Phase 2: Validate Each Skill
For each SKILL.md, check:
Spec compliance:
nameexists, matches directory name, is lowercase with hyphens only, no consecutive hyphens, 1-64 charsdescriptionexists, is non-empty, 1-1024 charscompatibilityexists (warn if missing — not required by spec but expected locally)
Naming conventions:
- Scope prefix matches
metadata.scope:p-for personal,o-for organization, none for generic - Platform prefix present if skill depends on a single platform (
gh-,git-,slack-,gws-) - No platform prefix if skill uses 2+ platforms
- Action synonym is standardized:
auditnotreview/check,scannotinspect - No single-word names (must have at least one hyphen)
- Max 40 chars, 2-4 words
- Abbreviations only from allowlist:
pr,cli,oss,dep,mcp,gh,gws
Local conventions:
metadata.authoris present and non-emptymetadata.scopeis one of:generic,personal,organizationmetadata.confirmsexists if the skill body references any of these patterns:
- Slack:
send_message,post message,post to Slack - Git:
git commit,git push,create commit,push to remote - GitHub:
merge,approve,create PR,create issue,create release,gh release - Calendar:
create event,insert event - Files:
save to,write to,create file - Install:
brew install,install
argument-hintexists if the skill body references arg parsing,## Arguments, or accepts parameters
Phase 3: Report
Print a table:
## Skill Spec Audit
| Skill | name | naming | desc | compat | author | scope | confirms | arg-hint | Issues |
|-------|------|--------|------|--------|--------|-------|----------|----------|--------|
| gh-dep-pr-triage | ok | ok | ok | ok | ok | ok | ok | — | 0 |
| p-blog-writer | ok | ok | ok | ok | ok | ok | ok | ok | 0 |
| new-skill | ok | MISS:scope-prefix | ok | MISS | MISS | MISS | WARN | — | 4 |
Legend: ok = present and valid, MISS = missing, WARN = likely needed but missing, — = not applicable
Summary: N skills checked, M fully compliant, X issues foundPhase 4: Fix (if --fix or user asks)
For each issue, prompt the user for the value or infer it:
| Field | Inference strategy |
compatibility | Scan for CLI tools, MCP servers in body -> suggest "Requires X, Y" |
metadata.author | Infer from existing skills or ask user |
metadata.scope | Ask user: generic, personal, or organization? |
metadata.confirms | Extract side-effect patterns from body, present list for confirmation |
argument-hint | Extract from ## Arguments section if present, otherwise ask |
After fixing, use Edit to insert missing fields before the closing ---.
Re-run validation and show updated table.
Determining metadata.scope
| Scope | Criteria |
generic | Works for anyone, no personal/org-specific data |
personal | References your specific accounts, channels, search terms, voice |
organization | References company repos, internal tools, team-specific workflows |
Determining metadata.confirms
Only add confirms if the skill can perform irreversible or externally-visible operations. Read-only skills (scanning, searching, reporting) do NOT need confirms.
Common confirms patterns:
| Operation | confirms entry |
| Post Slack message | send Slack messages |
| Merge PR | merge PRs |
| Approve PR | approve PRs |
| Create GitHub issue | create GitHub issues |
| Create GitHub release | create GitHub releases |
| Create calendar event | create calendar event |
| Git commit | create git commit |
| Git push | push to remote |
| Write files | save to filesystem |
| Install tools | install missing tools |
| Create PR | create PR |
| Modify settings | modify settings files |
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.

