Yesterday a small Claude Code plugin dropped that fixes one of the most annoying parts of building UI with AI. Every session starts from zero, so you end up re-deciding the same design calls over and over. Nothing gets written down for the next session to read. This Redditor, who posts as u/SnooComics4579 in r/PromptEngineering, got tired of that loop and built a plugin called “craft” to fix it. Step two of how it works is the real twist, and it’s sharper than it sounds.
I’ve lost count of how many times I re-explained the same button radius to Claude in a brand new session. This one hit close to home. The original poster didn’t try to solve the problem by having Claude interview them about their taste. They built craft to keep very strict “receipts” instead, and they now run it across 39 projects. Every time you accept a tweak, that decision gets written into a file. The next mockup loads that file before Claude generates a single option, so the “taste” persists even though the model itself never changed.
Here’s the part worth pausing on. The creator typed one throwaway line on a homepage card: “looks good, apply elsewhere.” That single reaction generated eleven backlinked records! The frame and the badge from that same card graduated straight into the design system. That happened not because anyone wrote a spec, but because the reaction got logged automatically.
It’s not a model that learned the taste. It’s a file called “tokens.yaml” that outlives the session and loads before generation starts. Accept a tweak, and the value lands in that file for good. That’s a much smaller ask than sitting down to write a full style guide by hand.
Over in the comments, u/growinghomer42 said this covers the missing piece for most people using Claude for UI work. That commenter has been keeping a running “.clauderules” file by hand for a while now. They called the auto-captured version way cleaner, since it turns decisions into structured tokens instead of loose notes.
Here’s the mini-workflow if you want to try it yourself.
- 📦 Install it. Run
/plugin marketplace add drobins25/craft, then/plugin install craft@craft, then/reload-plugins. It needs Claude Code 2.1 or newer, and it’s tested on macOS and Linux. Windows works fine through WSL. - ✅ Verify it. Type
/craftand check that the entry point prompt shows up. If nothing appears, run/pluginand confirm craft is listed under the marketplace. - 🎨 Ask for a real tweak. Have Claude dial in something concrete, like a homepage hero animation, and pick your favorite version out of the options.
- 🔁 Accept and move on. Approve the tweak, and craft logs it automatically through
/craft:adhoc. Start a brand new mockup anytime with/craft:mockup, and it loads everything the system has learned so far.
One caveat worth flagging: the thread doesn’t say what happens when two accepted tweaks contradict each other. Approve a rounded corner today and a sharp one next month, and tokens.yaml presumably needs some way to reconcile that. The post doesn’t cover it, and with only one upvote so far, this is still a fresh, unproven build outside the creator’s own 39 projects.
Worth noting too: this only works if you actually use it across real projects. A single approved tweak on one throwaway mockup won’t build much of a design system on its own. The value compounds the same way real receipts always do, slowly, and only if you keep feeding them in.
Compare that to how most people handle this today. A manual notes file, a pinned Slack message, or just re-explaining preferences at the start of every session. Craft skips all of that by turning your normal approval flow into the memory itself, which is a neat trick for something this small.
This feels aimed squarely at solo builders and small teams shipping a lot of UI fast, not big design orgs with an existing token pipeline. If you’re the only one deciding what “looks good” means on your project, a file that remembers your calls beats another meeting. Nobody reads the style guide anyway.
Pro tip: treat every “looks good” the same way you’d treat a commit message, because it becomes permanent the moment it lands in “tokens.yaml.” Pro tip two: open that file every couple of weeks just to look at it. Watching a design system take shape out of nothing but small reactions is oddly satisfying.
The original poster closes with a good question: what’s your version of the receipts folder? Head over to the r/PromptEngineering thread to grab the repo link and read the rest of the discussion. 🚀
Frequently Asked Questions
Q: What happens if I change my mind about a design preference later?
Craft records each decision you approve without overwriting previous ones. Instead, it stacks new preferences alongside old decisions, so Claude sees your whole taste evolution. This means you can safely experiment, refine your style, and Claude learns from both what you liked and what you changed.
Q: Do I have to manually tell Craft when I want to save a design decision?
No, Craft auto-captures decisions whenever you confirm a tweak (like “looks good, apply elsewhere”) or build a fresh mockup. Your taste file grows naturally as you work. The only thing you do is approve what you like; Craft handles the record-keeping in the background.
Q: Can I reuse design patterns from one project type in a completely different one?
Absolutely. Craft organizes preferences by design tokens (frames, badges, animations, colors, etc.) rather than by individual projects. A badge style you approved in a homepage design can flow into a mobile app mockup or dashboard, anywhere Claude is generating UI, your taste comes along.
i didn’t train claude on my taste. i just kept receipts and now it elevates it.
by u/SnooComics4579 in PromptEngineering