claude-skill-spec-audit

Audit skill SKILL.md files for compliance with the agentskills.io specification. Checks frontmatter fields (name, description, compatibility, metadata, argument-hint) and metadata sub-fields (author, scope, confirms). 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".

12 stars

Best use case

claude-skill-spec-audit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Audit skill SKILL.md files for compliance with the agentskills.io specification. Checks frontmatter fields (name, description, compatibility, metadata, argument-hint) and metadata sub-fields (author, scope, confirms). 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".

Teams using claude-skill-spec-audit should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/claude-skill-spec-audit/SKILL.md --create-dirs "https://raw.githubusercontent.com/jackchuka/skills/main/claude-skill-spec-audit/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/claude-skill-spec-audit/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How claude-skill-spec-audit Compares

Feature / Agentclaude-skill-spec-auditStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Audit skill SKILL.md files for compliance with the agentskills.io specification. Checks frontmatter fields (name, description, compatibility, metadata, argument-hint) and metadata sub-fields (author, scope, confirms). 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".

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Skill Spec Audit

Check installed skills against the [agentskills.io specification](https://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]`

### Rules

1. Lowercase, kebab-case, no consecutive hyphens, 2-4 words, max 40 chars
2. Role-noun suffixes allowed (`-writer`, `-scheduler`, `-namer`)
3. 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.

## 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.confirms` | If skill has side effects | List 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:**

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

**Local conventions:**

11. `metadata.author` is present and non-empty
12. `metadata.scope` is one of: `generic`, `personal`, `organization`
13. `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`

7. `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:

| 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`  |

Related Skills

dev-cli-consistency-audit

12
from jackchuka/skills

Reviews a CLI tool's command interface for consistency in argument naming, flag conventions, help text, and README alignment. Use when building CLI tools or before releasing CLI updates. Triggers: "review CLI arguments", "align CLI conventions", "CLI consistency check", "make sure commands are aligned", "review command interface".

claude-skill-prereq-audit

12
from jackchuka/skills

Scan skills for prerequisite tools, MCP servers, and auth requirements, then check if everything is installed and authenticated. Offers to fix issues. Use when setting up a new machine, after installing skills, or to verify your environment. Triggers: "check prerequisites", "skill prereqs", "are my tools installed", "verify skill dependencies", "/claude-skill-prereq-audit".

claude-skill-orchestration-audit

12
from jackchuka/skills

Audit skills for agentic orchestration quality. Checks subagent dispatch patterns, parallelism opportunities, anti-patterns, and alignment with the three-phase pattern (setup → dispatch → aggregate). Use when reviewing skill quality, saying "audit orchestration", "check my skills for parallelism", "skill orchestration review", or "/claude-skill-orchestration-audit".

claude-permissions-audit

12
from jackchuka/skills

Review and reorganize Claude Code permission settings across all config files (global settings.json, project settings.local.json, dotfiles copies). Identifies redundancy, misplaced permissions, and lack of read/write organization. Produces a clean layout where global settings are the source of truth and project-local files only contain project-specific overrides. Use this skill whenever the user mentions reviewing permissions, cleaning up settings, auditing allowed tools, reorganizing settings.json, or asking "what permissions do I have". Also use when adding new MCP servers or tools and wanting to decide what to pre-allow. Triggers: "review permissions", "audit settings", "clean up settings.json", "permissions audit", "/permissions-audit".

restaurant-search

12
from jackchuka/skills

Search for Japanese restaurants using the `hpp` CLI (HotPepper Gourmet API). Use when the user wants to find a restaurant, plan a dinner, search for izakayas, or book a group meal in Japan. Triggers on requests like "find a restaurant near Shibuya", "search for izakayas in 新宿", "restaurant for 10 people in 浜松町", "dinner spot near Tokyo station".

project-namer

12
from jackchuka/skills

Use when naming a project, repository, tool, or product and wanting a memorable, unique name

p-slack-triage

12
from jackchuka/skills

Scan Slack for messages needing your attention, walk through them one-by-one, and draft/send replies. Covers DMs, mentions, threads, and channel activity. Use when the user wants to triage Slack, check what needs attention, or draft replies. Triggers on "triage slack", "check slack", "what needs my attention on slack", "slack replies", "review slack messages", "/slack-triage".

p-news-briefing

12
from jackchuka/skills

Use when the user asks for news, wants a briefing, says "/news-briefing", or asks to aggregate recent information on any topic. Triggers on requests like "what's happening with AI", "get me news on crypto", "news briefing on climate".

p-md-to-slides

12
from jackchuka/skills

Convert a structured Markdown deck source into a styled Google Slides presentation. Use this skill when the user has a slide.md file (or wants to write one) and wants Google Slides output — talks, LT decks, lecture slides, conference presentations, internal explainers. Trigger phrases include "md からスライド作って", "slide.md を Google Slides にして", "発表資料を Google Slides で", "convert this markdown to slides", "build a Google Slides deck from this markdown", "make slides from md", "/md-to-slides", and similar. Also use when the user references a presentation/<date>/slide.md file structure with `## Slide N — title`, `**話すこと:**`, and `**スライド要素:**` sections.

p-ego-search

12
from jackchuka/skills

Search for mentions of you across Slack, Fireflies, and GitHub. Triggers on "egosearch", "/egosearch", "search for mentions of me", "who's talking about me".

p-daily-standup

12
from jackchuka/skills

Aggregate previous business day activity and post standup update to Slack. Use when the user says "standup", "daily standup", "post status", "status update", or "/daily-standup".

p-daily-report

12
from jackchuka/skills

Use when reviewing what you worked on, creating standups, writing status updates, tracking daily/weekly progress, or asking "what did I do today"