How I Prompt Fable — matt shumer
By Matt Shumer • Jul 3, 2026
Send this to your agent: give your Fable this link and it'll help you prompt!
Copy the link
Every time I show something I built with Fable, I get the same questions. "I can't get results like this." "How did you do that?" "There's no way that's real."
And people assume each one came out of some insanely complicated prompt, or that it took way more work than it actually did. It's usually the opposite. The demos are simpler than they look. I'm just using the model differently than most people are.
Fable is a real next-generation model. Prompt it the way you prompt the current ones and you'll get results like the current ones. Change how you prompt it, and how you think about what it can take on, and the door really opens.
Here's how I actually do it.
Give it the goal, not the steps
The biggest change is that I stopped spelling out how to do things. With older models you had to specify how to do something, or they'd often wander off. Fable is the opposite. The more room you give it, the better it does.
So I hand it big, sweeping, underspecified work; the way you'd hand a goal to a brilliant person you trust and let them find the best way there. Except Fable is often better at figuring out the "how" than I am. Every step I dictate is just me overriding its judgment with mine, and mine is usually worse.
That feels risky at first, when you're used to controlling the details. What makes it safe is the next part.
Set house rules so you can trust it
An underspecified goal works when you fence it with a few rules it can't cross. House rules are the handful of things you always want to be true, no matter how Fable gets to the goal.
For example, when I'm building an agent, models love to over-engineer. They'll reach for a regex filter to catch some specific case, when what I actually want is a prompt that describes the behavior and lets the model handle it. So one of my standing rules is basically: don't hard-code special cases, describe what you want in the agent's system prompt and let the agent reason.
And for extra protection, you can have Fable always hand a sub-agent one job: check the work against the house rules before anything is pushed. Now you can let Fable run wide open on the goal and still know it won't ship something that breaks the things you care about.
Give it a real bar for "done"
If you tell Fable to make something "high quality," it stops at its own idea of good enough, which is usually lower than yours. So I don't use adjectives. I give it a bar it can check itself against, and I make that bar hard.
Sometimes I write the test myself... something concrete, like "a stranger can't tell our render from the real photo." Other times I don't even know how to measure the thing I want, so I hand that problem to Fable too.
For example, a friend was trying to clone a component library and was getting nowhere. Two things were wrong. First, he was building on top of ShadCN and trying to clone the components off of ShadCN, so Fable was fighting all of ShadCN's conventions instead of just building the components. And second, he had no way to say when it was done. He was just telling it "clone this."
So we did two things. We threw out ShadCN and started from scratch, because a component library is completely buildable from nothing and the existing code was just baggage. Then, since neither of us knew how to measure "does this match the original," we asked Fable to figure it out. It took a screen recording of the real components in use, turned it into a heat map of where everything moved, and kept working until its version matched. We never told it how to do that. We told it what "done" meant and let it invent the measuring stick.
One rule I never break here: whatever builds something never gets to grade it (the 'build' agent is often biased, and has a whole trajectory of 'why I made these decisions' that it can use to justify that it's done the job). I always have it spin up a separate Fable sub-agent with a fresh context window, point it at the real output (the actual pixels, the actual running app, etc.) and have it try to prove the thing is not passing.
Loop it until it hits the bar (especially for creative tasks)
Once there's a bar, I put Fable on a loop against it and let it go. It builds, checks itself, finds the biggest gap, closes it, and goes again... for hours, sometimes days. I use /loop for this constantly, especially on creative work, where there's always something concrete to keep measuring against until it's actually there.
The whole point of the loop is that Fable never gets to decide it's finished. There's always a next gap. It stops when I say it's done, or when it genuinely can't find anything left to fix (which is rare, if you've set this up right).
One trick I use on every long run: I have Fable post its progress to workbench.md (it's a Markdown editor that supports images, videos, html, and anything...