Ask HN: Why is my Claude experience so bad? What am I doing wrong?

84 points by moomoo11 ↗ HN
I stopped my CC Max plan a few months ago, but I'm trying it again for fun after seeing their $30 billion series G or whatever.

It just doesn't work. I'm trying to build a simple tool that will let me visualize grid layouts.

It needs to toggle between landscape/portrait, and implement some design strategies so I can see different visualizations of the grid. I asked it to give me a slider to simulate the number of grids.

1st pass, it made something, but it was squished. And toggling between landscape and portrait made it so it squished itself the other way so I couldn't even see anything.

2nd pass, syntax error.

3rd try I ask it to redo everything from scratch. It now has a working slider, but the landscape/portrait is still broken.

4th try, it manages to fix the landscape/portrait issue, but now the issue is that the controls are behind the display so I have to reload the page.

5th try, it manages to fix this issue, but now it is squished again.

6th try, I ask it to try again from scratch. This time it gives me a syntax error.

This is so frustrating.

74 comments

[ 5.5 ms ] story [ 84.8 ms ] thread
It takes many months to figure this out, much longer than learning a new programming language.

Read through anthropics knowledge share, check out their system prompts extracted on github, write more words in AGENTS/CLAUDE.md, you need to give them some warmup to do better at tasks.

What model are you using? Size matters and Gemini is far better at UI design work. At the same time, pairing gemini-3-flash with claude-code derived prompts makes it nearly as good as Pro

Words matter, the way you phrase something can have disproportionate effect. They are fragile at times, yet surprisingly resilient at others. They will deeply frustrate you and amaze you on a daily basis. The key is to get better at recognizing this earlier and adjusting

You can find many more anecdotes and recommendations by looking through HN stories and social media (Bluesky has a growing Ai crowd, coming over from X, good community bump recently, there are an anti-ai labelers/block lists to keep the flak down)

You aren't telling us anything about how you're using it. So how can we tell you what you're doing wrong? You're just reporting what happened.

You haven't even said what programming language you're trying to use, or even what platform.

It sounds to me like you didn't do much planning, you just gave it a prompt to build away.

My preferred method of building things, and I've built a lot of things using Claude, is to have a discussion with it in the chatbot. The back and forth of exploring the idea gives you a more solid idea of what you're looking for. Once we've established the idea I get it to write a spec and a plan.

I have this as an instruction in my profile.

> When we're discussing a coding project, don't produce code unless asked to. We discuss projects here, Claude Code does the actual coding. When we're ready, put all the documents in a zip file for easy transfer (downloading files one at a time and uploading them is not fun on a phone). Include a CONTENTS.md describing the contents and where to start.

So I'll give you this one as an example. It's a Qwen driven System monitor.

https://github.com/lawless-m/Marvinous

here are the documents generated in chat before trying to build anything

https://github.com/lawless-m/Marvinous/tree/master/ai-monito...

At this point I can usually say "The instructions are in the zip, read the contents and make a start." and the first pass mostly works.

Yeah if the prompt is as specific as this post, then that's probably the issue...
It seems to me you expect Claude to be able to one-shot your tool based on a single prompt. Potentially "vibe-coding" as in the sense: you don't know how to develop this yourself (perhaps you are not a software developer?)

While this may be possible, it likely requires a very detailed prompt and/or spec document.

---

Here is an example of something I successfully built with Claude: https://rift-transcription.vercel.app

Apparently I have had over 150 chat sessions related to the research and development of this tool.

- First, we wrote a spec together: https://github.com/Leftium/rift-transcription/blob/main/spec...

- The spec broke down development into major phases. I reviewed detailed plans for each phase before Claude started. I often asked Claude to update these detailed plans before starting. And after implementation, I often had to have Claude fix bugs in the implementation.

- I tried to share the chat session where Claude got the first functional MVP working: https://opncd.ai/share/fXsPn1t1 (unfortunately the shared session is truncated)

---

"AI mistakes you're probably making": https://youtu.be/Jcuig8vhmx4

I think the most relevant point is: AI is best for accelerating development tasks you could do on your own; not new tasks you don't know how to do.

---

