description fields important in both APP.md and local SKILL.md files.
An under-specified description means the right package or skill is missed. An over-broad one causes false activations and wasted context.
How discovery works
A compatible runtime loads lightweight metadata before deciding whether to activate the full package contract or one of its local skills. That metadata typically includes:- package name
- slug
- description
- version
- key command signals
Write descriptions around intent
Good descriptions explain when the package matters, not just what file it is. Prefer:- the work context (persistent to-do list)
- the command style (JSON-first CLI)
- a relevant safety constraint (explicit confirmation for destructive actions)
- describe the work context
- mention the kind of tasks the package supports
- include adjacent signals such as safety constraints, state model, or command style
- keep it concise enough to stay readable in a catalog
Design trigger evals
Test your descriptions with realistic prompts and planning situations. For each test case, label itshould_trigger or should_not_trigger.
Examples:
| Prompt | Expected |
|---|---|
Inspect a local app package and explain which CLI commands mutate state | should_trigger for the application package |
Summarize this static Markdown file | should_not_trigger for a whole application package |
Safely remove an item from the to-do app after user confirmation | should_trigger for both the package and its local usage skill |
Measure false positives and misses
For each test case, check whether the runtime:- surfaced the right package or skill
- avoided loading unrelated packages
- respected the difference between the base application contract and local operating guidance
Iterate without overfitting
Use a train and validation split when improving descriptions:- Revise descriptions based on train-set failures.
- Keep the validation set untouched.
- Choose the version that generalizes best across both sets.
Common failure modes
These patterns cause the most discovery problems in practice:- descriptions that name the application but not the tasks it supports
- descriptions that omit the JSON-first or confirmation-sensitive parts of the contract
- descriptions that blur the boundary between
APP.mdand local skills - descriptions that are too generic to distinguish one package from another
When both packages and local skills are discoverable, precision matters more than keyword density. A focused description outperforms a longer one that covers everything loosely.