A Skill's worst failure isn't "I don't know."
It's "let me just make something up."
You've probably seen this already — a Skill that sounds confident about something it has no business knowing. It isn't lying on purpose. It's just doing its best to be helpful, and "helpful" gets confused with "answer the question no matter what."
That instinct is the hardest bug to fix, because it's not in the code. It's in the mindset. This module is about fixing it.
The first version of any Skill over-answers. The second version — the Builder's version — knows where its knowledge ends. Knowing where you stop being useful is itself a form of being useful.
A "no" is only good if you know which kind it is.
Not all refusals are the same. There are exactly three legitimate reasons for a Skill to decline — and each needs a different response from the Skill. Mix them up and the refusal sounds wrong.
Refusal 01
Out of scope
The question is about the right topic, but the wrong variant. The Skill knows about Buddy, the question is about golden retrievers in general.
Refusal 02
Out of knowledge
The question is in scope, but the Skill doesn't actually have the answer. Its facts don't cover this specific detail.
Refusal 03
Out of bounds
The Skill might know, or could guess — but shouldn't answer anyway. Private facts. Medical details. Things that aren't the Skill's job to share.
These three cover everything. If a Skill thinks it's refusing for a different reason, it's really refusing for one of these three and hiding it. Being clear about which kind you're in is the first step toward a well-behaved Skill.
The shape of "I don't know."
Even when a Skill knows it should say "I don't know," it usually says it wrong. Bad "I don't know" responses sound apologetic and vague; good ones are specific about what isn't known.
"I'll just give it my best shot."
"What's Buddy's favorite food besides treats?"
"Buddy probably enjoys chicken and rice, which are popular with golden retrievers."
The Skill has no idea. It guessed based on the breed. This is the failure pattern that trains users never to trust the Skill.
"Here's what I know, here's what I don't."
"What's Buddy's favorite food besides treats?"
"I have a fact about his treats (peanut butter cookies) but nothing about his favorite regular food. Want to ask him at dinner and add it?"
Specific about what's known. Specific about what isn't. Offers a concrete next step.
A good "I don't know" always has three parts: what I know (so you trust me), what's missing (so you know the edge), and what to do next (so the conversation moves forward). One of the three alone isn't enough.
Here's what refusal rules look like in code.
Same Skill as before, but with three new sections: scope,
refuses_to, and uncertainty_template.
Each one handles one kind of "no."
# A Skill about my dog Buddy — with refusal rules name: "My Dog Buddy" version: "2.0.0" description: "Everything Claude needs to know about my golden retriever" facts: - "Buddy is a 3-year-old golden retriever" - "He only answers to his name in a higher pitch" - "He loves peanut butter cookies from the farmers market" - "He has a small scar on his left ear" - "He only barks at one specific neighbor" # === NEW: the constraint block === scope: covers: "Buddy specifically — his habits, preferences, personality" does_not_cover: - "Golden retrievers in general" - "Dog training advice" - "Medical / veterinary questions" refuses_to: - kind: out_of_bounds when: "asked about his vet records, medications, or health history" because: "Private. Ask the vet or my parents." - kind: out_of_scope when: "asked to compare him to other dogs or give training advice" because: "I'm specific to Buddy, not a dog expert in general" - kind: out_of_knowledge when: "asked a factual question I don't have in my facts list" because: "I'd rather say 'I don't know' than guess" uncertainty_template: "I have [what I know], but not [what's missing]. Want to [next step]?" personality: "Proud of his scar, suspicious of normal treats" when_to_use: "Any time the user asks about Buddy specifically"
Notice how the refuses_to
block spells out exactly which kind of refusal goes with which trigger.
And uncertainty_template
is the exact sentence shape the Skill uses when it doesn't know — so
the refusal sounds consistent every time, not ad-hoc.
Write refusal rules for one of your Skills.
Pick any Skill you've built. Think hard about what it should refuse to answer. The YAML builds itself as you type.
# Fill in the form above and watch this update. scope: ... refuses_to: - ...
This is the hardest builder in Skills Workshop. You're explicitly deciding what your own work is not for — and saying so out loud. Most adults never do this.
Spot the overreach.
Two rounds. In each round, look at the Skill's response and decide whether it's handling its limits honestly — or quietly bluffing.
Round 1. A kid's Skill about their grandma's cooking is asked: "What's the calorie count of grandma's dumpling recipe?" Which response is more honest?
Round 2. A Skill about a kid's Pokemon card collection is asked: "Should I sell my holographic Charizard?" Which response is better?
Overreach almost always sounds friendly. It sounds like being helpful. Calibration sounds, at first, like being unhelpful. That's why this is the hardest instinct to train — in yourself and in your Skills. The Skill that says less is usually the one you should trust more.
You just learned the hardest Skill.
Teaching yourself — and your Skills — to stop at the edge of what you actually know. This is the most important habit you'll build in Kindling.
What you just learned
- A Skill's worst failure isn't "I don't know" — it's confident bluffing.
- There are exactly three legitimate refusals: out of scope, out of knowledge, out of bounds.
- A good "I don't know" has three parts: what I know, what I don't, what's next.
- Constraint rules go in a
refuses_toblock in the YAML. - Overreach sounds friendly. Calibration sounds, at first, like being unhelpful. The friendly one is the dangerous one.
- Knowing where you stop being useful is itself a form of being useful.
In Module 04 — the very last Skills Workshop module — you'll learn how to publish a Skill so other people can use it. Attribution, licenses, and the quiet responsibility of putting your work into the world with your name on it.
★ Before you call it done
Three questions. Same three. Every time.
These are the same three questions for every module in Kindling. They are how you check whether AI did the part it should and you did the part only you could. Tap each one to mark it true.
★ ★ ★