Distill the Scar
Type: Open-source — client-agnostic methodology, no project-specific detail.
Created by akbarsha — https://github.com/iamakbarsha1
Distilled from a case where the skill-making method itself lived only in one
person's head — every existing skill was forged the same way, but the way was
never written down, so it couldn't be handed to an agent or a contributor.
Licence: Released under CC BY 4.0 — share and adapt for any purpose with
credit. Full text: LICENSE at the repository root.
Feedback & Support: If a rule here proves wrong or needs sharpening,
open an issue on the repository or contact the author at the profile link
above. If the problem is the agent not following a rule below rather than
the rule itself, that's an execution failure — acknowledge and correct it.
The core rule
A skill is a scar with the pain removed and the lesson kept. It comes from
one concrete failure, not from general advice. If you cannot name the
single case that produced it — what broke, what the plausible-but-wrong move
was, and how you know the real cause — you are writing advice, not a skill,
and it will not survive contact with a real agent under load.
Distill in five moves. Do them in order; skipping the first two is how you
get shapeless "best practice" that reads well and changes nothing:
- Capture the raw scar. Write down the actual failure before you
generalize: the real command, the real output/error, the wrong hypothesis
that felt right, and the evidence that finally located the true cause.
Sanitize names and secrets, keep the mechanics exact. Vague memory here
produces vague skills.
- Extract the one transferable invariant. Ask: what rule, applied at the
moment of the failure, would have prevented it — stated so it holds in
codebases that share nothing with this one? One failure yields one
invariant. If you find two, that is two skills.
- Write it in the anatomy. Mirror an existing skill exactly — do not
invent a new shape:
- Frontmatter
name (kebab-case, matches the directory) and a folded
description that opens with "Use when …" and ends with a concrete
"Triggers on …" list of the phrases and situations that should fire
it. The description is the whole retrieval surface; a skill that never
triggers is dead weight.
**Type:**, author, "Distilled from a case where …", licence, and
feedback lines.
## The core rule — the invariant, in one paragraph.
## Checks — for a multi-rule skill, each rule as a bullet ending in a
one-line sanitized *(real case)* grounding it in an actual scar.
Ground each case against the record (the incident log, git history); if a
check has no separate lived incident behind it, mark its example
*(Illustrative: …)* rather than fabricating a scar — the validator
checks the marker exists, not that it is real. A
single-rule skill may instead fold that one rule and its case into ## The core rule (as a "Real case (sanitized):" paragraph) and omit
## Checks.
## Pre-flight check — a checklist the agent runs before it claims the
work is done, with one checkbox per check, phrased so an unchecked box
means "not finished."
- Name it for the invariant, not the story. A plain imperative that
states the rule —
verify-absence-claims, measure-the-delta-not-the- absolute — beats a clever title. The name is a handle the agent greps for
under pressure; match the local convention of the skills already present.
- Gate it. Run
python3 scripts/validate_skills.py. It enforces the
frontmatter, the **Type:** line, ## The core rule, the pre-flight
section, the directory-name match, and — when a ## Checks section is
present — that every check carries a grounding case (*(real case)* or
*(Illustrative: …)*) and the pre-flight has a
checkbox for each. A skill that fails the validator does not merge — the
shape is not decoration, it is what makes the skill usable under load.
Real case (sanitized): A skills repository grew to nineteen entries, each
genuinely distilled from a real failure. But the distilling itself was tacit —
captured live by an observer step, then hand-shaped by whoever was at the
keyboard. The plausible-but-wrong move was to trust that the observer log already
was the method; that it wasn't became provable the moment a new contributor,
handed only that log, could not produce a twentieth skill that matched the first
nineteen. The method was never a written artifact, so the founder was the single
point of failure for the repo's whole premise.
Writing the method down as this skill — capture, extract, shape, name, gate —
turned "how we make skills" from tribal knowledge into a step anyone can run,
and made the repository self-hosting: the skill that forges the skills now
lives beside the ones it forged.
Pre-flight check — before you call a skill distilled
If any box is unchecked, you have a lesson, not a skill — go finish the
distillation.
1---2name: distill-the-scar3description: Use when you just hit a real failure worth keeping — a bug, a wrong fix, a wasted hour — and want to turn it into a reusable skill instead of a private lesson. Turns one concrete failure into a Whetstone-shaped SKILL.md: extract the transferable invariant, write it so an agent can apply it without the original context, and gate it with the validator. Triggers on "make this a skill", "turn this into a rule", "capture this lesson", "distill this failure", "add a skill for this", "postmortem into a skill", and any moment you catch yourself saying "I'll remember this next time."4---56# Distill the Scar78**Type:** Open-source — client-agnostic methodology, no project-specific detail.910**Created by akbarsha — https://github.com/iamakbarsha1**1112Distilled from a case where the skill-making method itself lived only in one13person's head — every existing skill was forged the same way, but the way was14never written down, so it couldn't be handed to an agent or a contributor.1516**Licence:** Released under CC BY 4.0 — share and adapt for any purpose with17credit. Full text: `LICENSE` at the repository root.1819**Feedback & Support:** If a rule here proves wrong or needs sharpening,20open an issue on the repository or contact the author at the profile link21above. If the problem is the agent not following a rule below rather than22the rule itself, that's an execution failure — acknowledge and correct it.2324## The core rule2526A skill is a scar with the pain removed and the lesson kept. It comes from27**one concrete failure**, not from general advice. If you cannot name the28single case that produced it — what broke, what the plausible-but-wrong move29was, and how you know the real cause — you are writing advice, not a skill,30and it will not survive contact with a real agent under load.3132Distill in five moves. Do them in order; skipping the first two is how you33get shapeless "best practice" that reads well and changes nothing:34351. **Capture the raw scar.** Write down the actual failure before you36 generalize: the real command, the real output/error, the wrong hypothesis37 that felt right, and the evidence that finally located the true cause.38 Sanitize names and secrets, keep the mechanics exact. Vague memory here39 produces vague skills.402. **Extract the one transferable invariant.** Ask: what rule, applied at the41 moment of the failure, would have prevented it — stated so it holds in42 codebases that share nothing with this one? One failure yields one43 invariant. If you find two, that is two skills.443. **Write it in the anatomy.** Mirror an existing skill exactly — do not45 invent a new shape:46 - Frontmatter `name` (kebab-case, matches the directory) and a folded47 `description` that opens with **"Use when …"** and ends with a concrete48 **"Triggers on …"** list of the phrases and situations that should fire49 it. The description is the whole retrieval surface; a skill that never50 triggers is dead weight.51 - `**Type:**`, author, "Distilled from a case where …", licence, and52 feedback lines.53 - `## The core rule` — the invariant, in one paragraph.54 - `## Checks` — for a multi-rule skill, each rule as a bullet ending in a55 one-line sanitized **`*(real case)*`** grounding it in an actual scar.56 Ground each case against the record (the incident log, git history); if a57 check has no separate lived incident behind it, mark its example58 **`*(Illustrative: …)*`** rather than fabricating a scar — the validator59 checks the marker exists, not that it is real. A60 single-rule skill may instead fold that one rule and its case into `## The61 core rule` (as a **"Real case (sanitized):"** paragraph) and omit62 `## Checks`.63 - `## Pre-flight check` — a checklist the agent runs *before* it claims the64 work is done, with one checkbox per check, phrased so an unchecked box65 means "not finished."664. **Name it for the invariant, not the story.** A plain imperative that67 states the rule — `verify-absence-claims`, `measure-the-delta-not-the-68 absolute` — beats a clever title. The name is a handle the agent greps for69 under pressure; match the local convention of the skills already present.705. **Gate it.** Run `python3 scripts/validate_skills.py`. It enforces the71 frontmatter, the `**Type:**` line, `## The core rule`, the pre-flight72 section, the directory-name match, and — when a `## Checks` section is73 present — that every check carries a grounding case (`*(real case)*` or74 `*(Illustrative: …)*`) and the pre-flight has a75 checkbox for each. A skill that fails the validator does not merge — the76 shape is not decoration, it is what makes the skill usable under load.7778**Real case (sanitized):** A skills repository grew to nineteen entries, each79genuinely distilled from a real failure. But the distilling itself was tacit —80captured live by an observer step, then hand-shaped by whoever was at the81keyboard. The plausible-but-wrong move was to trust that the observer log already82*was* the method; that it wasn't became provable the moment a new contributor,83handed only that log, could not produce a twentieth skill that matched the first84nineteen. The method was never a written artifact, so the founder was the single85point of failure for the repo's whole premise.86Writing the method down as this skill — capture, extract, shape, name, gate —87turned "how we make skills" from tribal knowledge into a step anyone can run,88and made the repository self-hosting: the skill that forges the skills now89lives beside the ones it forged.9091## Pre-flight check — before you call a skill distilled9293- [ ] You can name the **single concrete failure** it came from — what broke,94 the plausible wrong move, and how the real cause was proven.95- [ ] The skill states **one transferable invariant**, not a bundle of advice;96 a second invariant became a second skill.97- [ ] The `description` opens with "Use when …" and carries a concrete98 "Triggers on …" list — it will actually fire when the situation recurs.99- [ ] Every check carries a sanitized real case grounded against the record —100 or, when none exists, an example marked `*(Illustrative: …)*` instead of a101 fabricated scar (or, for a single-rule skill, the core rule does), and102 there is a **pre-flight checklist**; names and secrets are sanitized,103 mechanics kept exact.104- [ ] `python3 scripts/validate_skills.py` prints `OK` — the skill passes the105 same gate as every other skill in the repository.106107If any box is unchecked, you have a lesson, not a skill — go finish the108distillation.