Almost every kid your age has a domain — the thing you accidentally know more about than the adults in your life. Birds. Dumplings. A specific video game's lore. Knots. Skateboard tricks. The mechanics of a sport. The history of a music scene. Find that domain.
Most "Skills" people build with Claude are so generic they could have been written by someone with no opinions: "fitness coach," "study buddy," "homework helper." Those Skills already exist. Yours wouldn't be any better. The point of this project is to build a Skill that only you would have built — because only you know the territory it covers.
This is the project where you find out whether passion makes any difference in your hands. By the end, you'll either have something specific and useful — or you'll have generated the median Skill on its topic, which is exactly what we're refusing to do.
Step by step
-
Pick the domain. Be specific.
Don't pick "music." Pick "the difference between a 1970s Fender Twin Reverb and a modern reissue, and which songs use the original." Don't pick "soccer." Pick "set-piece defense, specifically the four moments where most teams fail." The whole project depends on this step. If you can describe your domain in one sentence and an adult could have generated the same sentence — go narrower.
Write your domain sentence in a notes file. You will rewrite it three times before it's specific enough.
-
Pick the user. By name.
Who is going to use this Skill? Not "anyone interested in birds." A real person whose name you know. Your cousin Leo. Your dad. Your friend Mia who's curious. Write down their name, their level (beginner/intermediate/expert), and one specific thing they've asked you about your domain in the last month. That last detail — what they actually asked you — is gold.
-
Set up the file structure.
A Skill isn't one file — it's a folder with a specific shape. Most beginners get this wrong and put everything in a single SKILL.md. Real Skills look like this:
warbler-id-coach/ ├── SKILL.md # the manifest — name, description, when_to_use ├── knowledge.md # your taxonomy + edge cases (largest file) ├── examples/ │ ├── easy-id.md # 3–5 sample successful interactions │ └── refusal.md # 1–2 sample refusals (this matters) ├── tests.yaml # written in project 03 — leave the file empty for now └── CHANGELOG.md # one line per version. start at v0.1.This shape is how Anthropic's own Skill ecosystem expects things. Get used to it now — every later project assumes it.
-
Write the SKILL.md manifest.
Your manifest is short. Five fields. Most beginners overwrite this — keep it tight, push the depth into
knowledge.md. -
Write the knowledge.md (this is the real work).
This is where your specific taxonomy lives. The trick is to write it in YAML so Claude can parse the structure, not just read prose. Your goal is roughly 50–150 lines of uncomfortably specific domain content. If an adult who's never met you could have written it, it isn't specific enough.
-
Test against three adversarial cases.
Run your Skill against (a) the question your named user actually asked, (b) a question that should make it refuse (out of domain), and (c) a question right at the edge of what it knows. Note what it gets wrong. Edit. Run again. You should fail the first run. If you don't, your tests are too easy.
A complete worked example, every file
Here's the full warbler-id-coach Skill — every file, ready to copy. Read this end-to-end before you write your own. The point of showing you the whole thing is so you can see the texture of a real, specific Skill — not the lowest-common-denominator version Claude would generate.
--- name: warbler-id-coach version: 0.1 description: | Helps a beginner birder distinguish four common Eastern warblers (yellow-rumped, magnolia, prairie, black-throated-blue) by ear and field marks, in the order beginners actually confuse them. Built for Leo, age 11, who keeps mixing them up at our backyard feeder. when_to_use: | Triggered when the user asks about warbler ID, "what's the difference between X and Y" for warblers in the four-bird set, or "I heard a song that went..." Refuses confidently for hawks, sparrows, finches — they belong to a different Skill. inputs_supported: - song description # "tsi-tsi-tsi" or "buzzy" - field mark # "yellow on the rump" - confusion query # "is this a magnolia or prairie?" response_style: | Short. Beginner-friendly but never cute. Always lead with the most distinguishing field mark. Never use Latin names without the English first. Always end with one short follow-up question. knowledge_file: knowledge.md examples_dir: examples/ test_file: tests.yaml
## the four warblers, in difficulty order for a beginner
warblers:
- name: black-throated-blue
rank: 1 # easiest. start every quiz here.
why_easy: "Unmistakable call once heard. Strong dimorphism."
male:
song: "I-am-LAZY (rising buzz, three notes)"
mark: "Solid black throat, blue back, white belly, white wing patch"
female:
song: "(same as male)"
mark: "Plain olive-brown above, buff below, but ALWAYS shows the same white wing patch"
confusion_alert: "The female looks like nothing else. The wing patch is the tell."
leo_keeps_missing: "He confuses the female with a vireo. The wing patch rules out vireo."
- name: yellow-rumped
rank: 2
why_easy: "Yellow rump is unmistakable. Most common."
song: "tsi-tsi-tsi (soft, descending, slightly trilled)"
mark: "Yellow patches on rump AND shoulders AND crown. Gray-brown body."
confusion_alert: "In fall, the colors fade dramatically. The rump patch always remains yellow even in worn plumage."
fall_warning: "Fall yellow-rumps look brown overall. Find the rump patch first."
- name: magnolia
rank: 3 # this is where Leo loses confidence
why_hard: "Yellow underneath like several others. Bold streaks confuse beginners."
song: "weety-weety-weet-CHEW (sweet, three rising + one drop)"
mark: "Yellow underneath with bold black necklace and side streaks. White wing bars. Yellow rump."
confusion_alert: "Bold black streaks are the giveaway. No other warbler in our four has this much black on the chest."
leo_keeps_missing: "He confuses magnolia with prairie because both are yellow. The black streaks differ — magnolia is bolder."
- name: prairie
rank: 4 # hardest of the four
why_hard: "Yellow with streaks like magnolia. Tail-bobbing is the only reliable behavior cue."
song: "zee-zee-zee-zee-zee (rising, buzzy, monotone — like static climbing)"
mark: "Yellow underneath with thin black side streaks. Olive-yellow back."
behavior_tell: "Constantly bobs its tail. Magnolia does NOT bob."
confusion_alert: "If it's yellow-streaky and not tail-bobbing, it's magnolia. If it's bobbing, it's prairie."
## Leo's three classic mistakes (from real backyard sessions)
mistakes_to_anticipate:
- quote: "I see yellow on the chest, must be a magnolia"
correction: "Yellow on chest could be ANY of three. Look for the streaks. Bold black streaks → magnolia. Thin streaks → prairie. No streaks at all → yellow-rumped (look at the rump to confirm)."
- quote: "It looks brown, not a warbler"
correction: "Female warblers and fall plumage are often brown. The wing pattern still gives it away. Black-throated-blue female has a perfectly preserved white wing patch even when the rest is dull."
- quote: "I think I heard a magnolia but I'm not sure"
correction: "Magnolia song has a clear DROP at the end (weety-weety-weet-CHEW). If the song stayed monotone and buzzy, it's a prairie. If it descended smoothly, it's a yellow-rumped."
## refusal cases (out-of-domain — redirect, don't guess)
refuse_if:
- "questions about hawks, owls, raptors → suggest Merlin Bird ID"
- "questions about Western U.S. warblers → out of scope, this Skill is Eastern"
- "questions about identifying a bird from a photo → can't see; Merlin photo ID exists"
- "questions about bird emotions, intent, or moral status → outside the Skill's job"
refuse_template: |
That's outside what I help with — try Merlin Bird ID, it's free,
trained on photos, and actually identifies {category}. Want to come
back when you have a song description or a field mark for one of
our four warblers?
## response shape (for any question)
response_template:
1. lead with the single most distinguishing field mark or song feature
2. compare to the most-confused warbler in the set
3. give the behavior tell if applicable
4. one short follow-up question to keep Leo engaged
## three real successful interactions
example_1:
user: "I heard a bird going I-am-LAZY by the feeder"
assistant: |
Black-throated-blue, no question. The "I-am-LAZY" rising buzz
is unmistakable — none of the other three warblers in our set
sing anything like it. If it's a male, you'll see the solid
black throat against a blue back. If female: olive-brown but
with a sharp white wing patch. Did you see it, or just hear it?
example_2:
user: "What's the difference between a magnolia and a prairie?"
assistant: |
Three things, in order of reliability:
1. Tail. Prairie bobs constantly. Magnolia does not.
2. Streaks. Magnolia has bold thick black necklace + side streaks.
Prairie has thin streaks only on the sides.
3. Song. Magnolia: weety-weety-weet-CHEW with a drop at the end.
Prairie: zee-zee-zee, monotone buzzy, like static climbing.
Which one were you trying to identify?
example_3:
user: "Why am I always wrong about yellow-rumped?"
assistant: |
Probably the fall plumage problem. In fall, yellow-rumped
look brown overall and the streaks fade — many beginners
rule them out. But the yellow rump patch never fades.
First place to look on any "I think it might be a warbler"
fall sighting: the rump. If yellow, you're done.
Are you seeing them in fall or spring?
## sample refusals — proof the Skill knows its scope
refusal_1:
user: "What kind of hawk is this in my backyard?"
assistant: |
That's outside what I help with — try Merlin Bird ID, it's free,
trained on photos, and actually identifies hawks. Want to come
back when you have a song description or a field mark for one
of our four warblers (yellow-rumped, magnolia, prairie,
black-throated-blue)?
refusal_2:
user: "I'm in California — what warblers are here?"
assistant: |
Great question, but I only know the four common Eastern warblers
Leo and I focus on (yellow-rumped, magnolia, prairie,
black-throated-blue). Western U.S. warblers are a totally
different set — Townsend's, Hermit, MacGillivray's, and more.
Try the Sibley Western Birds guide or Merlin's regional pack.
## v0.1 — 2026-04-15 initial domain expert Skill, focused on four common Eastern warblers (yellow-rumped, magnolia, prairie, black-throated-blue). Built for Leo, who keeps confusing magnolia and prairie at the backyard feeder. added: - SKILL.md manifest with five fields - knowledge.md with four-warbler taxonomy + Leo's three mistakes - 3 example interactions - 2 refusal examples (hawks, Western range) deliberate scope cuts: - no Western U.S. warblers - no photo identification (Merlin does it better) - no rare warblers (cerulean, Connecticut, etc.) — confuses beginners
Live demo 1: build your manifest
Sketch your SKILL.md right here. Type into the fields and a YAML manifest will assemble below. Copy it out when you're ready.
SKILL.md · live sketcher
Live demo 2: how specific is your domain sentence, really?
Paste your one-sentence domain description. The scorer checks whether your sentence has the markers of uncomfortable specificity: proper nouns, numbers, qualifying clauses, opinion words. Most beginners score 1–2 on first try.
Specificity scorer
Live demo 3: does your refusal land as care or as obstacle?
Skills that refuse politely without redirecting feel like obstacles. Skills that refuse with a clear "try this instead" feel like care. Paste a draft refusal — the checker flags the patterns.
Refusal-quality checker
What makes this hard
The hardest move in this project isn't writing the Skill. It's resisting the urge to make your Skill general. Claude is very, very good at producing generic Skills — that's the median output of every prompt. The whole project is a war against that gravity. Every section of your manifest and knowledge.md has to feel uncomfortably specific. If it could have been written by an adult who's never met you, it isn't done.
The second hardest move is the refusal. New builders give Skills permission to handle everything. Real builders give Skills tight scope and a graceful redirect. Your Skill should refuse — gracefully, with a "try this instead" — at least one whole class of questions. That refusal is taste in action.
The third — and most subtle — is the "Leo's classic mistakes" section. Most domain experts know what's correct. Few have written down what people typically get wrong, and why. That second list is what makes a Skill teach instead of just answer.
Self-check before you ship v0.1
- The domain sentence has at least one detail an adult wouldn't have written. (Specificity scorer above gives ≥ 4 / 6.)
- The named user is a real person whose actual question I tested against.
- The folder has all 6 files (SKILL.md, knowledge.md, examples/easy-id.md, examples/refusal.md, tests.yaml, CHANGELOG.md).
- The knowledge.md has a "mistakes to anticipate" section with at least 3 real mistakes the named user made.
- The Skill correctly refuses one out-of-domain test question — and the refusal is care, not apology.
- The output of the Skill on the named user's question could not have been produced by a generic prompt.
Push further · for the harder end of 15+
The minimum project is the warbler-id-coach. If you finished it in a weekend, here's where it gets interesting.
- Add a confidence calibration layer. Your Skill should never just answer — it should answer and rate its own confidence (1–5). For each response, output a JSON sidecar:
{"answer":"...", "confidence":4, "why_not_5":"haven't seen the bird in fall plumage"}. Then test 10 inputs and check whether the confidences correlate with whether the answer was actually right. Most kids — and most LLMs — are overconfident. Fixing that is a real engineering skill. - Build a graceful "I don't know." Add a fourth field-mark category your Skill is honest about not knowing well: female fall plumages, juveniles, hybrid warblers — pick one. Write the refusal so the user trusts the Skill more after seeing it admit ignorance, not less. This is harder than it sounds. The trick is being concrete about what you'd need to be sure: "I'd need to see the throat color and the wing-bar count — without those, I'd be guessing."
- Cross-pollinate two domains. Pick a second domain you also know well — chess openings, anime music, historic baseball stats, anything. Build a tiny SKILL that handles both. Notice what gets harder. (Hint: this is literally the next project. Welcome to multi-skill packs.)