Summary
Most bundled skills declare a top-level origin: key in their SKILL.md frontmatter (e.g. origin: ECC). This key isn't part of the official Agent Skills frontmatter whitelist, so skills fail validation under the official tooling.
Details
The official Agent Skills specification (https://agentskills.io/specification) allows exactly these six top-level frontmatter keys:
name, description, license, compatibility, metadata, allowed-tools
The official validator enforces this whitelist — anthropics/skills' skill-creator/scripts/quick_validate.py defines ALLOWED_PROPERTIES = {name, description, license, allowed-tools, metadata, compatibility} and rejects any other top-level key (skills-ref validate does the same).
origin is not in that set, so every skill carrying it fails official validation. In this repo that's 737 of 865 SKILL.md files (values seen: ECC, community, ECC direct-port adaptation, contributor names, etc.).
This also hurts portability: Claude.ai and the Claude API Skills upload both validate frontmatter, so these skills can't be uploaded as-is.
Suggested fix
The spec's intended home for arbitrary provenance is the metadata map (string → string). Moving the key keeps the data and passes validation:
# before
origin: ECC
# after
metadata:
origin: ECC
This is a mechanical, scriptable change across the tree. Happy to send a PR if that'd be welcome.
Refs
Summary
Most bundled skills declare a top-level
origin:key in theirSKILL.mdfrontmatter (e.g.origin: ECC). This key isn't part of the official Agent Skills frontmatter whitelist, so skills fail validation under the official tooling.Details
The official Agent Skills specification (https://agentskills.io/specification) allows exactly these six top-level frontmatter keys:
name,description,license,compatibility,metadata,allowed-toolsThe official validator enforces this whitelist —
anthropics/skills'skill-creator/scripts/quick_validate.pydefinesALLOWED_PROPERTIES = {name, description, license, allowed-tools, metadata, compatibility}and rejects any other top-level key (skills-ref validatedoes the same).originis not in that set, so every skill carrying it fails official validation. In this repo that's 737 of 865SKILL.mdfiles (values seen:ECC,community,ECC direct-port adaptation, contributor names, etc.).This also hurts portability: Claude.ai and the Claude API Skills upload both validate frontmatter, so these skills can't be uploaded as-is.
Suggested fix
The spec's intended home for arbitrary provenance is the
metadatamap (string → string). Moving the key keeps the data and passes validation:This is a mechanical, scriptable change across the tree. Happy to send a PR if that'd be welcome.
Refs
anthropics/skills→skill-creator/scripts/quick_validate.py(ALLOWED_PROPERTIES)