Installed skills were invisible to the tool they were installed for. If you are on 0.1.x, this is the release that fixes it.
Every target now writes the frontmatter its tool reads
The claude target, which is the default, wrote .claude/skills/<name>/SKILL.md with no frontmatter. Claude Code finds a skill by reading name and description there and passes the directory over without them, so add wrote the file, listed it, recorded its hash in the lockfile, and the agent never loaded it. agents, windsurf and continue were the same. cursor had a header carrying the skill's name where the tool wants its description, which is the field it matches on.
Each target now writes what its tool actually reads: trigger: model_decision for Windsurf, alwaysApply: false for Cursor and Continue, name and description for Claude Code and the vendor-neutral agents layout.
Reference files are installed
Fourteen references/*.md files across nine skills are named in rule text as see references/money.md and were in no bundle, no registry.json, and no install. They are now installed beside SKILL.md for the two targets that give a skill its own directory. The three that take one flat file per skill cannot hold them, so add names the ones staying behind and where to read them, rather than leaving a pointer to nothing.
A target can say what it will not read
Windsurf reads 6,000 characters of a rule and 12,000 across all of them, and truncates the rest silently. Nine of thirteen skills are past the first number. add now prints the sizes instead of letting the tool drop the rest quietly.
Upgrading from 0.1.x
No reinstall. The frontmatter and the reference files are an upstream change like any other:
skyl list reports an update available
skyl diff shows exactly what is being added
skyl update applies it
Also
skyl lintpointed at an install directory said what it was looking at, instead of reporting three spec violations on a correct install.auditon a short file no longer prints~0 tokens.tscand esbuild were both writingdist/bin.js, so the file on disk was whichever ran last andtscwould then never refresh it. The published binary isdist/skyl.jsnow.
Notes
Published over OIDC with a provenance attestation; npm audit signatures reports a verified signature and a verified attestation. 0.1.0 through 0.1.2 were publishing-pipeline iterations on the same day and have no release notes of their own.
Full changelog: v0.1.2...v0.2.0