How to fix it
- Decide which side is right, then change the other to match.
- Add one test that calls the route the way the UI does.
- Re-run the scan to confirm the pair now matches.
The agent edits the client in one prompt and the server in another. The button sends a POST, the route only accepts GET, both files compile, and nothing happens in production.
npx @neuralaxis/vibedoctor scan What it looks like
Type checks and unit tests usually look at one side at a time. A mismatch between the two only shows up when a real user clicks.
It is the most common way an AI-built feature is “done” and still does nothing.
await fetch("/api/user", { method: "POST" }); app.get("/api/user", (_req, res) => { Example: fixtures/flow-mismatch in the VibeDoctor repository.
What VibeDoctor reports
| Finding | Severity | Evidence | From |
|---|---|---|---|
| HTTP call has no matching backend route “POST /api/user has no matching server route.” The path exists, the method does not. | high | verified | flow-doctor |
| Route handler is not defined A route is wired to a function that is neither defined nor imported. | high | verified | flow-doctor |
| Unreachable handler in a route file A handler sits next to the routes but nothing calls it or routes to it. | medium | verified | flow-doctor |
Evidence grades say how sure the finding is. What verified, observed and heuristic mean →
How to fix it
What this check can’t see
Run it
npx @neuralaxis/vibedoctor scan
Runs locally on JavaScript, TypeScript and Python repos. Hand the result to Cursor,
Claude Code, Codex or Copilot with agent-plan.
Agent setup →