Port of .NET AgentSkillFrontmatter class. See .NET implementation for reference.
.NET has a dedicated AgentSkillFrontmatter class that parses and validates all agentskills.io spec frontmatter fields. Python currently has no frontmatter class — _extract_frontmatter() returns a plain (name, description) tuple and ignores additional spec fields.
.NET AgentSkillFrontmatter properties:
Name — required, validated (kebab-case, max 64 chars)
Description — required, validated (max 1024 chars)
License — optional
Compatibility — optional, validated (max 500 chars)
AllowedTools — optional, space-delimited pre-approved tool names
Metadata — optional, arbitrary key-value pairs
Python currently only parses name and description. The other fields (license, compatibility, allowed_tools, metadata) are ignored.
Changes needed
- Create a
SkillFrontmatter class with all spec fields
- Update
_extract_frontmatter() to parse and return SkillFrontmatter instead of (name, description) tuple
- Add validation for
compatibility (max 500 chars)
- Store the frontmatter on
Skill base class (or FileSkill) for downstream access
- Update callers of
_extract_frontmatter() accordingly
Port of .NET
AgentSkillFrontmatterclass. See .NET implementation for reference..NET has a dedicated
AgentSkillFrontmatterclass that parses and validates all agentskills.io spec frontmatter fields. Python currently has no frontmatter class —_extract_frontmatter()returns a plain(name, description)tuple and ignores additional spec fields..NET
AgentSkillFrontmatterproperties:Name— required, validated (kebab-case, max 64 chars)Description— required, validated (max 1024 chars)License— optionalCompatibility— optional, validated (max 500 chars)AllowedTools— optional, space-delimited pre-approved tool namesMetadata— optional, arbitrary key-value pairsPython currently only parses
nameanddescription. The other fields (license,compatibility,allowed_tools,metadata) are ignored.Changes needed
SkillFrontmatterclass with all spec fields_extract_frontmatter()to parse and returnSkillFrontmatterinstead of(name, description)tuplecompatibility(max 500 chars)Skillbase class (orFileSkill) for downstream access_extract_frontmatter()accordingly