Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user wants to package, publish, ship, or distribute an Agent Skill to GitHub — structuring the repo, getting the frontmatter spec-compliant, naming for discoverability, releasing with tags, pre-publish review, and getting it listed (skills.sh, directories). Complements an authoring/skill-creator skill (which writes the SKILL.md body); this takes a ready skill to a discoverable, published, spec-valid repo. Do not use for application code, non-skill docs, or general Git questions.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 153% | 0% |
This skill is the end-to-end playbook for taking an Agent Skill from idea to a published, discoverable GitHub repo. It is opinionated and battle-tested: every step here exists because skipping it caused a real, avoidable problem.
The pipeline: design → write SKILL.md → triggers + evals → repo structure → name + discoverability → cross-file consistency → publish to GitHub → distribution → pre-publish review.
Use when: creating a new skill, writing or fixing a SKILL.md, structuring a skill repo, naming it, publishing to GitHub with releases, or getting it discovered.
Do not use for: writing application code, non-skill documentation, or general Git questions unrelated to shipping a skill.
Before writing anything, answer three questions:
description. Write down 5 example user phrases that should trigger it and 5 that should NOT.Required frontmatter: name and description. Add version, license, metadata.tags.
The description is the single most important field — agents load only name + description at startup and use it to decide whether to activate the skill (progressive disclosure). So:
references/ and load on demand (progressive disclosure). A bloated SKILL.md wastes every session's context.Body essentials: Overview · When to use/not · the core protocol/steps · examples · a verification checklist.
Ship an evals/ set from day one: ~10 should-trigger and ~10 should-not-trigger prompts. The boundary cases (prompts that look like they fit but belong to a neighboring skill) are the highest-value ones — they stop misfires. Re-run after every description edit; it's a regression test.
Use the portable layout so the skills CLI discovers it:
my-skill/
├── skills/<skill-name>/SKILL.md # the skill (CLI scans skills/<name>/SKILL.md)
├── README.md # result-first; what it does, install, when to use
├── LICENSE # e.g. MIT
├── CHANGELOG.md
├── evals/ # trigger eval set
├── assets/ # banner, etc.
└── references/ # optional deep docs (progressive disclosure)claude-code-skill, agent-skill, plus your domain — directories often auto-index by topic.If the skill spans multiple spec files (SKILL.md + interop/schema docs), declare ONE file the normative source for every enum/contract and have the others defer to it. Otherwise the files drift (e.g. code-api-behavior in one, code-api in another) and break integrators. Verify with a quick grep that enums/terms match across files before publishing.
bash# local git init -b main && git add -A && git commit -m "feat: initial <skill> scaffold (v0.1.0)" # create public repo and push (gh CLI) gh repo create <owner>/<name> --public --source=. --remote=origin --push \ --description "<one line with category keywords + user intent>" # topics for discoverability gh repo edit <owner>/<name> --add-topic claude-code-skill --add-topic agent-skill # tag + release = a trust signal for a new repo git tag -a v0.1.0 -m "v0.1.0 — initial preview" && git push origin v0.1.0 gh release create v0.1.0 --title "v0.1.0 — <name>" --notes "<highlights>"
Then verify — two distinct checks, don't conflate them:
bash# 1. Frontmatter parses & the skill is discoverable (does NOT install): npx skills add <owner>/<name> --list # must print "Found N skills" + your skill name # 2. Smoke-test the real install path end-to-end: npx skills add <owner>/<name> -g -a claude-code -y
--list only confirms the frontmatter parses and the skill is listed — it is not proof the install works (and a failure isn't only a frontmatter problem). Run the actual add (#2) before announcing.
skills CLI's anonymous install telemetry. You appear by getting people to run npx skills add <owner>/<name>. So: promote the install command (README, a launch post, socials).npx skills add command + a short launch post telling the result-first story. That feeds the leaderboard and lets auto-indexers find you.Run a heterogeneous review (e.g. a second model / agent) over the skill before announcing. It reliably catches what you can't see in your own work: cross-file enum drift, misleading wording, over-claims, and README commands that don't actually run. Fix, bump a patch version, then publish.
--list only checks frontmatter parsing, not that the install works; run npx skills add ... -g -a <agent> -y first.description leads with user-intent phrases + has a "Do not use" boundary.evals/ has should-trigger AND should-not-trigger prompts, incl. boundary cases.--list prints the skill (frontmatter parses) AND a real npx skills add ... -g -a <agent> -y smoke test succeeds.Other measured skills in the registry, with their headline benchmark lift.