writing-great-skills
Skill2 starsChanged 56 days agoMITView on GitHub
Principles and vocabulary for authoring great agent skills — progressive disclosure, sharp descriptions/triggers, when to bundle scripts, and the structure that keeps SKILL.md small. Use when writing, designing, reviewing, or improving a skill, or when asked how to make a skill fire reliably.
104 other projects use a version of this.
Adopted by
Most recently taken up by
- sgaabdu4/appwrite-backendtheir own version, first seen Nov 8, 2026
- matheus3006/my-claude-skillstheir own version, first seen Nov 8, 2026
- LeonardiFranco/skillstheir own version, first seen Nov 8, 2026
- kazemcodes/skill-treetheir own version, first seen Nov 8, 2026
- ValorVie/custom-skillstheir own version, first seen Nov 8, 2026
- HarryMtv/create-frontstacktheir own version, first seen Nov 8, 2026
Used with
Projects with it also use batch-grill-me, request-refactor-plan and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
boyingliu01Skillbatch-grill-me
A relentless interview that asks every frontier question at once, round by round. Thin alias of `grilling` (#540) — upstream mattpocock/skills absorbed this protocol into grilling; XP-Gate keeps this name as the sprint-flow Phase 2 entry point so orchestration docs stay stable.
Also in 7 projects that use this
simo97Skillrequest-refactor-plan
Use this skill when user wants to create a refactor plan.
Also in 17 projects that use this
simo97Skillobsidian-vault
Also in 21 projects that use this
RoentekSkillloop-me
Grill me about specs for the workflows I want to build, within this workspace.
Also in 19 projects that use this
LesaniSkillwriting-shape
Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.
Also in 20 projects that use this
LesaniSkillwriting-beats
Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.
Also in 19 projects that use this
- +2 more from simo97
- +1 more from Lesani
Other versions104 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 104
- GreyDGL/PentestGPT★ 16ksame name
- Akylas/OSS-DocumentScanner★ 2.6ksame name
- Aniket-508/termcn★ 1.2ksame name
- stevesolun/ctx★ 583same name
- aws/graph-explorer★ 492same name
- Akylas/oss-weather★ 478same name
- sveltejs/ai-tools★ 337same name
- sveltejs/mcp★ 337same name
- ninehills/skills★ 280same name
- loulanyue/skills★ 231same name
94 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ask-zslSkill
- codebase-designSkill
- code-reviewSkill
- commit-push-prSkill
- commitSkill
- decision-mappingSkill
- diagnoseSkill
- domain-modelingSkill
- git-branchSkill
- grill-with-docsSkill
- human-itlSkill
- improve-codebase-architectureSkill
- prototypeSkill
- setup-zsl-superpowersSkill
- tdd-parallelSkill
- tddSkill
- teach-me-the-codebaseSkill
- to-issuesSkill
- to-prdSkill
- triageSkill
- verify-coverageSkill
- edit-articleSkill
- setup-pre-commitSkill
- steampipeSkill
- grillingSkill
- grill-meSkill
- handoffSkill
- timesheetSkill
- afk-fanoutSkill
- afk-workerSkill
- morning-reviewSkill
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.
0
Common
Most of the 97 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 79
Add a bundled script when the operation is deterministic (validation, formatting, a fixed serialization), the same code would otherwise be …
“Common” is measured: kept by at least 6 in 10 of the 97 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Writing Great Skills
A principles-and-vocabulary reference for authoring skills that are small, discoverable, and fire reliably. This is the reference — not a wizard. Reach for it when you're designing a new skill or sharpening an existing one. Shared terms live in GLOSSARY.md.
The three principles
- Progressive disclosure.
SKILL.mdloads first and costs context on every activation, so keep it small (aim under ~100 lines). Push long-form detail — references, examples, glossaries — into sibling files linked one level deep, read only when the task needs them. - The description is the product. It is the only thing the agent sees when deciding whether to load the skill. A vague description is a skill that never fires (or fires for the wrong prompts). Make it deep, not shallow (see GLOSSARY.md).
- Bundle the deterministic, narrate the judgmental. A step with exactly one correct answer (a length cap, a clean-tree check, a fixed serialization) belongs in a bundled script behind a gate — not in prose the model re-derives each run. Everything that needs judgment stays as instructions.
Skill structure
skill-name/
├── SKILL.md # Frontmatter + small body (required)
├── GLOSSARY.md # Shared vocabulary (if the skill has its own terms)
├── REFERENCE.md # Detailed docs (if needed)
├── EXAMPLES.md # Usage examples (if needed)
└── scripts/ # Deterministic-gate utilities (if needed)
└── check-something.pySplit a file out when SKILL.md exceeds ~100 lines, content spans distinct
domains, or advanced material is rarely needed.
Writing the description
The description is surfaced in the system prompt next to every other skill's. The agent picks based on it alone, so give it exactly two things:
- What the skill does (first sentence, third person).
- When to reach for it (second sentence:
Use when …with concrete keywords, contexts, file types).
- Good:
Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction. - Bad:
Helps with documents.— gives the agent no way to distinguish this from any other document skill.
Deterministic gate — count the 1024-char cap, don't eyeball it
The harness silently truncates a description over 1024 characters, dropping the
trailing Use when … trigger so the skill stops firing for exactly the cases the
cut-off text described. len(description) <= 1024 has one correct answer, so
check it rather than guessing:
CK=$({ ls "$PWD"/skills/*/writing-great-skills/scripts/check-description-length.py 2>/dev/null
ls "$HOME/.claude/skills/writing-great-skills/scripts/check-description-length.py" 2>/dev/null
ls -d "$HOME"/.claude/plugins/cache/zsl-superpowers/zsl/*/skills/*/writing-great-skills/scripts/check-description-length.py 2>/dev/null | sort -Vr; } | head -1)
if [ -n "$CK" ]; then printf '%s' "$DESCRIPTION" | python3 "$CK"; else echo "zsl-gate: check-description-length.py unresolved — count chars by hand (Fallback)"; fiA FAIL: line means trim before shipping.
Fallback (if $CK is empty): count the characters yourself and confirm
<= 1024 — never approve a description by visual length alone. The trailing
Use when … clause is the first thing lost to truncation, so a description that
looks like two reasonable sentences can still be silently over the cap.
When to add scripts
Add a bundled script when the operation is deterministic (validation, formatting, a fixed serialization), the same code would otherwise be regenerated every run, or errors need explicit handling. Scripts save tokens and improve reliability versus generated code. Every gate script ships with tests, including at least one input the prose way gets wrong.
Review checklist
- Description names what it does and when to fire (
Use when …). - Description within 1024 chars (run the gate above — counted, not eyeballed).
SKILL.mdbody stays small; depth lives in linked files one level deep.- No time-sensitive info baked into the body.
- Terminology consistent with GLOSSARY.md.
- Concrete examples included.
- Deterministic steps are bundled scripts with a Fallback; judgmental steps stay prose.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

