Security

skill-validator-omni

Try it

Validates skills against seven authoring standards across all agents. Use to audit/certify.

What it does

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 Co…

The skill document

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 add or 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.js or the npm CLI)
  • Published CLI: npx skill-validator-omni [--json] (fetched from npm; needs only Node)
  • Local script: node scripts/validate.js (needs the yaml package — the repo's npm install covers it)

What Gets Validated

StandardChecks
Agent Plugins 1.0.0plugin.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 specname == dir, name format ([a-z0-9]+(-[a-z0-9]+)*, <=64, no --), description 1-1024, compatibility <=500, allowed-tools typing, body non-empty
Anthropic best practicesthird-person description, body < 500 lines, progressive disclosure (supporting dirs required above 200 lines)
Hermes in-repodescription <=60 + ends with ., version/author/license/platforms, metadata.hermes.{tags, related_skills}, required sections
OpenAgent skills.shdiscoverable layout (root SKILL.md, skills/ up to 3 levels, agent dirs), every dir name == frontmatter name, well-known index $schema
Claude Codemarketplace.json (JSON + name + plugins), plugin.json + /skills/ per plugin, .claude/skills/ project layout
OpenAI Codexfrontmatter 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.json at the plugin root with $schema: https://agent-plugins.org/schemas/1.0.0/plugin.schema.json; skills in skills//SKILL.md (immediate children, agentskills.io format); optional mcp.json for MCP servers. Loadable by compatible clients from Amazon, Cursor, Microsoft, OpenAI, and Vercel ecosystems.
  • npx skills add (skills.sh CLI) discovers from:
    • SKILL.md at 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.json with $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 / (CLI claude 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.md auto-discover when Claude Code runs there.
  • OpenAI Codex — Codex CLI auto-scans .agents/skills from the working directory up to the repo root (legacy: .codex/skills); distro beyond a local repo goes through Agent Plugins (plugin.json, covered above) or npx skills add / -a codex. Skill frontmatter must match openai/skills quick_validate.py: only name/description/license/allowed-tools/metadata allowed.

Procedure

  1. Validate — npx skill-validator-omni (or node scripts/validate.js ). Read the PASS/FAIL report. Add -s to run one standard (repeatable; --list-standards shows names; --all is the default).
  2. Fix failures — each check prints the offending detail; fix frontmatter/structure and re-run until exit 0.
  3. CI gate — npx skill-validator-omni --json | jq -e '.ok' (JSON report, exit 1 on failure).
  4. Verify installability for publish — npx skills add / --list -y must list your skills; for Claude, confirm the marketplace/plugin layouts above.
  5. Scaffold (secondary) — copy references/frontmatter-template.md into a new SKILL.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
  • yaml package missing — install deps: npm install in 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 add discovers root SKILL.md, skills/, or agent dirs — a skill buried in examples/ is NOT discoverable; a Claude marketplace needs .claude-plugin/marketplace.json, not just plugin code
  • Letting the repo copy of scripts/validate.js drift from github.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-omni exits 0 with no failures on a compliant skill; report ends with per-standard scores ([PASS] Agent Plugins 1.0.0: 7/7 etc.)
  • JSON mode carries a standards array (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.js on this skill directory passes all checks except the Codex frontmatter restriction — expected: this is a Hermes-flavoured skill, and Hermes requires version/author/platforms fields that Codex's closed field set rejects. The conflict is per-standard by design; run -s codex vs -s hermes to see each side
  • Repo test suite green: node --test in ~/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.js matches github.com/adelpro/skill-validator-omni/src/validate.js

Related skills

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

More from adelpro

Browse all skills

Diagnose and write content built to be noticed — not just well-written.

by adelpro12 installs

Detect behavioral patterns in agent sessions and turn them into confidence-scored instincts and optimizations.

by adelpro32 installs

Self-hosted private web search using SearXNG. Use when privacy is important, external search APIs are blocked or paid, or you need search without tracking.

by adelpro35 installs

Review and fix AI-generated or AI-translated Arabic so it reads as fluent, native Modern Standard Arabic (MSA) instead of translated/calqued output. Trigger on translating INTO Arabic, writing in Arabic (اكتب بالعربية / اكتبلي بالعربية), writing original Arabic, or reviewing/correcting/proofreading Arabic (‘راجع لي هذا’, 'صحح العربية', 'ترجم هذا للعربية', any Arabic quality check), and proactively before outputting Arabic prose longer than 2-3 sentences. Covers: Latin-script leakage, English sentence-structure calque, word choice/terminology, morphology/agreement, punctuation, hamza spelling, dialectal leakage into MSA. Ships a self-maintained register profile (voice-profile.md) for tone and MSA-vs-Darija choice, a runnable checklist, a terminology glossary, and an accumulating failure log. Register-focused; a separate style/voice skill may layer after it.

by adelpro

A multi-agent deliberation hub with 3 core agents and extensible extended agents. Activates on explicit request, can suggest calling user workspace skills with consent.

by adelpro

Daily AI agent optimization tips, tricks and self-improvement strategies. Learn cost-saving, speed, memory and automation best practices from the AI agent community. Use when: you want daily tips to optimize your AI agent, reduce costs, improve performance, or learn automation workflows. Don't use when: you need immediate config changes - use openclaw-agent-optimize for deep audits.

by adelpro