Finally: Cloudlflare builds OAuth with Claude and publishes all the prompts: https://hw.leftium.com/#/item/44159166

Wow thanks for sharing! Could you explain how you made the specs? Did you already know pretty much everything you wanted to cover before hand? Was one CC session enough to go through it?

In my experience, trying to make a plan/specs that really match what I want often ends in a struggle with Claude trying to regress to the mean.

Also it’s so easy to write code that I always have tons of ideas I end up implementing that diverge from the original plan…

> It seems to me you expect Claude to be able to one-shot your tool based on a single prompt.

Yes, this is what the hype says doesn't it?

Or... are they all lying?

Thanks for sharing!

Like OP, I've been similarly struggling to get as much value from CC (grok et c) as "everyone" else seems to be.

I'm quite curious about the workflow around the spec you link. To me, it looks like quite an extensive amount of work/writing. Comparable or greater than the coding work, by amount, even. Basically trading writing code files for writing .md files. 150 chat sessions is also nothing to sneeze at.

Would you say that the spec work was significantly faster (pure time) than coding up the project would have been? Or perhaps a less taxing cognitive input?

If you expect it to _do_ things for you - you're setting yourself up for failure.

If you treat it as an astonishingly sophisticated and extremely powerful autocomplete (which it is) - you have plenty of opportunities to make your life better.

To be fair with OP, the hype about what the tool is "supposed" to be doing ("your accountants will rebuild the ERP over the week end, you don't need programmers, etc...") is setting a dev up for frustration.

Personnaly, I'm trying to learn the "make it write the plan, fix the plan, break it down even more, etc..." loops that are necessary; but I haven't had a use case (yet?) where the total time spent developing the thing was radically shorter.

LLMs make wonders on bootstrapping a greenfield project. Unfortunately, you tend to only do this only once ;)

In other words, if we believe what the CEOs of the AI companies claim, we are setting ourselves up for disappointment.
Try a prompt that helps claude iterate until it can verify the result.

For example, if you tell it to compile and run tests, you should never be in a situation with syntax errors.

But if you don’t give a prompt that allows to validate the result, then it’s going to get you whatever.

I've found it really valuable to pair with people, sit at a computer together while they're driving and using AI. It's really interesting to see how other people prompt & use AI to explore the problem.
Claude is a programming assistant not a programmer.

You still need knowledge of what you are building so you can drive it, guide it, fix things.

This is the core of the question about LLM assisted programming - what happens when non programmers use it?

it's a tool, not an oracle. you build with it, you aren't its customer, you're its wielder.

for now, anyway.

could you share an md of your prompts? I find with those tools I still have to break the problem down into verifiable pieces, and only move on to the next step once the previous steps are as expected.

syntax error is nothing, I just paste the error into the tui and it fixes it usually.

Try this:

* have Claude produce wireframes of the screens you want. Iterate on those and save them as images.

* then develop. Make sure Claude has the ability to run the app, interact with controls, and take screenshots.

* loop autonomously until the app looks like the wireframes.

Feedback loops are required. Only very simple problems get one-shot.

You need to be very specific about what to build and how to build it, what tools to use, what architecture it should do, what libraries, frameworks it should include. You need to be a programmer to be able to do this properly and it still takes a lot of practice to get it right.
Can you give some history of what you did? We can't answer "what am I doing wrong?" if you don't tell us… what you did.
I think at the current state of the art, LLM tools can help you build things very quickly, but they can't help you build something you yourself are incapable of building, at least not in a sustained way. They need hand holding and correction constantly.
Show us your prompts.

Two questions:

1. How are you using Claude? Are you using https://claude.ai and copying and pasting things back and forth, or are you running one of the variants of Claude Code? If so, which one?

2. If you're running Claude Code have you put anything in place to ensure it can test the code it's writing, including accessing screenshots of what's going on?

AI seems to work a lot better once you acquire some AI equity, you go from not working at all to AI writing all the code. /s
I’m probably going to be downvoted for this but this thread doesn’t really reflect well on the promises of Generative AI and particularly the constantly reiterated assurance that we’re on the verge of a new industrial Revolution.
claude-code added the /insights command which might tell you what you are doing wrong, using your history.

