{"slug": "vibe-coding-on-a-boilerplate-stop-your-agent-from-rebuilding-what-it-already-has", "title": "Vibe coding on a boilerplate: stop your agent from rebuilding what it already has", "summary": "GoVueKit ships an AGENTS.md file at the repository root that coding agents like Codex, Cursor, and Claude Code read natively, mapping existing capabilities such as internal/billing and internal/storage to their extension seams so agents extend rather than duplicate them. The map is enforced by a test, cmd/server/agents_test.go, that fails CI when an internal package is not documented, and the project backs it with 186 Go tests, 48 frontend tests, and 14 Playwright journeys. The developer concedes the harness does not guarantee good feature ideas or elegant code, only that it shrinks what needs reviewing.", "body_md": "Point a coding agent at a SaaS boilerplate and ask for \"premium plans with a\n\n14-day trial\". If the agent does not know that `internal/billing` exists,\n\nwhat you get back is impressive, plausible — and wrong: a second Stripe\n\nclient, a second webhook route, a `plans` table that duplicates one already\n\nserved by configuration. Everything compiles. Half of it is untested. You\n\nnow own two billing systems.\n\nThis is not a hallucination problem in the usual sense. The agent did not\n\ninvent an API; it invented *work*. And it invented it because nothing told\n\nit the work was already done.\n\nThe reflex is to prompt harder: \"use the existing billing code\". It helps\n\nonce. It does not survive the tenth session, the second agent, or the\n\nteammate who forgot the incantation. Instructions that live in chat\n\nhistory die with the chat.\n\nWhat survives is a file in the repository that every agent reads before\n\nwriting — if, and only if, that file cannot rot.\n\nGoVueKit ships `AGENTS.md` at the repository root — the file Codex, Cursor\n\nand their kind read natively; `CLAUDE.md` imports it, so Claude Code reads\n\nthe same one. It is not prose about being careful. It is a table:\n\n| capability | package | extend through | \n|---|---|---|\n| payments | `internal/billing` | `billing.Provider` | \n|  | `internal/email` | `email.Mailer` | \n| files | `internal/storage` | `storage.Storage` | \n| background jobs | `internal/jobs` | `Queue.Register` | \n| signup side effects | `internal/auth` | `OnUserCreated` | \n| roles & tenancy | `internal/http` | `RequireOrgRole` | \n\nwith one instruction above it: before writing anything, find it here.\n\n\"Premium plans\" now resolves to *configuration plus the existing provider seam*, because the map says so in the place the agent looks.\n\nThe map also carries the rules the codebase enforces (portable SQL,\n\n`organization_id` on every business query, webhooks idempotent, French and\n\nEnglish in step) and the chain a new feature follows — migration, queries,\n\ndomain package, handler, route, store, view, tests. An agent that knows\n\nthe chain produces a diff shaped like the codebase instead of a framework\n\nof its own.\n\nDocumentation drifts; that is why agents ignore it. GoVueKit's map is held\n\nby a test, `cmd/server/agents_test.go`, and the suite goes red when:\n\n`internal/` package exists that AGENTS.md does not mention — you\nadded code, you map it, or CI fails;`billing.Provider` cannot silently become something else.\nThe consequence is worth stating plainly: **if `make test` is green, what\nthe map says is true.** That is a property most documentation cannot claim,\n\nand it is the property that makes an agent's trust in the file rational.\n\nThe map narrows what the agent writes; the suites judge it. 186 Go tests\n\nrun on both PostgreSQL and SQLite, 48 frontend tests include a check that\n\nthe French and English catalogues define exactly the same keys, and 14\n\nPlaywright journeys drive the real production binary — including the\n\ncross-tenant request that must 404. An agent's diff that leaks tenant data\n\nor forgets a translation fails before you read it.\n\nFor the final look, the labs boots the whole product locally — SSO,\n\nuploads, checkout, email — from one file, with nothing to configure:\n\n```\ncurl -fsSLO https://govuekit.dev/labs/docker-compose.yml\ndocker compose up -d\n```\n\nThree concessions, because a harness is not magic.\n\nFirst, the map keeps an agent from rebuilding the foundation; it does not\n\nmake your feature idea good. An agent will faithfully implement a workflow\n\nyour users never asked for, tests green all the way.\n\nSecond, an agent can still write a *worse* version of something inside the\n\nright file. The seams tell it where; they do not guarantee elegance.\n\nReview stays your job — the harness only shrinks what needs reviewing.\n\nThird, this works partly because the kit is small: 19 Go packages, a\n\nschema in one migration file, an architecture that walks in ten minutes.\n\nA map over a sprawling framework would be a book, and agents do not read\n\nbooks. If you evaluate another starter for agent work, ask how much of it\n\nfits in a context window — and whether anything fails the build when its\n\ndocumentation lies.\n\n*Originally published on [govuekit.dev](https://govuekit.dev/blog/vibe-coding-saas-boilerplate). GoVueKit is a complete Go + Vue 3 SaaS codebase you buy once and own; the whole stack runs on your machine with one `docker compose up`: [https://govuekit.dev/labs](https://govuekit.dev/labs)*", "url": "https://wpnews.pro/news/vibe-coding-on-a-boilerplate-stop-your-agent-from-rebuilding-what-it-already-has", "canonical_source": "https://dev.to/benjy33000/vibe-coding-on-a-boilerplate-stop-your-agent-from-rebuilding-what-it-already-has-4g85", "published_at": "2026-09-15 07:13:31+00:00", "updated_at": "2026-09-15 07:31:57.662696+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["GoVueKit", "Codex", "Cursor", "Claude Code", "Stripe", "PostgreSQL"], "alternates": {"html": "https://wpnews.pro/news/vibe-coding-on-a-boilerplate-stop-your-agent-from-rebuilding-what-it-already-has", "markdown": "https://wpnews.pro/news/vibe-coding-on-a-boilerplate-stop-your-agent-from-rebuilding-what-it-already-has.md", "text": "https://wpnews.pro/news/vibe-coding-on-a-boilerplate-stop-your-agent-from-rebuilding-what-it-already-has.txt", "jsonld": "https://wpnews.pro/news/vibe-coding-on-a-boilerplate-stop-your-agent-from-rebuilding-what-it-already-has.jsonld"}}