Analyze what the user is actually trying to build and suggest the tool that gets them there — a means to an end, not the end itself. When prompting for an artifact directly keeps landing on "closer, but not quite", stop iterating on the output and build the small tool that produces it: diagnose why the direct path fails, propose the tool that closes that exact gap, put the taste decisions on live controls, and export exactly what the project needs. Use when the user says "build me a tool for this", describes a result the agent keeps missing, or has burned a round or two of re-prompting on the same artifact.
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
The user wants an artifact. You are not going to build the artifact — you're going to build the tool that builds it. Prompting for an intricate result directly is a slot machine: every attempt costs a full round trip, lands "close", and gives the user no way to steer except rewriting the prompt. A tool converts that loop into knobs — the process gets built once, and the taste decisions become adjustments the user makes by eye in seconds.
This skill has two halves, in strict order: diagnose, then build. The most common failure is skipping the diagnosis and building a generic playground. A tool earns its existence by targeting the exact reason the direct path fails, so finding that reason is the actual work.
Answer these four questions from the conversation before proposing anything. Ask the user only for what you can't infer:
Why does prompting keep missing?
├── The result depends on judgment calls only the user's eye can make
│ (density, balance, color, "when it feels right")
│ → dial-in tool — rebuild the process, bind every taste value to a live control
├── The result must match something that already exists
│ (a design, another app's output, a reference image)
│ → matching tool — reproduce the process that made the reference,
│ render output next to it at the same size
├── The result exists but in the wrong form
│ (right pixels, wrong format; right data, wrong structure)
│ → converter — ingest the source, export exactly what the project needs
├── The result can only be judged in a state that's slow to reach
│ (a specific screen, dataset, viewport, moment in an interaction)
│ → stage — a route that puts the work in that state instantly, every time
└── There is no target yet — the user is searching and will know it when they see it
→ exploration, not matching: hand off to the emil-get-creative skill
Most real tools combine two branches — a matching tool usually needs dial-in controls, a stage often wants a converter's export. Name the combination you're proposing.
The stop-the-loop rule. If a round of "closer, but not quite" has already happened, the diagnosis is done for you — that loop is the evidence. Say so explicitly and propose the tool, instead of quietly retrying the same prompt in different words. Every further attempt is another paid spin at a target the user can already see.
Before writing code, pitch it in this exact shape, in a few lines:
The tool encodes your understanding of the problem, and this is the cheapest moment for the user to correct that understanding — a wrong tool built fast is still wrong. If the user is present, give them a beat to redirect; if they've already told you to go, state the pitch and build immediately.
One sitting, no ceremony — it's scaffolding, not a product:
/lab/<slug> or the project's equivalent. Nothing in production imports from it; what gets promoted later is the saved output plus the cleaned-up render logic.Then hand it off in two lines — the URL and the verbs — and stop. The dialing-in belongs to the user; hovering with suggestions defeats the purpose of having built them a tool.
When the user picks a keeper:
| Invocation | Behavior |
|---|---|
<the thing you're stuck on> | Full workflow: diagnose → suggest → build → hand off |
diagnose | Phases 1–2 only: analyze the situation and suggest the tool, build nothing |
harvest | Read the latest saved config and wire it into the real artifact |
harvest <path/to/config.json> | Same, from a specific saved config |
more knobs | Promote hardcoded values in the current tool to controls |
export as <format> | Add or replace the exporter |
freekmurze/dotfiles
26bd6ac
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.