PTENES
MODULE 1.3

🎯 Descriptions that trigger

A description is the most important line in any skill—it’s what makes Claude trigger at the right time, or never trigger. Here you’ll learn to write descriptions with concrete triggers, embedded examples, and — what almost everyone forgets — instructions for when NOT to use the skill.

6
Topics
40
Minutes
Basic
Level
Practice
Type

Detailed content

yes no request from user the description does it match the intent? ⚡triggers the skillloads the body ↷continues without the skillbody never read
1

🧩 The “Do + When” formula

Every strong description has two inseparable halves: what the skill does e when it should be used. Descriptions that only describe a capability (“generates reports”) leave Claude without the most important signal—the trigger. It’s like having a brilliant résumé but never saying which job you’re applying for.

✓ Has "Do + When"

  • ✓"Troubleshoots frontend layout issues by testing live in the browser. Use when the user wants to fix cut-off elements or adjust layouts visually."
  • ✓Claude knows what it receives AND which request it applies to.

✗ Just the “Do it”

  • ✗"A frontend troubleshooting skill."
  • ✗Describes the capability, but doesn't say when to apply it — triggering is left to chance.

💡 Practical tip

Write the description and mentally underline the two parts. If you can't point to where the "when" is, it's not ready yet. The phrase "use when" is almost required.

Does
The ability
When
The trigger
"Use when"
The bridge
Decision
Allows you to choose
2

🔫 Concrete Triggers

One concrete trigger is an actual phrase or word the user would say when they need the skill. The closer it is to the user’s language, the better the matching. Well-crafted skills list several triggers— including slash commands and synonyms—to cover the different ways of asking for the same thing.

real triggers in skill descriptions examples
# Gerador de itinerários
"plan a trip", "create an itinerary", "travel planner", /travel

# Correção de frontend ao vivo
"fix CSS/HTML changes", "fix cut-off elements", "adjust layouts visually"

# Padrão: linguagem do usuário + sinônimos + comando de barra

📊 Three trigger sources

  • Action verbs: "create", "fix", "review", "generate"—what the user wants to do.
  • Concrete objects: "itinerary", "invoice", "workflow", "report"—what they want to get.
  • Slash commands: /travel, /review — the explicit shortcut.

💡 Practical tip

Before writing the triggers, imagine five different people asking for the same thing, each in their own words. The common ground among those five sentences gives you your best triggers.

Verbs
create, fix, review
Objects
itinerary, report
Commands
/travel
Synonyms
cover variations
3

💡 Examples in the description

For skills with broad or ambiguous scope, embed short usage examples in the description itself gives Claude semantic anchors that abstract prose doesn't. "Show, don't just tell" applies both to the user and to the model: a concrete case carries more signal than a generic definition.

🎯 Abstract vs. grounded

ABSTRACT

"Helps with data analysis tasks."

GROUNDED IN EXAMPLES

"Analyzes a CSV and returns top trends. Use when the user says 'what's in this data?', 'find outliers', or 'summarize this spreadsheet'."

📐 When it’s worth it

  • Broad scope: the skill does many things — examples set boundaries.
  • Generic term: words like "helper" or "analysis" need an anchor.
  • Confusion with neighboring skills: examples distinguish it from similar skills.
Anchor
Specific case
Show
Don’t just count
Delimits
Reduces ambiguity
Differentiate
From neighboring skills
4

🚫 Anti-patterns that kill the launch

The fastest way to fix a skill that doesn’t activate is to recognize the anti-pattern in your description. Almost every broken description falls into one of these four gaps — and each has a straightforward fix.

1

Too many openings

"Helps with various tasks."

Fix: name the specific task and triggers. “Various” never matches anything and everything at the same time.

2

Just "what it does," without "when"

"Generates HTML pages."

Fix: add the “when” half. Without a trigger, Claude has no way to know that the current request applies.

3

Jargon without context

"Runs the v2 pipeline orchestrator."

Fix: translate into the user's language. Nobody asks "run orchestrator v2" — they ask for the result it delivers.

4

Overlaid with another skill

Two skills with nearly identical descriptions.

Fix: differentiate by scope and add "don't use for X" (next topic). Overlapping descriptions cause random triggers.

Open position
House with nothing
No “when”
Missing the trigger
Jargon
Out of scope
Colliding
Same as the neighboring one
5

🛑 When NOT to launch

This is the part almost everyone forgets — and it's what separates a good description from an excellent one. Define the negative scope ("don't use for X") prevents false positives: the skill firing on similar but incorrect requests. A false positive is just as frustrating as a false negative because it delivers the wrong result with confidence.

🛑 The power of the explicit limit

