Make the skill yours
advanced·9 min·Markdown for agents
What this lesson teaches
Fork the skill's taste in pov.md, log every lived failure in gotchas.md, write lines that actually change an agent's behaviour, and test that they work across models.
Two teams install the same skill. One makes a calm banking dashboard. The other makes a language-learning app where every button looks pressable and every win gets confetti.
Same skill, opposite answers. The difference is two small files the skill tells you to edit.
pov.md: your taste overrides
The skill's canon comes from people like Emil Kowalski, Benji Taylor and Jakub Krehel. is the layer where you override it. Where it disagrees with canon, it wins. Where it's silent, canon holds.
The install this course is built on is forked to Duolingo's design language: physical buttons with a 4px lip in a darker shade of their own fill, colours that each carry one meaning, rounded lowercase headlines, celebration on the reward beat. Those calls flip several defaults, like whisper-thin shadows and one-accent palettes.
✕ Changes nothing
✓ Changes output
Two kinds of entry are useful: hard overrides ("I never use X") and taste calls ("when in doubt, lean toward A because B"). A taste call should orient a decision, not amputate a possibility.
gotchas.md: the lived failures
is append-only. Every time the agent gets a UI detail wrong in practice, you add one dated line.
- [2026-10-30] Agent declared color-scheme: light dark on a light-only app; phones in dark mode rendered dark inputs on white cards. → Declare only the schemes that were designed. See contrast-and-color-scheme.Why it matters: the main nodes encode the happy path. Gotchas encode the failure, with the exact mistake. Perplexity's agent-skills team found negative examples are often the highest-signal content in a skill over time. The description should change rarely; this file should grow steadily.
| Put it in gotchas | Put it in pov |
|---|---|
| "The agent did this wrong; here's the right answer." | "I prefer this default over the canon's." |
| one line, linked to a node | as long as the call needs |
/design-engineering pov gotcha "the agent hid the closed drawer with opacity: 0 and keyboard users tabbed into it"
Lines that change behaviour
Agents are probabilistic: ask twice, get two answers. A skill can't force the same output. It can force the same process, so the reasoning is yours every run. The skill's :
- Encode process. Give a decision tree the agent walks every time.
- Write down the why. A rule with its reason gets extended to cases you never wrote.
- Be strict. "Reasonably short" changes nothing; "under 300ms" does.
- Every line earns its place. Explaining what a button is dilutes the lines that matter.
- One skill per aspect. Building animations and reviewing them are different jobs.
- Test by running. Unsure if a line matters? Run with it and without it.
Try it on a draft. Tap each line to rewrite it by those rules.
0 of 5 lines rewritten. Tap a line.
Strict is not long. A strict file is usually shorter than the hedged one it replaces, because every hedge was a sentence that did nothing.
Test across models
A skill that loads perfectly on one model may never load on another. Perplexity's team put it plainly: Sonnet and GPT behave quite differently with skills. Most authors test on the model they happen to use.
Loading
Ten queries that should load the skill; it loads on all ten.Not loading
Ten nearby queries that shouldn't; it loads on none.The right node
Five queries mapped to specific nodes; the agent opens those.The right output
"Review this CSS" comes back as the table.
Known patterns: GPT routes on broad nouns like "CSS" more eagerly; Sonnet can skip a description over about 80 words; Haiku may stop at the top file and never open the notes; Opus over-reads. A gap of 5% or more between models on the same set is a routing problem.
Use real queries from real users. Ones you wrote yourself only prove the description matches you.Measure whether a change helped
Taste is trained, but it can also be measured. Two public benchmarks show the shapes worth borrowing:
| Benchmark | What it measures | Borrow |
|---|---|---|
| DesignBench (WebPAI) | generation, editing and repair of real web UI, scored by compiling, visual similarity and a model judge | the three tasks: real work is mostly edit and repair |
| Design Arena | anonymous side-by-side votes, ranked with a Bradley-Terry fit | blind pairwise judging |
"Is this good?" has no honest answer. "Which of these two is better?" does. So when you change a node that alters output, generate before and after for a few fixtures, judge them blind, and record the win rate. more than it wins gets reverted, however good it reads.
One trap: similarity scores reward matching the reference, flaws included. A repair that fixes an overflow the reference also had can score lower. Read the pairwise result first.
Quick check
Your team always wants 1px borders, raising contrast instead of width when a border needs more weight. Canon doesn't say this. Where does it go?
In the skill
The nodes your agent reads when it does this work.
- Point of ViewInstaller's opinions and taste calls. This install is forked to Duolingo's design language — physical buttons, meaning-bearing color, rounded lowercase type, celebration on the reward beat — plus HKTITAN's launch-film calls (Skale's UI-motion register, sound derived from motion) and diagram calls (diagram-design's own skin, ask then figure, static unless order is the point).
meta/pov - GotchasLived failures. Append a one-liner every time the agent gets a UI detail wrong.
meta/gotchas - Writing skills that change behaviorA skill fights probabilistic output by forcing the same process, not the same output — encode decision trees, write the why, be strict, make every line earn its place, keep one skill per aspect, and test by running with and without a line.
meta/skill-writing-rules - Cross-model testingTest skill routing and execution against GPT, Claude Opus, Claude Sonnet. Sonnet and GPT behave quite differently.
meta/cross-model-testing - Design benchmarks and this skill's evalsHow design output gets measured — DesignBench's generation / edit / repair tasks with compile, CLIP, and MLLM-judge metrics; Design Arena's anonymous pairwise votes aggregated by Bradley-Terry — and this skill's own eval suite that borrows both shapes.
meta/design-benchmarks
Connected lessons
What this lesson builds on and leads to, across every course.