Audit a target SKILL.md against the Agent Skills specification and generate a Chinese HTML report. Use when the user asks to check, audit, review, or optimiz...
安全
skill-validator-omni
试用Validates skills against seven authoring standards across all agents. Use to audit/certify.
它能做什么
Validates skills against seven authoring standards across all agents. Use to audit/certify.
技能文档
Skill Validator
The compliance gate for agent skills: validates a skill, a plugin, or a whole repo against seven standards in one command. Flagship: Agent Plugins 1.0.0 (agent-plugins.org) — the open, vendor-neutral spec for packaging Agent Skills and MCP servers into portable plugins, published by a TSC of Core Maintainers from Amazon, Cursor, Microsoft, OpenAI, and Vercel. Also enforces the agentskills.io spec, Anthropic best practices, Hermes in-repo standard, OpenAgent skills.sh discoverability, Claude Code marketplace installability, and the OpenAI Codex skill format. Ships as npx skill-validator-omni (Node, zero Python deps) and as scripts/validate.js for local use.
This is a validation/audit tool. Creation/scaffolding is a secondary workflow — the differentiator is certifying that a skill will install and work across agents, not generating SKILL.md files.
When to Use
- User asks to "validate", "audit", "check", "lint", or "certify" a skill
- User wants to know if a skill/repo is installable via
npx skills addor Claude Code - Before publishing a skill repo to skills.sh or a Claude marketplace
- As a CI gate on a skills repo (exit codes: 0 pass, 1 failed checks, 2 usage error)
- Creating a new skill that must be standards-compliant from day one (scaffold, then validate)
Don't Use For
- Subjective quality review / multi-agent QA — use skill-engineer (quality gates, Designer/Reviewer/Tester)
- Skill authoring inside the hermes-agent repo itself — use hermes-agent-skill-authoring (repo tests + docs regen)
- Pure creation with no standards concern —
skill-creator(anthropics/skills) does that
Prerequisites
- Node.js >= 18 (runs
scripts/validate.jsor the npm CLI) - Published CLI:
npx skill-validator-omni [--json](fetched from npm; needs only Node) - Local script:
node scripts/validate.js(needs theyamlpackage — the repo'snpm installcovers it)
What Gets Validated
| Standard | Checks |
|---|---|
| Agent Plugins 1.0.0 | plugin.json manifest: canonical $schema (agent-plugins.org/schemas/1.0.0/plugin.schema.json), name format (1-64, lowercase alnum/hyphen/dot, no --/..), closed field set (unknown fields flagged), keywords/author typing, skills/ layout (immediate children), optional mcp.json parses |
| agentskills.io spec | name == dir, name format ([a-z0-9]+(-[a-z0-9]+)*, <=64, no --), description 1-1024, compatibility <=500, allowed-tools typing, body non-empty |
| Anthropic best practices | third-person description, body < 500 lines, progressive disclosure (supporting dirs required above 200 lines) |
| Hermes in-repo | description <=60 + ends with ., version/author/license/platforms, metadata.hermes.{tags, related_skills}, required sections |
| OpenAgent skills.sh | discoverable layout (root SKILL.md, skills/ up to 3 levels, agent dirs), every dir name == frontmatter name, well-known index $schema |
| Claude Code | marketplace.json (JSON + name + plugins), plugin.json + /skills/ per plugin, .claude/skills/ project layout |
| OpenAI Codex | frontmatter limited to name/description/license/allowed-tools/metadata (mirrors openai/skills quick_validate.py), hyphen-case name == dir (<=64, no edge/consecutive hyphens), name/desc present, description no angle brackets <=1024 + trigger words (docs guidance), body < 500 lines, no ancillary docs (README/INSTALLATION_GUIDE/QUICK_REFERENCE/CHANGELOG), agents/openai.yaml keys (interface/policy/dependencies), repo .agents/skills/.codex/skills/plugin.json layout |
Every skill discovered in a repo (nested skills///) gets the full suite — a broken skill can't hide inside a big repo.
Installability (what "installable" means)
A skill project passes install checks when it satisfies at least one discoverable layout:
- Agent Plugins 1.0.0 — portable plugin package:
plugin.jsonat the plugin root with$schema: https://agent-plugins.org/schemas/1.0.0/plugin.schema.json; skills inskills//SKILL.md(immediate children, agentskills.io format); optionalmcp.jsonfor MCP servers. Loadable by compatible clients from Amazon, Cursor, Microsoft, OpenAI, and Vercel ecosystems. npx skills add(skills.sh CLI) discovers from:SKILL.mdat repo root (single-skill repo)skills//SKILL.md(container dirs walked up to 3 levels)- agent dirs:
.claude/skills/,.agents/skills/,.cursor/skills/,.codex/skills/,.gemini/skills/,.config/opencode/skills/ - HTTP publishers:
.well-known/agent-skills/index.jsonwith$schema: https://schemas.agentskills.io/discovery/0.2.0/schema.json(legacy:.well-known/skills/)
- Claude Code — plugin marketplace:
.claude-plugin/marketplace.json(name + plugins) at root, added with/plugin marketplace add /(CLIclaude plugin marketplace add github.com//), then/plugin install @; each plugin needs.claude-plugin/plugin.json(name) +/skills//SKILL.md. Repos with only.claude/skills//SKILL.mdauto-discover when Claude Code runs there. - OpenAI Codex — Codex CLI auto-scans
.agents/skillsfrom the working directory up to the repo root (legacy:.codex/skills); distro beyond a local repo goes through Agent Plugins (plugin.json, covered above) ornpx skills add / -a codex. Skill frontmatter must matchopenai/skillsquick_validate.py: onlyname/description/license/allowed-tools/metadataallowed.
Procedure
- Validate —
npx skill-validator-omni(ornode scripts/validate.js). Read the PASS/FAIL report. Add-sto run one standard (repeatable;--list-standardsshows names;--allis the default). - Fix failures — each check prints the offending detail; fix frontmatter/structure and re-run until exit 0.
- CI gate —
npx skill-validator-omni --json | jq -e '.ok'(JSON report, exit 1 on failure). - Verify installability for publish —
npx skills add / --list -ymust list your skills; for Claude, confirm the marketplace/plugin layouts above. - Scaffold (secondary) — copy
references/frontmatter-template.mdinto a newSKILL.md, fill fields, then validate from step 1.
Common Edge Cases
- Validating a repo vs a single skill — point at either; the tool discovers
skills/, agent dirs, and plugin dirs automatically - Skill with no
metadata.hermes— Hermes checks fail; that's correct if you publish outside Hermes, but the repo-level skill still gets spec + Anthropic + OpenAgent checks yamlpackage missing — install deps:npm installin the skill-validator-omni repo, or use the published CLI which bundles it- Windows — the npm CLI needs only Node (no python3 requirement)
Pitfalls
- Treating open-agent.io (the AFK-surf product site) as a standards source — it publishes NO skill spec. The real "open agent" standards are agent-plugins.org (Agent Plugins 1.0.0, vendor-neutral, Amazon/Cursor/Microsoft/OpenAI/Vercel) and skills.sh (schema at
schemas.agentskills.io), both enforced by this validator - Confusing the Agent Plugins manifest with a Claude plugin manifest — Agent Plugins uses root
plugin.json+$schema: agent-plugins.org/schemas/1.0.0/plugin.schema.json(closed field set); Claude uses.claude-plugin/marketplace.json+.claude-plugin/plugin.json. Both get checked - Claiming "installable" without the layout:
npx skills adddiscovers rootSKILL.md,skills/, or agent dirs — a skill buried inexamples/is NOT discoverable; a Claude marketplace needs.claude-plugin/marketplace.json, not just plugin code - Letting the repo copy of
scripts/validate.jsdrift fromgithub.com/adelpro/skill-validator-omni/src/validate.js— sync after changing either side - Adding the progressive-disclosure requirement to tiny skills — it only applies above 200 lines
- Expecting one SKILL.md to satisfy both Hermes and Codex frontmatter — Hermes requires
version/author/platforms; Codex's closed field set (name/description/license/allowed-tools/metadata) rejects them. The standards conflict by design; the per-standard report shows which side a skill meets, so don't "fix" a Codex flag by deleting Hermes fields (and vice-versa)
Verification
npx skill-validator-omniexits 0 with no failures on a compliant skill; report ends with per-standard scores ([PASS] Agent Plugins 1.0.0: 7/7etc.)- JSON mode carries a
standardsarray (one object per standard: passed/failed/total/ok) for per-standard CI gating:jq -e '.standards["Agent Plugins 1.0.0"].ok' node scripts/validate.json this skill directory passes all checks except the Codex frontmatter restriction — expected: this is a Hermes-flavoured skill, and Hermes requiresversion/author/platformsfields that Codex's closed field set rejects. The conflict is per-standard by design; run-s codexvs-s hermesto see each side- Repo test suite green:
node --testin~/projects/skill-validator-omni(25 tests: spec, OpenAgent, well-known, Claude, Agent Plugins, Codex, fallback parser) - Broken cases proven: name mismatch → exit 1, invalid marketplace.json → FAIL, missing well-known
$schema→ FAIL, Agent Plugins bad name/missing$schema/unknown field → FAIL, Codex unexpected frontmatter field/angle-bracket description/ancillary docs → FAIL scripts/validate.jsmatchesgithub.com/adelpro/skill-validator-omni/src/validate.js
相关技能
Agent skill quality checker. Input a skill directory or skill files; output trigger clarity, metadata issues, examples, safety boundaries, installability, po...
在安装或发布前,为待审查的 skill 包生成结构化风险报告。
Validate whether a skill can be executed successfully by a minimally informed subagent. Use when the user wants to test a skill by giving a subagent only a m...
Audit, score, and improve agent skills before publishing, sharing, or installing them. Use when reviewing a SKILL.md file or skill folder for trigger quality...
Vet third-party or generated skills for usefulness, safety, overlap, and publish quality. Use when the user needs to decide whether to install, keep, rename,...