The skillet skill format & registry spec

June 10, 2026 · View on GitHub

skillet deliberately does not invent a new skill format. A skill is a folder containing a SKILL.md with YAML frontmatter — the same shape the agent-skills ecosystem already uses. skillet adds discovery, install, and versioning around it.

A skill

my-skill/
├── SKILL.md          # required — metadata + instructions
├── scripts/          # optional — supporting files, installed together
└── reference.md      # optional

SKILL.md frontmatter

fieldrequirednotes
namekebab-case [a-z0-9-]; this is the install folder name
descriptionone sentence — what it does and when to use it (shown in search)
versionsemver recommended for reproducible installs
licenseSPDX id (e.g. MIT)
keywordsarray, improves search
homepageURL

Everything after the frontmatter is the instruction body the agent reads.

Validate yours:

npx @jnmetacode/skillet validate ./my-skill

The registry

The registry is a single JSON file in a Git repo, served over raw.githubusercontent.com. There is no server. To add your skill, open a PR that appends one entry to registry/index.json:

{
  "name": "web-scraper",
  "description": "Scrape pages and extract structured data; use for web content.",
  "repo": "your-org/your-repo",
  "path": "skills/web-scraper",
  "ref": "main",
  "keywords": ["scrape", "http"],
  "license": "MIT"
}
fieldmeaning
nameunique registry id (usually matches the skill's name)
repoowner/repo on GitHub
pathsubdirectory holding the SKILL.md (omit if repo root)
refbranch or tag to install from

Private / alternate registries

Point skillet at any index URL or local file:

skillet add my-skill --registry https://example.com/my-registry.json
skillet add my-skill --registry ./local-registry.json
# or persist it:
skillet init   # then edit skillet.json -> "registry"

Lockfile

skillet.lock.json records, per installed skill: the original ref, the source repo/path/gitRef, the resolved commit resolved (SHA), the version, and installedAt. Commit it, then anyone can reproduce the exact set with skillet install (no args), which reinstalls every entry at its pinned resolved SHA — the npm ci of skills. skillet add owner/repo#<sha> pins a single install; branches/tags track their latest until you skillet update.

Config

skillet.json (optional, created by skillet init):

{
  "skillsDir": ".claude/skills",
  "registry": "https://raw.githubusercontent.com/jnMetaCode/skillet/main/registry/index.json"
}