feat(skills): adopt AgentSkills.io SKILL.md standard (#150)#216
Merged
Conversation
…atter (#150) Replace the homegrown HTML comment metadata format with the AgentSkills.io standard using YAML frontmatter parsed by YamlDotNet. Add support for directory-based skills (name/SKILL.md) with progressive disclosure via references/, scripts/, and assets/ subdirectories. Phase 1 — YAML frontmatter scanner: - SkillScanner parses YAML frontmatter (name, description, metadata.triggers, license, compatibility, allowed-tools, metadata.version) - Directory-based skill discovery: name/SKILL.md preferred over name.md - Resource enumeration for scripts/, references/, assets/ subdirectories - SkillEntry extended with Format, Version, License, Compatibility, AllowedTools, SkillDirectory, and ResourcePaths properties - SkillRegistry compressed index shows resource count for directory skills Phase 2 — System skill migration: - All 5 system skills converted to YAML frontmatter (new version files) - Built-in skill copies updated to match latest feed versions - skill-authoring skill rewritten to document the YAML frontmatter format Phase 3 — Directory-based feed support: - SkillFeedManifest gains optional Files array per skill entry for multi-file directory-based skills (backward-compatible: old daemons ignore the field) - SystemSkillSyncService downloads SKILL.md + resource files into skill directories with per-file SHA-256 verification - generate-skill-manifest.sh detects version directories containing SKILL.md and generates files array entries with per-file hashes and CDN URLs
…pport All skills now use the AgentSkills.io canonical directory layout (skill-name/SKILL.md) exclusively. No flat file support. - SkillScanner: removed flat file pass, all discovery is directory-based - SkillEntry: SkillDirectory promoted to required constructor parameter, removed SkillFormat enum (single format) - SystemSkillSyncService: always creates skill-name/SKILL.md directories, removed MigrateFlatSkills (no users to migrate) - CopyBuiltInSkills: creates skill-name/SKILL.md on disk instead of skill-name.md - SkillFeedManifest: removed Format property from SkillFeedEntry - Feed sources: converted latest versions to directory layout (skill-name/version/SKILL.md), deleted all old version files - generate-skill-manifest.sh: simplified to directory-only detection
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
skill-name/SKILL.md), and progressive disclosure viareferences/,scripts/,assets/subdirectoriesWhat changed
Scanner (
SkillScanner.cs):skill-name/SKILL.mdin root or nested under category/.system/scripts/,references/,assets/subdirectoriesData model (
SkillEntry.cs):SkillDirectorypromoted to required constructor parameter (every skill has one)SkillFormatenum — single formatVersion,License,Compatibility,AllowedTools,ResourcePathsFeed pipeline:
SkillFeedEntry.Filesarray for multi-file skills (backward-compatible: old daemons ignore it)SystemSkillSyncServicealways createsskill-name/SKILL.mddirectories, downloads resource files with individual SHA-256 checksCopyBuiltInSkillscreatesskill-name/SKILL.mdon disk instead of flatskill-name.mdgenerate-skill-manifest.shsimplified to directory-only detectionMigrateFlatSkills()— no users to migrateSystem skills:
skill-authoringskill rewritten to document the new formatversion/SKILL.mddirectories replace flatversion.mdfilesCloses #150
Test plan
dotnet slopwatch analyze— 0 violationsgenerate-skill-manifest.shgenerates valid manifest for both simple and directory-based skills (tested with synthetic multi-file skill)DisableSystemSkillSync=true, verify built-in skills bootstrap as directories