agentleFS
jackchukajackchuka/skills/claude-skill-spec-audit/SKILL.md

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

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
  1. Very specific:

    Check installed skills against the agentskills.io specification and local conventions for metadata completeness.

    line 24
  2. Very specific:

    Multi-platform or general skills stay unprefixed: If a skill touches 2+ platforms, no platform prefix — the scope prefix alone is enough.

    line 71
  3. Distinctive:

    When creating a new skill, check for existing siblings.

    line 83
  4. Very specific:

    Every skill is exactly one of four layers, declared via metadata.layer.

    line 87
  5. Distinctive:

    Not appear in user-facing trigger phrases.

    line 101
  6. Distinctive:

    If user specified skill names, filter to matching directories

    line 124
  7. Very specific:

    Read each SKILL.md frontmatter

    line 125
  8. Distinctive:

    No platform prefix if skill uses 2+ platforms

    line 141
  9. Distinctive:

    No single-word names (must have at least one hyphen)

    line 143
  10. Very specific:

    After fixing, use Edit to insert missing fields before the closing ---.

    line 191
  11. Very specific:

    Only add confirms if the skill can perform irreversible or externally-visible operations.

    line 205

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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)

FieldRequiredNotes
nameYes1-64 chars, lowercase, hyphens only, must match directory name
descriptionYes1-1024 chars, non-empty
compatibilityNoMax 500 chars, environment requirements
metadataNoArbitrary key-value map
allowed-toolsNoSpace-delimited tool list (experimental)

Naming Conventions

Skill names follow the pattern: [scope]-[platform/org]-[group]-<name-with-layer-suffix>

Rules

  1. Lowercase, kebab-case, no consecutive hyphens, 2-4 words, max 40 chars
  2. Suffix encodes the layer (see "Layer Conventions" below)
  3. Standardized action synonyms: audit (compliance), scan (broad analysis), search (lookup), triage (classify+act)

Scope prefix (required)

Derived from metadata.scope:

ScopePrefixExample
personalp-p-slack-triage, p-daily-standup
organizationo-o-org-release-digest
generic(none)skill-spec-audit, gh-dep-pr-triage

Platform prefix (when single-platform dependent)

PlatformPrefixWhen to use
GitHubgh-Skill requires gh CLI or GitHub API
Gitgit-Skill requires git but not GitHub
Slackslack-Skill requires Slack MCP server
Google Workspacegws-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)

GroupSkills 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.

Layermetadata.layerSuffix familyExample
Primitiveprimitiveverb: -read, -list, -fetch, -search, -post, -insert, -append, -query, -get, -scangws-sheets-read
Rendererrendererformat noun (-slides, -docs, -pdf, -card, -message) or agent noun (-writer, -explainer, -namer, -generator)gws-slides, visual-explainer
Workflowworkflowoutcome noun: -digest, -deck, -report, -triage, -audit, -standup, -prep, -recap, -investigationo-tailor-allhands-deck
Referencereference-sharedo-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:

FieldExpectedValues
argument-hintIf skill accepts argsShort usage hint string
metadata.authorAlwaysMust be present (non-empty)
metadata.scopeAlwaysgeneric, personal, or organization
metadata.layerAlwaysprimitive, renderer, workflow, or reference
metadata.confirmsIf skill has side effectsList of operations requiring user confirmation

Workflow

Phase 1: Discover Skills

  1. Glob for ~/.claude/skills/*/SKILL.md
  2. Also check .claude/skills/*/SKILL.md (project-level)
  3. Skip symlinks — those point to .agents/skills/ and have their own conventions
  4. If user specified skill names, filter to matching directories
  5. Read each SKILL.md frontmatter

Phase 2: Validate Each Skill

For each SKILL.md, check:

Spec compliance:

  1. name exists, matches directory name, is lowercase with hyphens only, no consecutive hyphens, 1-64 chars
  2. description exists, is non-empty, 1-1024 chars
  3. compatibility exists (warn if missing — not required by spec but expected locally)

Naming conventions:

  1. Scope prefix matches metadata.scope: p- for personal, o- for organization, none for generic
  2. Platform prefix present if skill depends on a single platform (gh-, git-, slack-, gws-)
  3. No platform prefix if skill uses 2+ platforms
  4. Action synonym is standardized: audit not review/check, scan not inspect
  5. No single-word names (must have at least one hyphen)
  6. Max 40 chars, 2-4 words
  7. Abbreviations only from allowlist: pr, cli, oss, dep, mcp, gh, gws

Local conventions:

  1. metadata.author is present and non-empty
  2. metadata.scope is one of: generic, personal, organization
  3. metadata.confirms exists 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
  1. argument-hint exists 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 found

Phase 4: Fix (if --fix or user asks)

For each issue, prompt the user for the value or infer it:

FieldInference strategy
compatibilityScan for CLI tools, MCP servers in body -> suggest "Requires X, Y"
metadata.authorInfer from existing skills or ask user
metadata.scopeAsk user: generic, personal, or organization?
metadata.confirmsExtract side-effect patterns from body, present list for confirmation
argument-hintExtract 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

ScopeCriteria
genericWorks for anyone, no personal/org-specific data
personalReferences your specific accounts, channels, search terms, voice
organizationReferences 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:

Operationconfirms entry
Post Slack messagesend Slack messages
Merge PRmerge PRs
Approve PRapprove PRs
Create GitHub issuecreate GitHub issues
Create GitHub releasecreate GitHub releases
Create calendar eventcreate calendar event
Git commitcreate git commit
Git pushpush to remote
Write filessave to filesystem
Install toolsinstall missing tools
Create PRcreate PR
Modify settingsmodify settings files

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.