Most vibe-coded tools are not for you

Posted on May 6, 2026 · 4 min read

AI is inflicting a proliferation of tools, in the utensils’ sense. Folks are conjuring all sorts of programs out of thin air, unrestrained. Someone confessed on Hacker News to having created a hundred custom utilities. Linked to this increase is the promotional noise: Not a day passes without someone claiming they’ve made a tool to solve a fundamentally silly problem in some subreddit thanks to something they vibe coded overnight.

Something in this tooling inflation troubles me deeply. As someone who loves creating and tweaking docs tools, I wondered what’s wrong with thousands of people creating and sharing their own tools using AI. I know it’s not envy, for what’s to feel envious about in a heap of binaries nobody is going to use? Is it perhaps the sheer vulgarity of it, the fact that folks are now creating tools slop like they’re creating cheap art, music, and prose?

And then the answer came to me: Creating tools like that is offloading and encrypting ourselves into binary packets of mediocrity, devaluing tools and their aspirations. Tools created through AIs hurt my brain, I decided, because they’re often devoid of three fundamental qualities of good tools: universality, sociality, and finish. Incidentally, these are also the qualities I look for in good documentation and good products.

Good tools are universal and agnostic to your circumstances

A consequence of the LLM age is that everybody can build their own tools, for their own use cases, however niche they may be. That doesn’t necessarily mean that they’re tools for everybody. In fact, I’d argue that most of the tools created through LLMs on a whim are fire-and-forget, temporary artifacts generated to unceremoniously flatten some bump on a carpet of code. It’s a parade of patches, but patches are not products.

Tools can be a way of turning to action instead of reflection, especially if they’re automatic. In a way, thanks to AI, we’re making tools of ourselves (pun intended): Much like we do when we create agentic skills out of interesting sessions, we condense our thoughts and intent into code. The resulting tool will carry our cognitive fingerprint: To use it effectively, you must be attuned to the way its creator thought, which is neither ideal nor fair.

Good tools are social and open to everybody

A tool made in isolation, used in isolation, and forgotten in isolation, never enters the social fabric that gives tools their meaning. It’s a private utterance in a language no one else speaks. The hundred-tools developer is talking to themselves in a hundred different dialects. Good tools are outward looking. Tools made in haste using LLMs often are exercises in navel gazing, self-focused monologues of code. They’re asocial.

What makes tools social is a subtle combination of affordances, community participation, and the dialectic exchange between users and developers. Tools improve over time through the back and forth between consumers and creators. And great tools go to great lengths to communicate well, in a way that’s comprehensible to intended users. The personal tool you vibe coded last night is quite possibly hermetic and elusive to others.

Good tools feel finished, or at least complete

If current software already feels unfinished, tool generation through LLMs increases the feeling of unfinishedness even more: Everything is temporary and ephemeral. As long as it runs, it does its job, only to be forgotten in some public GitHub repo, to the point that the future could be one of code generated on the fly, without any guarantee of human touch. In my mind, this is a demoscene gone wrong, a display devoid of prowess and taste.

The lack of finish also means that tools are not thoughtfully designed, which makes their evolution improbable. A good tool can be refined, expanded, modularized, perhaps even merged with another tool. A thoughtful tool invites its own evolution; a careless one resists it. When you can’t tell where a tool’s boundaries are, it can’t grow. Finish, here, is the difference between a building with foundations and a tent you’ll abandon after a week.

Craft, care, and intent are not included

Some of the best tools in history started as scratches-for-an-itch projects. They became universal because someone cared enough to finish and socialize them. For the stuff we create using LLMs to become tools, a README file and a catchy GitHub project name are not enough: We ought to ask ourselves whether what we’ve made can survive contact with someone else’s problem, and whether we’d trust it enough to maintain it.

I’m not saying here that you shouldn’t build tools. Make them, announce them. The barrier to entry for creators has disintegrated, which is good. But also bear in mind the noise you risk producing, which is not always self-regulating. When you create a tool, you’re making art of a sort: you should contribute a meaningful verse. The difference between bad and good art, between bad and good tools, is craft, care, and intent.