skill-writing
Skill81 starsChanged 4 months agoApache-2.0View on GitHub
How a skill earns its place here and how it is written so it fires - a three-question admission test, one protocol per skill, the description priced against the CI budget, and an activation test from a cold session. Use when the retrospective proposes a new skill or rewrites one.
7 other projects use a version of this.
Adopted by
Most recently taken up by
- tomjanus/water-skillstheir own version, first seen Nov 8, 2026
- patrykmurzyn/skillstheir own version, first seen Nov 8, 2026
- peterbamuhigire/proposal-skillstheir own version, first seen Oct 17, 2026
- rust-works/succinctlytheir own version, first seen Oct 9, 2026
- millionco/expecttheir own version, first seen Oct 8, 2026
- brianshepardpss/plugin-creator-plugintheir own version, first seen Oct 2, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- millionco/expect★ 3.6ksame name
- rust-works/succinctly★ 52same name
- WalletConnect/skills★ 14same name
- peterbamuhigire/proposal-skills★ 8same name
- brianshepardpss/plugin-creator-plugin★ 0same name
- patrykmurzyn/skills★ 0same name
- tomjanus/water-skills★ 0same name
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 repository15 other files it gives its agents.
- docs/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- browser-checkSkill
- code-reviewSkill
- deslopSkill
- doctorSkill
- fidelity-gateSkill
- helloSkill
- pr-feedbackSkill
- prompt-tuningSkill
- retroSkill
- root-causeSkill
- runSkill
- setupSkill
- statusSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 4 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Was it paid for?: If a competent engineer would find it in five minutes of searching, it is documentation.
- Very specific: line 24
Is it portable and does it belong to us?: No foreign runtime, no path from another tool, no agent this repo does not ship, and no model …
- Distinctive: line 35
Price the description first: Write it, count it, check the remaining budget, and only then write the body.
- Very specific: line 81
Lint it: Run deslop in skill-file mode: stale lines, bloat, dead sentences, duplication, a premature stop, a weak anchor.
- Distinctive: line 83
Activation test — the one people skip: Start a session that has never seen the skill, give it the situation in the user's own words, and …
- Distinctive: line 89
A rewrite is a CANDIDATE: When you change an existing skill, it has to be better on the cases that made you change it — name them, and …
“Common” is measured: kept by at least 6 in 10 of the 7 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 a skill for this plugin
The retrospective may commit a new skill without asking — it is AUTO class. That is only safe if there is a standard for what a skill is. This is the standard, and the first rule is the one that keeps the library small.
Every description is loaded into EVERY session, whether the skill fires or
not. That is the price, it is paid by every user on every turn, and it is the
one cost a skill cannot avoid by being well written. scripts/desc-budget.mjs
enforces the ceiling in CI. Read that number before you write anything.
The admission test — all three, or it is not a skill
- Is there a dangling reference? Does the conductor, an agent or another skill already demand this protocol without carrying it? A skill nothing points at is a library entry, and nobody reads a library.
- Was it paid for? If a competent engineer would find it in five minutes of searching, it is documentation. Skills encode what a failure taught: decisions, constraints, the trap that is not obvious until it costs a day.
- Is it portable and does it belong to us? No foreign runtime, no path
from another tool, no agent this repo does not ship, and no model name —
routing has exactly one source, and a test fails the build on a model name
anywhere in
skills/oragents/.
Failing any one of them is not a reason to write it shorter. It is a reason to
put the content where it belongs: a rule in the caller, a fact in
.tyran/knowledge/, or nowhere.
The rules that follow from the budget
- Price the description first. Write it, count it, check the remaining budget, and only then write the body. Discovering at the end that the library is over budget produces a description trimmed to fit rather than one written to trigger.
- The budget is an owner decision. An agent PROPOSES a raise; it does not
perform one. Raising a ceiling because the run went over is changing the
measurement to fit the answer — the same move
fidelity-gateforbids when a tolerance is loosened until a comparison goes green. - A repo's own learned skills stack on top of this budget in the reader's context. The plugin's core stays lean so the user's repo has room to teach it something.
One protocol, nameable in one word
A skill the reader can name — fidelity, evidence, deslop — triggers and executes in fewer tokens than one that has to be described. If you cannot say what the skill is about in one word, it is two skills, or none.
Split by what it decides, never by who runs it. Two skills that both decide whether a change is good will drift apart, and the drift is invisible until they disagree in front of a user.
What goes in the file
- Frontmatter is
description:only. Noname:— in this repo the directory IS the name. (Agents are the opposite:agents/*.mdneed both, and the name must match the filename. A test enforces each.) - The description says WHEN, not what. It is read by a model deciding whether to open the file, so it carries the trigger conditions, the shape of the answer, and the phrases a user would actually type. A description that only names the topic never fires.
- State the assumption the skill rests on.
retroneeds a closed initiative;fidelity-gateneeds a frozen reference;prompt-tuningneeds the measured quantity to be non-deterministic. A skill whose assumption you cannot write down has not been thought through, and the published skills page has a column for it that will otherwise be filled with a guess. - Never restate a mechanism a hook already enforces. The evidence contract is a gate; a skill repeating it in prose adds context and changes nothing. Point at the mechanism instead.
- Rules carry their reason. A rule with the failure attached survives editing; a bare imperative gets softened by the next person who finds it inconvenient. Do not invent the failure — if there is no story, state the mechanism that makes the rule true instead.
Before it ships
- Lint it. Run
deslopin skill-file mode: stale lines, bloat, dead sentences, duplication, a premature stop, a weak anchor. - Activation test — the one people skip. Start a session that has never seen the skill, give it the situation in the user's own words, and check the skill fires without being named. A skill that never triggers is pure context tax: it costs its description on every turn and returns nothing. If it does not fire, the description is wrong — fix that, not the body.
- Run the budget gate, and read the total rather than the exit code.
- A rewrite is a CANDIDATE. When you change an existing skill, it has to be better on the cases that made you change it — name them, and check the new text against each. Otherwise a skill only ever grows, one correction at a time, until nobody reads it.
Retiring one
A skill that has not fired, or whose protocol moved into a mechanism, is deleted — not left in place because deleting feels like losing work. The description budget is a shared resource, and the strongest argument for admitting the next skill is that the last dead one was removed.
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.

