I tried Vibe Coding with Claude Code for about three weeks on a side project, and the result is messier than I expected. Not unusable, just messier.
The pitch on Juejin lately is that you can hand Cursor or Claude Code a one-line description and walk away with a working app. In my case I asked Claude Code to build a small dashboard for tracking my homelab power usage. It spun up a Next.js project, picked Postgres for storage, wired up Tailwind, and even added a Grafana embed. I didn't write a single line of TypeScript for the first two days. That part felt magical.
Then I went back to add a feature, and that's where the cracks showed. The agent had generated three different error-handling patterns across the codebase. Two of the API routes were using fetch directly, and one was going through a custom client that never retried on failure. None of this was wrong per se, but reading it back felt like inheriting a project from a stranger who'd been in a hurry. I spent an entire Saturday untangling things that probably would have taken me an hour if I'd written them myself.
What ended up saving me was adding a CLAUDE.md file with hard rules: one error-handling pattern, one folder structure, no new dependencies without asking. After that, the output quality jumped noticeably. I think the lesson is that Vibe Coding works when you front-load the constraints, and falls apart the moment you treat the AI like a contractor who'll figure out your taste on their own. I'm not sure this scales to a team codebase, though, where multiple agents and humans are editing the same files. That part still feels unsolved.
Top comments (0)