Compare a “live frontend fix” skill. It handles layout and CSS—but NOT architecture. Making that explicit prevents it from triggering on requests like “add a database.”

WITH NEGATIVE SCOPE

"...Use for visual/layout bugs. Not for backend changes, new architecture, or database work — use a standard plan for those."

✓ Trigger when

  • ✓The request clearly matches the core capability
  • ✓A concrete trigger appears in the request
  • ✓It's exactly the problem the skill solves

✗ Do NOT trigger when

  • ✗The request only seems related, but it’s something else
  • ✗Falls into a case the skill lists as out of scope
  • ✗Another skill is clearly a better fit

💡 Practical tip

For each skill, write a sentence starting with "Don't use this skill to...". If you can't complete it, the skill's scope is probably too vague—and it will trigger when it shouldn't.

Scope -
"Don't use for X"
False +
Triggers incorrectly
Limit
Where it stops
Disambiguates
From neighboring skills
6

🧪 Testing the trigger

A description is a hypothesis about when the skill should activate. Only testing confirms it. The loop is simple: run real, varied prompts, see whether the skill activates when it should and stays quiet when it shouldn't, and adjust the description. It's iteration, not a one-shot guess.

1

Build test cases

List requests that should trigger (positive examples) and similar requests that should not (negatives). Good negatives are adjacent requests, not absurd ones.

2

Run it in natural language

Request each case without naming the skill. You are testing the description, not explicit invocation.

3

Count the errors and adjust

False negative (didn’t trigger but should have)? Add triggers. False positive (triggered but shouldn’t have)? Tighten the negative scope. Repeat.

⚠️ Attention

Don’t optimize the description for positives alone. A description that triggers on everything has 100% accuracy on positives and is useless — because it also triggers on every negative. The goal is to balance the two.

💡 Practical tip

Save your test cases in a file. Every time you change the description, run the suite again. It’s the cheapest way to prevent regressions — tweaking for one case often breaks another.

Positives
Must trigger
Negatives
Must not
Loop
Run and adjust
Balance
The two sides

🧰 Copyable prompts

Use these prompts to write and test sharp descriptions with Claude.

Prompt — generate a "Does + When" description
Minha skill faz: <descreva>. Escreva uma description no padrão
"Faz + Quando", com: (1) o que produz, (2) 3 a 5 gatilhos concretos
na linguagem do usuário, e (3) uma frase de escopo negativo
("não use para...").
Prompt — hunt for anti-patterns
Avalie esta description: "<cole>". Ela cai em algum anti-padrão
(vaga, sem "quando", jargão, sobreposta)? Aponte qual e reescreva
corrigindo o problema.
Prompt — build the test suite
Para esta description: "<cole>", gere 5 pedidos de usuário que
DEVEM disparar a skill e 5 que NÃO devem (mas são parecidos).
Depois diga, para cada um, se a description atual acertaria.

📤 Sample Output

A complete description, with the four elements from this module: does + when, concrete triggers, examples, and negative scope.

meeting-notes/SKILL.md — frontmatter runnable
---
name: meeting-notes
description: Turns a raw meeting transcript into clean notes with
  decisions and action items. Use when the user says "summarize
  this meeting", "what did we decide?", "pull the action items",
  or pastes a transcript and asks for notes. Not for live
  transcription or scheduling — only for processing text that
  already exists.
---

✏️ Practical exercises

1. Diagnose and fix

Choose five vague descriptions (make them up or collect them) and classify each by the anti-pattern it uses. Then rewrite them all in the "Does + When" format.

2. Write the negative scope

For three of your skills, write the phrase "Don't use this skill for...". If you get stuck on any of them, make a note—that's a sign the scope isn't well defined.

3. Create a runnable SKILL.md and test the trigger ⭐

Write a SKILL.md complete whose description have all four elements: what it does + when, at least 3 concrete triggers, an embedded example, and a negative-scope sentence. Then create 5 positive prompts and 5 negative prompts and ask Claude to judge—which ones would trigger, based only on the description. Adjust the description until it gets them all right.

🎯 Module summary

✓
Does + When — every description needs both halves; “use when” is almost mandatory.
✓
Concrete triggers and examples — the user's language, synonyms, and commands anchor the matching.
✓
Anti-patterns have a fix — vague, with no “when,” jargon-filled, and conflicting: recognizing it is half the fix.
✓
When NOT to trigger + test — negative scope prevents false positives; validate the trigger by iterating, not guessing.

Next module:

You already understand the anatomy, structure, and trigger. In Module 1.4, you'll bring it all together with Anthropic's current rules, a copyable checklist, and a validator to audit your skills.