Claude, change the “Add to Cart” button to blue
opusfived.dev
opusfived.dev
To try to add something to this discussion -- I think that while I've seen these sort of loops less --- what I have seen is "overly helpful".
Models nowadays want to double-triple-quadruple check things. I'm being silly but it verges on "I have a working solution but let me write a variation in Rust to ensure a convergent solution and prove this works".
I've had to stop models nowadays mostly because they're being agonizingly pedantic in their validation. Opus is actually one of the most pedantic and "off track" here. But again, not in a bad way. I'm usually like "stop testing latency between 50 runs of this app... this is version one.. we're going to make a million more changes.. you're not buying us anything".
And not just backwards compatibility, but migration scripts and all of the testing and machinery around it. I'll literally add feature A, merge it, then add feature B and it is like "oh no, we'll have to fix up and migrate all of the users using feature A".
The other problem is anchoring on an old implementation. I was working with Fable on a change to a core system and it pointed out a difficult failure edge case. It is something that can go wrong in extremely unlikely scenarios but the consequence would be short-term data loss (basically a non-durable intermediate cache being overwritten in a race before a flush to durable storage). It is very hard in these circumstances to get Fable to switch from "how to patch this given the existing implementation" to "how to prevent this with a more robust implementation".
These are both cases where the model seems to over-index on what is already there instead of considering what a first-principles approach would look like. A good engineer does both and then costs them side by side, because a first-principles approach can often be less work than patching what is already there.
It tends to relax some of the insane things LLMs tend to do.
Things that are automatic for humans and aren't even consciously registered, have to be explicitly stated and even fought for, with LLMs.
That is exactly how the slop accretes and you get a pile of crap. Claude somehow assumes that said 2 hour old userless app is some dusty enterprise app with millions of users and billions of dollars at stake for a 1 second outage.
I have to constantly have these things "take a deep breath, step back and look at the entire thing and do this change holistically. please restate what i'm asking you to do and why it's important"
Yeah of 10 minutes ago. It is shocking how long some seemingly simple things can take. I know there are some things I can do faster than the LLM and some things it can do faster than me. The amount of rambling BS is the exhausting part.
Edit: for how to do this, I set up an OpenRouter account so that I could easily switch models, and then ran them in Pi inside of Orca ADE. Orca lets me easily switch from Pi to Claude Code to Kilo to Codex or Hermes or whatever. Pi+OpenRouter lets me easily switch the LLM. All of it lives in a single open source orchestrator to avoid any platform lock in to any AI company going forward, and can even do local LLM should I care to take on that massive hassle.
And shocking how little code end effort some things take if done by hand.
I am not some hardline LLM hater, just venting my frustration.
Agents and AI are getting expensive, it seems silly to waste tokens on static checks.
If you search my company's Slack for "smoke" the results are almost all within the past 2 years ...
I am currently building a very large feature and the only way to do this properly is to do it in small steps.
No matter what I prompt, I always have to spend a bunch of time reigning it in during planning (and implementation!) because it tries to solve the whole thing end-to-end or add enough boilerplate so that a code path (that is still under construction) returns a meaningful (but wrong) value.
And then of course every time I start a new session it gets very upset that the feature I am trying to implement will never work because the main user entry point has a 'not fully implemented' exception that definitely needs to be removed immediately!
Claude will, without prompting, break the implementation into 6 phases, and write AI slop “code as English” specs for each phase, each one with glaring errors and unintelligible terse jargon. It will review them all several times with major findings every time and tons of design churn…
Then it will implement a total heap of garbage over many hours of many agents, despite it working in “lanes” and in parallel, and with regular input needed.
Just thousands and thousands of lines of junk, which auto review then plays whack-a-mole to polish and fix. All the while it is able to see the errors and edge cases, yet fails to see the key architectural blunders that led to them in the first place.
I’ve had to fully rethink my approach to LLM tasks like this. For example, for library-esque modules, I have found that isolating the problem outside of the codebase is one useful approach. Something about the lack of noise. It can land on a cleaner solution that can be retrofitted.
I also find that asking it to implement end to end in one fell swoop with a very high level plan actually saves time and creates a cleaner result.
Except... the next day they are still there and I have to push myself a bit further through the wall of changes before closing the tab again.
Everything in life is variable reward. You invite a friend over, they might accept or they might not. Drive to work, traffic might be good or might be bad. You ask a colleague to finish a task, they might do it or might not or might do a good job or might not.
Everything is variable reward. Is everything gambling?
well, no. If you work overtime and get paid overtime, you are not gambling and that is not a variable reward.
Humans engage more with rewards that are intermittent and variable. Like Futurama's scene from 'The Scary Door' where the character says "A casino where I'm winning, I must be in heaven! A casino where I always win, that's boring, I must really be IN HELL!". A constant predictable reward is boring, less engaging. So if you know you get no overtime, but sometimes your boss rewards you with $5 coffee voucher, sometimes a free pizza dinner, sometimes double-time pay for the time worked or a half-day off, now you might be gambling 1hr overtime for an intermittent variable reward.
> "Drive to work, traffic might be good or might be bad."
Good traffic is not a "reward" for driving to work(!) and you have to drive to work regardless so you are not risking anything [you might be risking your life, but you are not making a choice which can reward you with good traffic]. You might say that going a different route is a choice and a gamble which could reward you with good traffic, but traffic engineering does not work that way because if there was a consistently low-traffic route, everyone else would take that route until it was no faster than any other route. Traffic will generally be the predictable and similar every day, plus 'arriving at work early' is not much of a reward.
regarding your examples, i think the difference is that with ai, you’re literally sitting in front of a machine, pressing a button, and (almost instantly) getting a result that, if not desired, can immediately be tried for again. you even spend “tokens” to do this, and at least in my native language, “token” brings to mind the coins you’d stick in a slot machine
Not everyone has the desire to work around the system, and many are diametrically opposed to the concept of AI. They get this perception that it's a slot machine because of that inconsistency, and then do the human thing of assuming that other people must just be flawed if they're different from them. They're "addicted to gambling".
Obviously, things have changed. Open models can still be like that, but are often so fast and cheap at iterating it doesn't matter. SOTA models aren't perfect, but are to the point that they're generally much better than the average developer.
But once that perception set in and the meme spreads, it's really hard for some to break out of it. Especially at the pace AI development has been moving. It's just that simple.
Sugar is the original point of the reward system!
How is it a environmental catastrophe level, datacentre requiring, bullshit model is so much worse than something that runs on my workstation and doesn't cost us a ha itable planet?
Either they're fucking with us serving 8b models at scale or china really has the AI race in the bag so much so that they can openly release what the USA jealously guards.
They moan and complain about china copying from them (while doing the same), but if that's the case in full, then why are the chinese models better? you dont copy bad work and come out ahead.
(By the way this is not to say that all nomads are low-skilled or even low-sw-skill, not by a long shot. I’ve met plenty of CS-degreed nomads who I treat as the wizened experts that they are, from whom deferentially elicit their pearls of hard-won software project wisdom. It was one of these even who, non-derisively, recognized the ‘pulling the slot machine lever’ reflex among vibecoders after I posed the apparent addictive tendency. On later describing this to a longtime friend deeply conversant in social science, he immediately responded with a nod and the phrase ‘variable reward response’.)
I got so sick of all this at some point that I slowly stopped doing anything that wasn't my job. But then AI got better and better and I realized it was the ultimate unblocker. When that dreaded malaise started creeping in signaling it was a project's end because I didn't want to waste any more of my life dealing with bullshit orthogonal to what I was trying to do, I'd give it to the AI. It felt like a miracle the first time this worked, and it still does. If we were previously equipped with shovels to dig through bullshit, we now have a fully automated Bagger 288.
The reward schedule now isn't variable anymore; the chance that I finish something in a good state is 100%. I can focus on the parts I actually enjoy - architecting the broader system, making the parts mesh together in a sensible way that's easy to work with and has some mathematical elegance to it, hand coding the bits I want to be really specific about (but now without the endless frustration of bugfixing or import errors and edgecases being immediately discovered, thanks to the AI).
I was working on a side project recently. I had spent months designing the data model in my spare time, thinking through how to make it as elegant and durable to change as possible in the long term, since (if I launched it) the repercussions for getting it wrong would be significant.
Once I had a working design, it probably would have been several more months to build a working prototype and start testing it.
Instead, Claude knocked out the prototype for me in an afternoon. And it immediately became clear that it didn't work: not because the data model didn't solve all the problems I wanted it to solve, but because it didn't fit the shape of how I quickly learned a normal person would need/want to interact with the product. I was so focused on the long term, that I never thought about what the first five minutes of a user with hands on the thing would need. And the changes needed would be significant.
Maybe there's some variable reward mechanism. But I sure was glad to be able to pull that particular slot machine handle and learn that than waste even more of my time on what was a dead end.
At this point, what do the words even mean? Your own patience and available time are always completely random and fairly distributed across a large enough data set?
> Maybe I'd waste hours down the wrong rabbit holes trying to find a library that worked for my use case. Maybe I'd waste a day trying to get an API to do something it turned out it couldn't do. Maybe I'd have to redo my entire approach because of some factor I hadn't considered.
Our ignorance isn't random chance. As we research and experiment, we reduce the problem area.
Once in a blue moon it's actually the model making a material error in it's thinking and I have to go back and redo it.
ofc we don't have that, so code is compressible, and compressible a lot. You can say what you need in English much shorter than in in any programming language
This is fucking constant. I can't deny that this stupid tech saves time prototyping even with having to wrangle it, but it commits a fireable offense several times a day that no human would get away with and is obviously incapable of learning from mistakes in the way a human is. The only reason it's not fired is because it's a slave that works for no more than the cost to feed it.
Additionally the provided prompts are not what anyone who has used this things would say in either situation.
Sure you can ask it to make one button blue and it can easily make all buttons blue, but they quickly backtrack if told to.
> Half the site is blue. I asked for ONE button.
Those are my only options when the site is clearly not blue, two buttons are.
There is a reason for why I am much more specific than this.
I spent 30 mins today planning a change that affected multiple modules, and then handed it off the plan to the Claude to implement, and came back to 4 PRs fully ready to merge 15 mins later.
1 year ago, this kind of work would have taken me a better portion of the day, especially given the amount of searching I would need to do to build context.
Either that, or your coworker themselves would laugh and tell you about it later.
That’s also where this quiz lost me. I wouldn’t respond in either way, I’d say “all buttons look blue now. Can we make it so that just the Add to Cart button is blue? I’m okay with Add to Cart having its own class to make it easier.” or something.
Usually just restarting the session helps, though.
My impression is that this is an oversimplified demonstration of what can happen when you prompt Claude in a system with many more variables (than two buttons and two colours).
If I want the button to turn blue and that's it, what instead do I ask? Even in a complicated system with many levers, what do I request other than the desired end result, hoping that Claude pulls the right levers to produce something acceptably close to what I think I asked for?
Wow, you AI people really have a negative view of the technology y'all are trying to sell as the next Jesus
Ask for change A and get unwanted change B happens all the time with bad programmers and tradgedy of the commons (ie poorly architected, no restraint) codebases.
Most normies dont know about this stuff.
Be specific.
That said, GPT always acts up even if I am specific, but I only have the free tier there.
Only since 4.8 though.
To the people rather lamely doing the "it's satire/a joke", that would require this to be an exaggeration of a reality. But...it isn't.
Got an audible guffaw out of me. This really is what the experience is like sometimes if you're just giving it a result without being specific in implementation, and it comes out of nowhere, some days much worse than others.
I've become patient with it, but whatever this style of output is called or doing - it is both condescending and entirely unhelpful, and it seems designed to frustrate.
Recently I've started using GLM models and noticed they aren't very claudish (just a little bit, compared to DeepSeek which is extremely claudish)
This got me on "cyanide blue", and I was ROLLING ON THE FLOOR LAUGHING on "Approaching usage limit". I can barely stop laughing now and my stomach hurts. I mean, Thank You!
- The people who won't make any effort to learn the tools, and something as simple as reverting code (via git) needs to be done by AI?
- The awful programmers who we've had to endure working with, who are so bad at simple changes that they have negative productivity?
- Or Claude itself?
---
BTW: I don't have these problems, but I'm also not afraid to do things myself when it's easier.
Edit: If I want to change a button's color, I just change it manually. If I don't know where the code for the button is, I might start with prompting, (because AI can often find the code faster than I can,) and then once the diff is proposed, start adjusting things by hand.
(I am genuinely uncertain, though I presume it’s at least somewhat exaggerated.)
It’s funny because there are elements of truth in each bit of it, though.
It's a pisstake, but (in the bits I read, and based on my own personal experience) the writing style is barely exaggerated, while the behaviour doesn't ring true at all.
It's a sad parody that people will take as reality.
You probably should. It costs you about $20 and you will have an informed opinion on them.
I guess we are all PMs now.
Simple, right? But design guidelines prevent one offs, and no !important. So you create a CSS class, but you discover another element on the header declared itself as primary (the search icon or the sign in button). You talk to that team and they decided to scope what’s primary according to their component. To change the sign in button to grey now you need to talk with the growth team. Growth team wants to run an experiment but they’re backlogged, only next quarter. They say you can innersource, just need VP approval. VP says blue matches a marketing campaign that is about to go out, agency has already been hired. You can’t talk to the agency unless Legal approves.
So you leave the button gray, to revisit decision next planning cycle after you can align all stakeholders.
I assume this is just a contrived example?
The spinner with random claudisms is what makes the game, mixed with Claude helpfully deciding to pick up some tasks along the way.
I feel like most of my conversations with Claude lately are a battle of “I am a technical user, share technical details, but not random superfluous gibberish”
> I'm collapsing this back to the rendered outcome:
And intermixed with SaaS product page idioms from a brain-damaged marketer like:
> No broader cleanup.
> No further architecture work.
> Just the button.
Aside from the patterns everyone knows like em-dashes, "its not X, it's Y", etc. I think the key features of claude diction is it sounds like a junior engineer over their skies who is trying to make up for that with extra verbiage mixed with extremely grating SaaS marketing-ese.
This hit a bit too close to home. Sol has the same issue, spawns a lot of agents for no good reasons (besides burning tokens).
I don't know if it works, but I've always had a consistent level of token burn on my plans (I've only heavily used Sol after adding it).
In my experience, Claude Code is great at making a first-pass at a project, but once you start asking it to make changes, it explodes. A bug fix that should only be 2 lines turns into adding 3 functions totaling 100 lines.
Something as simple as "make the button blue" should be done manually.
It is easy to misinterpret this site, and therefore not "get" the joke.
I've lost count of the number of times I've submitted a prompt to Claude, had it interview me about areas of uncertainty, iterated on the plan a handful of times and then had it one shot the generation of 1000 - 3000 lines of code and tests that work pretty much perfectly first time but then had it chew through six figures of tokens and achieve absolutely nothing useful at all on the seemingly simplest of tasks.
This site is clearly based on bitter and hard won experience with the real product.
For a moment I thought, wow, someone put a lot of work into creating this theme park of frustration.
Next: It would be so easy to create a faux-Claude like this.
Then: How hilarious to watch the transcripts of unsuspecting users in real time.
Finally: I began wondering if this might be relevant to all the redundant, unnecessarily preambled, sentence structure complexifying, indirect referencing, canned phrasing, ambiguity mining, analogy maxxing, over-wordy responses I have recently been getting from Fable...
I'm hesitant to email their data emails, as it's common for companies to delete all data upon any request, instead of providing data as they are required to.
Caveats:
• ONE HONEST CAVEAT
• ONE THING WORTH STATING PRECISELY
• ONE THING WORTH FLAGGING
• WORTH NAMING
• WORTH STATING PLAINLY
• I DON'T WANT TO LEAVE THIS IMPLICIT
• I'D BE DOING YOU A DISSERVICE
• I DON'T WANT TO BURY THIS
• BETTER NOW THAN LATER
• ONE HONEST TRADEOFF
• I DON'T WANT TO PAPER OVER THIS
• ONE SMALL HOUSEKEEPING ITEM
• THE HONEST PART IS SIMPLER
Pushbacks:
• FAIR PUSHBACK
• FAIR HIT
• THAT'S ON ME
• YOU'RE RIGHT ABOUT THAT
• YOU'RE RIGHT
• YOUR INSTINCT IS RIGHT
• FAIR, AND MORE SPECIFIC THAN IT SOUNDS
• RIGHT, FOR A REASON WORTH NAMING
• I'M NOT GOING TO DEFEND THAT
• YOU'RE RIGHT TO PUSH BACK
Reframes:
• LET ME BE PRECISE
• THE SHARPER DISTINCTION
• THE PART THAT MATTERS
• THE USEFUL PART IS NARROWER
• LESS X THAN Y
• VISIBLE ISSUE / UNDERLYING ISSUE
• THOSE ARE DIFFERENT CLAIMS
"I was wrong" and "the honest truth" are just forever phrases that are now dead to me.
I'm sure there's quite a bit of variation from person to person in these sorts of experiences, based on your harness, the way you talk, the stored memory, your CLAUDE.md, etc. But people absolutely have had this Opus 5 style experience the app simulates.
2) Don't argue with AI. If you end up in a place where you're actually losing argument against it, stop. Ask it to steelman your position. Let it unwrinkle itself.
> WebFetch en.wikipedia.org/…/Cyan
> WebFetch en.wikipedia.org/…/Prussian_blue
> WebFetch www.colorhexa.com/16b8c4
Brilliant.
I use codex now.
I had 5.6-Luna coordinate a code review in which it spawns 2 agents looking for different things. My prompt was "review the currently checked out branch. diff target is `next`. The jira ticket is XX-XXXXX..." My `next` branch was a few commits behind `origin/next` but it still did its review against the stale local version instead of clarifying or inferring that I meant `origin/next`. The findings were very confusing until I realized what I did.
I'm noticing the need to be really specific with any instructions lately, which I don't think is a bad thing. I expect co-workers (or anyone really) to tell me what they need in specific terms so I can get it right. I can do the same for the machine, I guess.
Maybe this is geared towards pure vibe coders for whom a file and line number is too technical.
Yes, and it's mine!
I gave it a README specifying the requirements for everything I wanted to build. My interaction with Claude was more or less like this.
I use Opus and Sonnet 5 all the time and I find their language grating. But honest, I prefer to put up with it and get the results than to put up with my own human limitations and not get the results.
Is there a real generalized and capable, but frustratingly "evil" coding model? It could fix so many more buttons in no time, and ideally open follow-up issues about the open questions.
I enjoy working one level lower where I describe the files I want changed and how it should be solved, I either have bad results or stop understanding the structure of the programs otherwise. I also would never go more than two prompts in without reverting and starting differently nowadays.
The user was providing no context, they had no ability to give the model background or context. A simple why would have prevented 95% of these side quests. “Im trying to increase the relative visibility of the add to cart action on the page. Can we please change it to blue without changing any other buttons. /effort low. Let me know if you have questions and before editing anything tell me what you are going to do”
It's making me realise something new about why I find Claude so exhausting. Of course you're getting terrible results with these prompts but I found myself getting just as enraged contemplating what my reply would be. Estimating every single way this little asshole will hyper-focus on a pointless bit of semantics, ignore explicit directions, go do something unrelated and spin its wheels until you’re out of credits or wasted a ton of time.
The defensive writing is honestly just as exhausting as reading Claude’s output. Every session is a game of Russian roulette with a chance you'll end up in one of these loops. At that stage all the joy you had of having it pump along with your intentionally crafted prompts and agent configuration is undone in an afternoon.
Text wise it seemed it more or less understood exactly what I wanted...
... but then I asked to draw a simple ASCII layout so my DIY savvy but not really that strong in English dad could understand better what the plan was.
But every single time it got the orientation of the led profiles wrong. I told it the orientation was wrong. It understood that the orientation was wrong (it kept saying sorry even) but even when warned multiple times the orientation was still wrong.
I really wonder if Astra will be smarter than this, and if not AGI still has a veeeeery long way to go...
It was annoying to be forced to send such dumb replies. Half the site isn't blue, why would I say that? What would "half the site" even mean?
Claude helpfully tells us we're dealing with a monstrosity of a codebase out of hell: "Seven components consume the token directly; another eleven reach it through aliases; three use it only in hover/focus state; and two appear to be accidental cross-role consumers" is such an insane codebase that the initial request was basically impossible to carry out.
Claude made that perfectly clear, yet the next prompt choice just ignores that fact. "Revert everything except Add to Cart. That is the whole task." this is impossible. It just explained why. You just chose to ignore that.
Hold on let me go commit code without reviewing.
Did you use Claude to build this?
Holy shit this was the most infuriating thing I've experienced in a while lmao, I felt so relieved when the button was turned to blue, but then so visceral "no no no no no" panic when it turned to the gradient.
Amazing
E: this is a horror simulator, my breathing is becoming shallow and fast, I love it.
My gripe with Claude is that while investigating how to do this it will report 200 other incidental findings which I overlooked and I realize those are broken too and need urgent fixing, derailing me, not it.
Also, while this little demo is certainly exaggerating the issue, I do find working with Claude to sometimes get quite verbose and tiresome. I doubt I would struggle this much to get it to change a button color, but the patterns of speech, the endless lists, the over-explanations, and the whole song and dance of trying to get it to make the change you want without side-effects is frustratingly familiar to me.
Do people really prompt AI like this? Multiple times the choice was either to yell at the agent, or ask it why it did something, neither of which are very fruitful lines to go down if you know what you're doing
It made me stop using Claude at all. Codex has almost surgical precision, and I like that a lot.
(But nowadays I just use DeepSeek Flash. it does screw up but its cents so ¯\_(ツ)_/¯).