from the basics, did you actually tell it that you want those things? its not a mind reader. did you use plan mode? did you ask it to describe what its going to make?

What you are trying to do is quite easy to do with Claude. I have done way more complex things than that in hours. But having programming, managing(with humans) and engineering experience is extremely useful.

It seems you try to tell the tool to do everything in one shot. That is a very wrong approach, not just with Claude but with everything(you ask a woman for a date and if you do not get laid in five minutes you failed?). When I program something manually and compiles, I expect it to be wrong. You have to iron it and debug it.

Instead of that:

1.Divide the work in independent units. I call this "steps"

2.Subdivide steps into "subsets" You work in an isolated manner on those subsets.

3.Use an inmediate gui interface like dear imgui to prototype your tool. Translating then into using something else once it works is quite easy of LLMs.

4.Visualize everything. You do not need to see the code but you need to visualise every single thing you ask it to do.

5.Tell Claude what you want and why you want it and update the documentation constantly.

6. Use git in order to make rock solid steps that Claude will not touch when it works and you can revert changes or ask the ia to explore a branch, explaining how you did something and want something similar.

7. Do not modify code that already works rock solid. Copy it into another step leaving the step as reference and modify it there.

5.Use logs. Lots of logs. For every step you create text logs and you debug the problems giving Claude the logs to read them.

6.Use screenshots. Claude can read screenshots. If you visualise everything, clause can see the errors too.

7.Use asserts, lots of asserts, just like with manual programming.

It is not that different from managing a real team of people...

The truth is that there is a lot of hype.

You need to be reasonably experienced and guide it.

First, you need to know that Claude will create nonsensical code. On a macro level it's not exactly smart it just has a lot of contextual static knowledge.

Debugging is not it's strongest skill. Most models don't do good at all. Opus is able to one-shot "troubleshooting" prompts occasionally, but it's a high probability that it veer of on a tangent if you just tell it to "fix things" based on errors or descriptions. You need to have an idea what you want fixed.

Another problem is that it can create very convincing looking - but stupid - code. If you can't guide it, that's almost guaranteed. It can create code that's totally backwards and overly complicated.

If it IS going on a wrong tangent, it's often hopeless to get it back on track. The conversation and context might be polluted. Restart and reframe the prompt and the problems at hand and try again.

I'm not totally sure about the language you are using, but syntax errors typically happens if it "forgets" to update some of the code, and very seldom just in a single file or edit.

I like to create a design.md and think a bit on my own, or maybe prompt to create it with a high level problem to get going, and make sure it's in the context (and mentioned in the prompts)

Am I crazy thinking that interacting with such a system is a nightmarishly frustrating way to write code?

Like trying to write with a wet noodle - always off in some way.

Write the code feels way more precise and not less efficient.

This has been my experience as well. I get drained at the end, and I spent most of my energy and thinking capacity dealing with the LLM instead of the problem space.
I use AI-Lint to enforce basic code hygeine and design taste across languages, and force it to develop test iterations it can run on its own and tell it to iterate until the tests go green.

https://ai-lint.dosaygo.com

What you’re doing is the so called “slot machine AI”, where you put some tokens in, pray, and hope to get what you want out. It doesn’t work that way (not well, at least)

The LLM under the hood is essentially a very fancy autocomplete. This always needs to be kept in mind when working with these tools. So you have to focus a lot on what the source text is that’s going to be used to produce the completion. The better the source text, the better the completion. In other words, you need to make sure you progressively fill the context window with stuff that matters for the task that you’re doing.

In particular, first explore the problem space with the tool (iterate), then use the exploration results to plan what needs doing (iterate), when the plan looks good and makes sense, only then you ask to actually implement.

Claude’s built in planning mode kind of does this, but in my opinion it sucks. It doesn’t make iterating on the exploration and the plan easy or natural. So I suggest just setting up some custom prompts (skills) for this with instructions that make sense for the particular domain/use case, and use those in the normal mode.

Ah.

There used to be more or less one answer to the question of "how do I implement this UI feature in this language"

Now there are countless. Welcome to the brave new world of non-deterministic programming where the inputs can produce anything and nothing is for certain.

Everyone promises it can do something different if you "just use it this way".