Skip to content
ExamsLibraryFor agentsConnect your agent

Options, tools and generators

intermediate·8 min·Markdown for agents

What this lesson teaches

When nobody has decided yet, get three real directions behind a picker; when prompting keeps missing, build the tool that makes the thing; when all you have is a vibe, build a generator.

  1. 1Three directions behind a picker
  2. 2Numbers go on sliders
  3. 3The output is a decision
  4. 4When prompting keeps missing: build a tool
  5. 5When all you have is a vibe: a generator

You ask for a project card. You get one. You aren't sure it's right, so you ask for "a few more options". You get three cards that are the same card in three shades of grey.

That is not exploring. It is waiting.

localhost:3000/proto/project-card?v=1
Q3 onboarding redesign for enterprise workspaces1,284 members
Quiet: density: low. Wins for a page with one job; costs fewer cards per screen.

Keys 1–3 or arrows switch while the demo has focus.

Three directions, one named axis each, the worst real content, a picker that is chrome. Try keys 1–3.

Three directions behind a picker

When the decision hasn't been made, the fastest way to make it is to see the answers side by side, working. The skill calls this the , from Emil Kowalski's practice.

If you have decided, skip it. A picker holding three answers to a settled question wastes the run.

  1. Never touch production code

    The variants live on a throwaway page (/proto/project-card) that nothing imports.
  2. Real materials, worst content

    Your real fonts, tokens and components, filled with the content that breaks things: the longest real name, 1,284 members, the empty state. Pretty placeholders make every variant look fine.
  3. A named axis each

    Density, personality, layout, motion, interaction model. Name them "Quiet", "Editorial", "Dense", never "Option A". If you can't name the axis, it's one idea in three tints.
  4. Every variant fully works

    Real hover, real motion, real states. No "imagine this part".
  5. The picker is chrome

    A small dark pill at the bottom, never styled like your product. Number keys switch, ?v=2 in the address keeps the choice.

Numbers go on sliders

Any number you would hardcode in a prototype is a decision not made yet. Duration, easing, blur, radius: put each on a slider, with a range wide enough to be wrong on both sides, and its value printed beside it.

Then the conversation changes. Instead of "a bit faster?", a teammate opens your link with ?v=2&dur=180 already in it and drags the slider themselves.

The output is a decision

The only thing that survives a prototype run is the decision, written down. Including what you rejected and why, which is the part everyone skips and the part that saves the next meeting.

Project card — decided from /proto/project-card
- Dense: density high; 13.5px name, 12px meta
- Rejected: Editorial (long names wrap to three lines); Quiet (fewer per screen)

Then the winner gets built properly and the prototype page is deleted. A picker that outlives the run is exactly the dead code rule one was there to prevent.

Explore before deciding· for your agent
I haven't decided how the empty inbox should look.
Build three directions on a throwaway route, each on a named axis.
Use our real components and the worst real content (long subject lines, 0 and 1 messages).
Put any timing or size on a slider. Add the dark picker pill, keys 1–3.
Then stop and let me pick. Don't choose a favourite.

When prompting keeps missing: build a tool

Some things you can describe but can't get by asking: a chart's density, a shadow that has to match a reference, a texture that feels right. Each prompt lands "close". You rewrite. It lands close again.

That loop is a slot machine. The fix is to stop pulling the lever and that makes the thing, with every judgment on a knob you turn by eye.

First, diagnose why prompting misses:

The gapThe tool
A judgment only your eye can make (density, balance)a dial-in tool: every taste value on a control
It must match something that existsa matching tool: the target shown beside the output, at real size
Right pixels, wrong formata converter
It can only be judged in a state that's slow to reacha stage: a route that jumps straight to that state

Then pitch it in four lines before any code: the gap, the tool, the controls, the export. That is the cheapest moment to be corrected.

The same move works for checking. If you keep checking one thing by hand (nested radii, the tab order), build a small inspector you can drop onto any page. A one-off check stays a checklist row.

After one round of "closer, but not quite", the diagnosis is done. Propose the tool.

When all you have is a vibe: a generator

"Warm. Kind of old-timey. Hand-done." There is no target here, only a mood. Prompting for finished pictures will circle the nearest cliché forever.

The way out has two halves. Research turns the vibe into rules: what process made this look (a printing method, a tool, an era), what that process did to colour and texture, and what its recurring patterns are called. Compress that into 5 to 10 rules you can strike or keep before any code exists.

Then build a : the picture is a pure function of its settings, a click gives a new variation, every taste decision is a knob, and save writes the settings so the keeper can be made again forever.

From a vibe to a generator· for your agent
I want card backgrounds that feel like old risograph prints. I can't describe it better than that.
First research the process: what made that look, what it does to colour and texture, what the patterns are called.
Give me 5–10 rules as constraints and let me edit them.
Then build a seeded generator on a /lab route: click for a new seed, a knob for every taste value, save writes the JSON.
You haveReach for
A few nameable directions, undecidedthe picker
A clear target the prompt keeps missinga tool
Only a moodresearch, then a generator

Quick check

You've rejected two rounds of prompted variants of the same illustration idea. What does the skill say to do next?

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

  • Routing the job
  • What is a skill?
  • What is design engineering?
  • What is an agent?
  • Set up your agent
  • Code tells and leftovers