When to use Vibecode… AND WHEN NOT TO!
TLDR: Small microservices hosted on GitHub Pages: Yes.
SQL migration scripts: No!
Experiences you haven't had yourself aren't real.
What Vibecoding is suitable for
I also sell my posters through the “Support Your Local Artist” shop. When I receive an order, I get an email with a PDF. However, the shipping address is in the wrong place for me to use my document sleeves.
That’s why I coded the Address Mover. It lets you take the shipping address from the PDF and move it somewhere else.
You could also do this with Adobe Acrobat. But I really don’t feel like using Adobe Acrobat.
A simple microservice that has only one function and won't be further developed or expanded. Vibecoding is perfect for this.
What Vibecoding is not suitable for
In order to calculate shipping costs for international orders in my shop system, all product variants must be assigned to a shipping category. Since this adds up quickly, I thought I’d implement a coding solution instead of assigning everything manually in the CMS Control Panel.
The savvy programmer can already see the storm clouds on the horizon.
Craft CMS offers a migration feature that allows you to rewrite the database.

The PHP array that matches the product size with the shipping category
- No sooner said than done: Migration script coded with ClaudeAI
- Tested locally first, of course
- Checked on a random sample basis
- Everything's good, everything's great!
Deploy to Live (friday evening of course)
Then I ran the whole thing on the live system. And here, too, it seems to be working. Everything's great.
Error: 504 Gateway Timeout
2026-03-30 15:16:47 [web.ERROR] [TypeError] craft\commerce\services\LineItems::resolveLineItem(): Argument #2 (purchasableId) must be of type int, string given, called
The error message doesn't mean anything to me, but in any case, the website isn't working anymore, so I asked Claude what kind of error it is.
The Update Cart function is under a DDoS attack;
take immediate action!!
After searching and searching some more, I finally found the solution to the problem: Like most online stores, CraftCMS also has a donation feature. This feature was defined with a shipping category of zero because the migration script couldn’t assign this product. Since “Donation” is a special product—because it is not physical and does not even appear in my shop, but is included in the system by default—the entire site crashed because a product with a shipping category of zero cannot exist (unless you manually manipulate the database).
All work and no pay
Since I had, of course, made database backups beforehand, I was able to undo the whole thing without any problems and ended up assigning the shipping categories manually after all. To be honest, I didn’t really believe it would work.
Conclusion: Don’t use Vibe Coding in production systems, and definitely not with code you can’t read yourself.