Skip to content

Spec-compliant skill name and metadata-nested scalar fields #160

@LadyBluenotes

Description

@LadyBluenotes

What

Generated SKILL.md frontmatter is rejected by the canonical Agent Skills validator (skills-ref). Two separate problems:

  1. Non-spec top-level keys. The validator allows exactly six top-level frontmatter keys — name, description, license, compatibility, metadata, allowed-tools — and treats any other top-level key as an error. Intent emits type, library, library_version, and framework at the top level. These are scalars and belong under the spec's metadata map (a string→string mapping for client-specific data).

  2. The name value is itself invalid. Intent emits names like routing/file-based. The spec requires name to contain only lowercase alphanumerics and hyphens (so a / is "invalid characters") and to equal the parent directory name (which a multi-segment value cannot). So the slash name fails validation two different ways.

Where this comes from

Scope

This covers the frontmatter changes for the scalar fields and the name:

  • name becomes the spec-legal leaf segment matching its parent directory; the namespace it used to encode is carried by the skill's directory path instead.
  • type, library, library_version, framework move under metadata.
  • The generator templates (generate-skill) emit the new shape; validate errors on non-spec scalar keys, on a non-string metadata map, and on a slash/non-leaf name.

The array fields (sources, requires) are not part of this — they can't live in the string-only metadata map and move to a separate structured surface, tracked in its own issue.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions