plugin/skills/plugin-skill-audit/SKILL.md
Use this skill when auditing, validating, or fixing an existing plugin skill's frontmatter, body length, progressive-disclosure structure, cross-references, or eval wiring — after editing skills under `plugin/skills/`, before merging a PR that touches them, or when a skill stops triggering as expected — the internal procedure for `/plugin-author audit`. Checks frontmatter against the agentskills.io specification plus ai-skills plugin conventions and optionally applies safe fixes. No longer slash-invocable — call `/plugin-author audit [<name> | --all] [--deep] [--strict] [--fix]` instead. Read by the `prompt-engineer` agent at task start when DEV-ing or reviewing a plugin skill (the safe-fix table and audit checks are the cached digest of upstream spec rules).
npx skillsauth add avav25/ai-assets plugin-skill-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit skills in plugin/skills/<name>/ against the agentskills.io spec + best-practices and ai-skills conventions. Emits a per-skill pass/warn/fail report and optionally applies safe fixes. Counterpart to /plugin-skill-create; NEVER creates skills.
plugin/skills/, or before merging a PR that touches them/plugin-doctor flags frontmatterNot for: scaffolding new skills (use /plugin-skill-create); Codex/Windsurf assets (.agents/skills/asset-validation/); whole-plugin diagnostic (/plugin-doctor).
/plugin-skill-audit # audit every skill (== --all)
/plugin-skill-audit feature-design # audit one skill
/plugin-skill-audit feature-design --fix # + apply safe auto-fixes
/plugin-skill-audit feature-design --check scripts # only scripts/ checks
/plugin-skill-audit --all --strict # warnings become failures
| Flag | Default | Effect |
|---|---|---|
| <skill-name> (positional) | --all | Audit a single skill folder under plugin/skills/<name>/ |
| --all | implicit when no name given | Audit every skill under plugin/skills/ |
| --fix | off | Apply only safe, deterministic fixes (see Safe-fix table). Never rewrites prose. |
| --strict | off | Warnings fail the run (CI-friendly) |
| --check | all | Restrict to a check group: spec (agentskills.io frontmatter only), body (size + structure), refs (cross-references), eval (eval/case + rubric wiring), scripts (scripts/ agentic-use), all |
plugin/skills/<name>/ does not exist; suggest /plugin-skill-create <name> if appropriate--all: enumerate every immediate subdirectory of plugin/skills/ containing a SKILL.md--check):
scripts/ agentic-use checks (skipped if the skill has no scripts/ dir)context: fork, etc.)name | check | status | detail--fix: apply only the safe, deterministic fixes from the Safe-fix table; re-run checks to confirm.ai-skills-memory/plugin-skill-audit.log--strict)spec)Source of truth: digest prompt-engineering/skill-authoring-spec.md; only audit verdicts below (progressive disclosure — field rules live in the digest).
Frontmatter — required fields:
name — fail if not 1–64 chars / not lowercase a–z+digits+hyphens / leading-trailing or consecutive (--) hyphen / not equal to the parent directory name (mismatch is always fail, never --fix)description — fail if not 1–1024 chars or empty; CRITICAL fail if it contains the literal TODO token; warn if it does NOT begin with the literal Use this skill when … phrase (Form A), or is missing the folded-in capability / trigger keywords / third person (see prompt-engineering/optimizing-descriptions.md)Frontmatter — optional fields permitted by spec:
license — name or path to a bundled licensecompatibility — spec cap 1–500 chars; warn if > 500 chars OR if present without an actual runtime/environment requirement; absent is finemetadata — string→string map (warn on non-string values)allowed-tools — space-separated tool list (experimental; warn if used)ai-skills-tolerated (not upstream): context: fork (slash-invocable), argument-hint (/help hint), disable-model-invocation: true (knowledge-only). Any field outside {spec-optional ∪ ai-skills-tolerated} → warn.
body)warn beyond, fail beyond 1.5×; ≤ 12000 chars (ai-skills rule) — fail beyond# /<name> or # <Title>warn if missing): When to use, Invocation, Arguments (if argument-hint), Behavior, Failure modes, Integrationwarn if an inline fenced block > 80 lines)warn if body reads as one concrete answer, not reusable steps)refs)Per relative reference in SKILL.md:
scripts/, references/, assets/) resolve under the skill dir; @<skill-name> resolves to an existing plugin/skills/<name>/; eval-rubric / hook / schema paths resolve under their roots/home/..., C:\Users\...) — failSKILL.md (digest best-practice) — warn if deepereval)plugin/eval/cases/<name>/ has ≥1 case stub — warn if missing for a context: fork skillplugin/eval/judge-rubrics/<name>.md exists when referenced in plugin/eval/config.json — fail otherwisecase_id, skill, input, expected); judge_rubric path resolves; judge_model ∈ {haiku, sonnet, opus}scripts; part of all; skipped if no scripts/ dir)Selectable via --check scripts; runs inside all. Per file under scripts/ (digest "Using scripts in skills"):
SKILL.md & resolves under the skill dir — fail if dangling; unreferenced — warnwarn--help/usage path documented — warn if absentwarn if mixed--dry-run for destructive ops; idempotent — warn if absent--offset / --output) — warn if unboundednpm:+semver / bundler/inline) — warn on missing/floating; runtime prerequisite in SKILL.md or compatibility — warn if neitherplugin — runs as part of all)Use this skill when … phrase (Form A) and is third-person — warn otherwise; still CRITICAL-fail on a literal TODO tokencontext: fork for a slash command; disable-model-invocation: true only with no context: forkplugin/rules/global-package-rules.md; English-onlySKILL.md ≥ once — warn on orphans--fix)| Finding | Auto-fix |
|---|---|
| name missing → derived from folder name | Insert name: <folder> |
| name mismatch with folder name | Refuse — fail (renaming a skill is a behavior change, not a safe fix) |
| Trailing whitespace in frontmatter | Strip |
| Mixed line endings | Normalize to LF |
| Missing final newline | Append |
| description > 1024 chars | Refuse — needs human edit |
| compatibility > 500 chars | Refuse — needs human edit |
| UTF-8 BOM at file start | Strip (deterministic) |
| Missing recommended section (When to use, etc.) | Insert empty heading placeholder with TODO marker |
| Orphan resource file | Refuse — leaves an inline comment listing the orphan |
| Any scripts/ finding (interactive, missing --help, exit codes, deps) | Refuse — script behavior is never auto-fixed (conservative discipline) |
--fix never rewrites prose, rephrases descriptions, or moves content between files.
plugin-skill-audit report — target: <name|--all>; fix=<on|off>; strict=<on|off>
<skill-name>
spec pass name=<name>, description=<len>/1024
body warn body=<chars>/12000; <lines> lines
refs pass 3 references resolved
eval warn no eval/cases/<name>/ stub
plugin pass
summary: N audited | P pass | W warn | F fail
When --fix runs, a second block lists every applied fix with the line range touched.
name↔folder mismatch is always a fail, never a fixplugin/skills/ only (.agents/skills/ → asset-validation/)prompt-engineering/skill-authoring-spec.md (+ optimizing-descriptions.md) — update the digest, never re-inline here/plugin-skill-create <name>warnfail with the line number; refuse any --fix--fix vs uncommitted changes: refuse, ask for a clean working tree| Layer | When | Shape |
|---|---|---|
| L4 | After every run | Append a JSON line to .ai-skills-memory/plugin-skill-audit.log — ts, target, counts, fixes |
/plugin-author audit. Not slash-invocable. The umbrella reads it directly; ai-skills:prompt-engineer pre-reads it before any plugin-asset DEV/REVIEW pass./plugin-author audit [<name> | --all] [--deep] [--strict] [--fix] [--check spec|body|refs|eval|scripts|all]plugin/skills/<name>/SKILL.md, sibling resource files, plugin/eval/cases/<name>/, plugin/eval/judge-rubrics/<name>.md, plugin/eval/config.json, plugin/.claude-plugin/plugin.json.ai-skills-memory/plugin-skill-audit.log; (only with --fix) safe-fix-table edits.plugin/skills/plugin-skill-create/SKILL.md. Whole-plugin diagnostic: /plugin-doctor.prompt-engineering/skill-authoring-spec.md , prompt-engineering/optimizing-descriptions.md — mirroring https://agentskills.io/specification + /skill-creation/{best-practices,optimizing-descriptions,using-scripts}.agents/skills/asset-validation/ + .codex/checklists/codex-asset-review.md (parity-tracked in review/parity-matrix.md).development
Use this skill when running the recurring (daily) knowledge-base rescan for a repo that already has knowledge/.knowledge-sync.yml — the main-thread dispatcher that reads the config, computes the git delta since last_scanned_sha, maps changed paths to affected doc areas, early-exits cheaply when nothing changed, then fans out one Agent(content-writer) per affected area, applies the propose/direct update policy, advances the baseline only on success, and writes an L4 run log — all with the G1 untrusted-content choke-point, secret-scan, deny-list, and budget controls woven in. For first-time setup use /knowledge-sync-init.
development
Use this skill when bootstrapping scheduled knowledge-base sync for a repo that has no knowledge/.knowledge-sync.yml yet — to run one-time setup that detects the knowledge_root from CLAUDE.md/AGENTS.md, maps doc areas to source globs, records opt-in external sources (Linear/Notion/WebFetch, all disabled by default), captures a baseline last_scanned_sha, sets the per-area update policy, generates or seeds knowledge/CONVENTIONS.md, provisions the L4 memory dir, and offers to register the daily routine. Routes ongoing recurring sync operations to /knowledge-sync.
tools
Use this skill when bootstrapping a target repository to be ai-skills-aware — on the first run of any ai-skills workflow in a fresh repo, when adopting the ai-skills plugin in an existing repo, or after upgrading to a plugin version that adds new memory paths or templates, including when the user does not say "init" but asks to "set up" or "onboard" the repo — to detect codebase type, create CLAUDE.md + AGENTS.md scaffolding, initialize the .ai-skills-memory/ directory tree from L1 templates, and configure .gitignore. Idempotent — safe to re-run. Accepts `--codebase-type <type>` and `--overwrite`. Not for re-initializing only memory — use `/memory-init` instead.
tools
Use this skill when extending, repairing, or improving plugin assets, when ingesting a `/feedback` report as a fix-cycle backlog, or when you do not remember which lower-level command is right for the job — the umbrella workflow for ai-skills plugin-asset authoring and maintenance: creating, auditing, fixing, improving, refactoring, and migrating skills, agents, rules, hooks, prompts, schemas, and rubrics inside the plugin. Auto-classifies the request, loads the right knowledge skills (`@prompt-engineering`, `@context-engineering`, `@team-protocols`), and spawns the right subagents (`prompt-engineer`, `system-architect`, `python-engineer`, `software-engineer`, `qa-engineer`, `eval-judge`) via the `Agent` tool.