The truth about Vibe Coding

Vibe Coding, supposedly a multi-agent AI technology capable of autonomously developing and publishing complete applications, can handle simple apps like a Snake game or a basic website. That’s it.
If you’re lucky, such an application might work surprisingly well after one autonomous iteration. However, if you start trying to improve it, change it, or add features, you will quickly find it cumbersome and costly.
Don’t get me wrong: I think Vibe Coding is a great technology that can already be very helpful, as long as your expectations align with what it can realistically do.
When I started developing my Nexus Polyglot plugin for WordPress, I used Bolt from a blank page. The first iteration gave me a basic yet fully functional translation plugin. I just had to add my Claude API key and click the translate button. Yet, this was a very basic approach and would not bring value to any WordPress user. I therefore decided to dive deeper to create a real, commercial-ready, value-added plugin. Bolt quickly showed its limitations.
I then tried different tools. I was already using Continue, a Visual Studio Code extension that allows the use of any LLM model locally or remotely with your API keys. It was very buggy. I moved on to Augment Code and Cline, and finally settled on Claude Code. Today, I select my Vibe Coding tool based on what I feel it can reliably handle.
Step by step, I was able to improve the Nexus Polyglot plugin with my basic development skills, and I learned a great deal along the way. But it cost me both time and AI expenses.
Today, I have a perfect example of what happens during every iteration: it costs significant money and time, and shows why it is mandatory to understand and review the proposed code. Otherwise, you risk an endless rabbit hole where Vibe Coding adds bugs, redundant code, and dead code, making it a nightmare to rely on.
My plugin Nexus Polyglot for WordPress has two major features (and many more that are not necessary to detail here):
- Automating translations (adding language codes and quality assessment scores)
- Automating translation grouping (assigning group IDs to related posts)
These features are related but distinct. For instance, I may want to delete a group without losing translation metadata such as language codes or quality scores.
I asked Claude Code to:
- Add a « group delete » function, allowing a user to delete a group on demand without deleting the posts in that group.
- Add a « remove post from group » function, allowing a user to remove a post from a group.
This is part of the execution plan it proposed:
If the user deletes a group, remove group reference, language code, and quality assessment from all posts of that group.
Translated into code:
if ($group_id) {
delete_post_meta($post_id, '_nexus_polyglot_group_id');
delete_post_meta($post_id, '_nexus_polyglot_language');
delete_post_meta($post_id, '_nexus_polyglot_quality_assessment');
}
If I hadn’t read the code, I would have encountered a bad surprise during testing, with critical data deleted from posts.
The correct approach should be:
If the user deletes a group, remove only the group reference.
if ($group_id) {
delete_post_meta($post_id, '_nexus_polyglot_group_id');
}
The feeling is the same in Vibe Coding as with chat tools like ChatGPT or Claude AI: it’s as if these tools are programmed to be overzealous, trying to give a sense of “I’ll give you more for your money” to users, whereas in reality, the result is often the opposite: misinformation, unreliability, and loss of trust.
In the end, like with any tool, it is imperative to learn and understand how it works, its behavior, and—funny enough—with LLMs as with humans, understand their character and hidden tendencies to better handle your interactions with them.