Skip to content
ExamsLibraryFor agentsConnect your agent

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.

  1. 1pov.md: your taste overrides
  2. 2gotchas.md: the lived failures
  3. 3Lines that change behaviour
  4. 4Test across models
  5. 5Measure whether a change helped

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

I like clean UI.

✓ Changes output

1px borders everywhere. If a border needs more weight, raise its contrast, never its width.

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 gotchasPut 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 nodeas long as the call needs
Log a gotcha· for your agent
/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 :

  1. Encode process. Give a decision tree the agent walks every time.
  2. Write down the why. A rule with its reason gets extended to cases you never wrote.
  3. Be strict. "Reasonably short" changes nothing; "under 300ms" does.
  4. Every line earns its place. Explaining what a button is dilutes the lines that matter.
  5. One skill per aspect. Building animations and reviewing them are different jobs.
  6. 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.

pov.md (draft)

0 of 5 lines rewritten. Tap a line.

Hedges become numbers, rules gain a why, and what the agent already knows gets deleted.

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.

  1. Loading

    Ten queries that should load the skill; it loads on all ten.
  2. Not loading

    Ten nearby queries that shouldn't; it loads on none.
  3. The right node

    Five queries mapped to specific nodes; the agent opens those.
  4. 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:

BenchmarkWhat it measuresBorrow
DesignBench (WebPAI)generation, editing and repair of real web UI, scored by compiling, visual similarity and a model judgethe three tasks: real work is mostly edit and repair
Design Arenaanonymous side-by-side votes, ranked with a Bradley-Terry fitblind 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?

What this lesson builds on and leads to, across every course.

  • Routing the job
  • What is a skill?
  • Install design-engineering
  • Your first review
  • Verbs that make things
  • Verbs that judge