<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: VibeDoctor.io</title>
    <description>The latest articles on DEV Community by VibeDoctor.io (@vibedoctor_io).</description>
    <link>https://dev.to/vibedoctor_io</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3853311%2F66bc59e9-6aa5-4b17-a404-5d6bc9647be2.png</url>
      <title>DEV Community: VibeDoctor.io</title>
      <link>https://dev.to/vibedoctor_io</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vibedoctor_io"/>
    <language>en</language>
    <item>
      <title>I scanned the most famous AI coding repos on GitHub. Here's what I found</title>
      <dc:creator>VibeDoctor.io</dc:creator>
      <pubDate>Sat, 11 Apr 2026 22:15:35 +0000</pubDate>
      <link>https://dev.to/vibedoctor_io/i-scanned-the-most-famous-ai-coding-repos-on-github-heres-what-i-found-469l</link>
      <guid>https://dev.to/vibedoctor_io/i-scanned-the-most-famous-ai-coding-repos-on-github-heres-what-i-found-469l</guid>
      <description>&lt;p&gt;I built VibeDoctor, a scanner for AI-generated code. It looks for the stuff generic scanners miss - hallucinated imports, XSS patterns specific to AI output, N+1 queries in agent loops, memory leaks from copy-pasted React hooks.&lt;/p&gt;

&lt;p&gt;Once I had it working, I had to know: how does the code from the tools everyone is using actually hold up? So I pointed it at three of the biggest AI coding repos on GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  The leaderboard
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;open-lovable&lt;/strong&gt; (Firecrawl): 50/100, 190 issues, 24 critical&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;devika&lt;/strong&gt;: 66/100, 81 issues, 16 critical&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;bolt.new&lt;/strong&gt; (StackBlitz): 64/100, 77 issues, 0 critical security findings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not a single one cleared 70. The tools millions of people are using to ship production apps are themselves scoring "poor" to "fair" on the patterns they generate.&lt;/p&gt;

&lt;p&gt;Let me show you the specific things that stood out.&lt;/p&gt;

&lt;h2&gt;
  
  
  open-lovable: 22 XSS vectors in one repo
&lt;/h2&gt;

&lt;p&gt;open-lovable is Firecrawl's open-source Lovable clone. It's a great project and I like the team. But the scanner found 22 separate XSS vectors, mostly &lt;code&gt;dangerouslySetInnerHTML&lt;/code&gt; and direct &lt;code&gt;innerHTML&lt;/code&gt; assignments across ASCII animation components, tooltips, and the main generation page.&lt;/p&gt;

&lt;p&gt;It also found 4 unbounded &lt;code&gt;while&lt;/code&gt; loops with &lt;code&gt;.push()&lt;/code&gt; inside the &lt;code&gt;apply-ai-code&lt;/code&gt; route. No break, no limit, no max iterations. If the AI response ever loops, the Node process runs out of memory.&lt;/p&gt;

&lt;p&gt;And one file, &lt;code&gt;app/generation/page.tsx&lt;/code&gt;, is 3,958 lines long. A single function, &lt;code&gt;AISandboxPage&lt;/code&gt;, is 3,888 of those lines. This is what AI-assisted development produces when nobody stops to refactor.&lt;/p&gt;

&lt;p&gt;Report: &lt;a href="https://app.vibedoctor.io/shared/fb2ce6f3-c32f-4f6a-9af4-e43fb0ac698b" rel="noopener noreferrer"&gt;https://app.vibedoctor.io/shared/fb2ce6f3-c32f-4f6a-9af4-e43fb0ac698b&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  devika: the agent loop is doing N+1 queries
&lt;/h2&gt;

&lt;p&gt;devika was a viral AI developer agent that hit 18k stars in its first week. The scanner found 5 separate N+1 query patterns inside &lt;code&gt;src/agents/agent.py&lt;/code&gt; and &lt;code&gt;src/agents/runner/runner.py&lt;/code&gt;. Every iteration of the reasoning loop fires off individual database queries instead of batching. On a long agent run this is brutal.&lt;/p&gt;

&lt;p&gt;It also has a hardcoded &lt;code&gt;api_key="no..."&lt;/code&gt; in &lt;code&gt;src/llm/lm_studio_client.py:12&lt;/code&gt;. Placeholder or not, that pattern gets copied into forks and nobody notices when someone swaps in a real key.&lt;/p&gt;

&lt;p&gt;Zero test files for 86 source files. The &lt;code&gt;requirements.txt&lt;/code&gt; has 33 unpinned dependencies. No lock file.&lt;/p&gt;

&lt;p&gt;Report: &lt;a href="https://app.vibedoctor.io/shared/62e9432d-0786-4a00-9ff4-243571b8bb22" rel="noopener noreferrer"&gt;https://app.vibedoctor.io/shared/62e9432d-0786-4a00-9ff4-243571b8bb22&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  bolt.new: clean code, dirty dependencies
&lt;/h2&gt;

&lt;p&gt;Here's the plot twist. bolt.new scored best of the three on the code itself. Zero critical security findings in their own code. Good structure, reasonable function lengths, proper Remix patterns.&lt;/p&gt;

&lt;p&gt;But their &lt;code&gt;package.json&lt;/code&gt; is pinning &lt;code&gt;react-router@6.24.1&lt;/code&gt;, which has four separate CVEs against it right now including path traversal and SSR XSS. Plus &lt;code&gt;svelte@4.2.18&lt;/code&gt; (three CVEs), &lt;code&gt;nanoid@3.3.6&lt;/code&gt;, &lt;code&gt;jsondiffpatch@0.6.0&lt;/code&gt;. None of these are bolt.new's fault, they're supply chain. But they ship with every user's generated project until someone updates.&lt;/p&gt;

&lt;p&gt;This is the hardest problem in vibe coding and nobody is solving it: the AI tool generates clean code, pins an old dependency it was trained on, and every app built with it inherits the CVE.&lt;/p&gt;

&lt;p&gt;Report: &lt;a href="https://app.vibedoctor.io/shared/77e28919-a345-4743-b982-cf943295fed2" rel="noopener noreferrer"&gt;https://app.vibedoctor.io/shared/77e28919-a345-4743-b982-cf943295fed2&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The meta-point
&lt;/h2&gt;

&lt;p&gt;AI coding tools are trained on code, then they generate code in the patterns of that training data. When the reference implementations have XSS, N+1s, god files, and stale dependencies, every app built with them starts from that baseline. Generic scanners don't know to look for the AI-specific patterns. Human reviewers don't read 3,888-line functions.&lt;/p&gt;

&lt;p&gt;Something has to catch this before it ships. Right now almost nothing does.&lt;/p&gt;

&lt;p&gt;Firecrawl, StackBlitz, and the devika team are shipping at a pace most of us can't match. None of this is a dunk. It's a pattern worth naming because the apps built with these tools inherit it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on your own code
&lt;/h2&gt;

&lt;p&gt;VibeDoctor is free for your first scan. Connect your GitHub, pick a repo, get a report like the ones above. Signup required, scan is free: &lt;a href="https://vibedoctor.io" rel="noopener noreferrer"&gt;https://vibedoctor.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're from Firecrawl, StackBlitz, or the devika team and want to chat about any specific finding, &lt;a href="mailto:911@vibedoctor.io"&gt;911@vibedoctor.io&lt;/a&gt;. Happy to be wrong on specifics and I'll update the post.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I scanned my vibe-coded SaaS with every tool I could find. Here's what they all missed.</title>
      <dc:creator>VibeDoctor.io</dc:creator>
      <pubDate>Tue, 31 Mar 2026 11:08:13 +0000</pubDate>
      <link>https://dev.to/vibedoctor_io/i-scanned-my-vibe-coded-saas-with-every-tool-i-could-find-heres-what-they-all-missed-3fd4</link>
      <guid>https://dev.to/vibedoctor_io/i-scanned-my-vibe-coded-saas-with-every-tool-i-could-find-heres-what-they-all-missed-3fd4</guid>
      <description>&lt;p&gt;I build fast. Like most founders using Bolt, Lovable, and Cursor - &lt;br&gt;
I ship first and think later.&lt;/p&gt;

&lt;p&gt;Last month I pushed 40+ commits to my SaaS. &lt;br&gt;
I had no idea what was actually breaking with each one.&lt;/p&gt;

&lt;p&gt;Not until I built something to tell me.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem with vibe coding at speed
&lt;/h2&gt;

&lt;p&gt;When you're prompting an AI to build your app, you're not reading &lt;br&gt;
every line it writes. Nobody is. That's the point.&lt;/p&gt;

&lt;p&gt;But here's what happens in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Commit 1: AI adds auth. Looks fine.&lt;/li&gt;
&lt;li&gt;Commit 7: AI refactors a helper. Accidentally exposes an API route.&lt;/li&gt;
&lt;li&gt;Commit 23: AI installs a package. It has 3 known CVEs.&lt;/li&gt;
&lt;li&gt;Commit 31: AI adds logging. Now you're logging user emails to console.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't see any of this. Your users might.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I tried first
&lt;/h2&gt;

&lt;p&gt;I ran my app through the usual suspects:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lighthouse&lt;/strong&gt; - Told me my performance score. Useful, but it's &lt;br&gt;
a snapshot. Doesn't tell me what commit caused the regression.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snyk&lt;/strong&gt; - Great for dependency CVEs. Misses everything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Dependabot&lt;/strong&gt; - Only catches known CVE packages. Silent &lt;br&gt;
on everything AI introduces structurally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual PR review&lt;/strong&gt; - I'm a solo founder. Who am I reviewing with?&lt;/p&gt;

&lt;p&gt;None of these answered the one question I actually cared about:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What did my last push break?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What I actually needed
&lt;/h2&gt;

&lt;p&gt;After every commit, I want to know:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Did this push introduce a new security issue?&lt;/li&gt;
&lt;li&gt;Did my score go up or down vs the last scan?&lt;/li&gt;
&lt;li&gt;What are the top 3 things I should fix right now?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Not a 200-line SAST report. Not a generic "you have 47 warnings." &lt;br&gt;
Just - what changed, what broke, what do I fix first.&lt;/p&gt;




&lt;h2&gt;
  
  
  What VibeDoctor showed me
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhaimvlcz4dyw0dd0adp9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhaimvlcz4dyw0dd0adp9.png" alt=" " width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built VibeDoctor (vibedoctor.io) to answer exactly this.&lt;/p&gt;

&lt;p&gt;Here's what a real scan of my own app surfaced:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; 3 Anthropic API keys and a Stripe token committed &lt;br&gt;
to test files. Low severity because they're test files - but &lt;br&gt;
still embarrassing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance:&lt;/strong&gt; LCP 4.3s. TTI 8.3s. My own landing page &lt;br&gt;
was loading like it's 2009.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Health:&lt;/strong&gt; 1,575 total issues. 71 Critical. 2 Blockers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe Coding Health Score: 7/100. CRITICAL.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That last one stings because it's my own product.&lt;/p&gt;

&lt;p&gt;But the part that changed how I work?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The push scan.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every time I push a commit, VibeDoctor runs automatically and &lt;br&gt;
shows me a before/after:&lt;/p&gt;

&lt;p&gt;Score before push: 71 | Score after push:  64&lt;br&gt;
New issues introduced: 4 | Fixed: 1&lt;br&gt;
Still open: 847&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F333pygngozm4qrefy6ka.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F333pygngozm4qrefy6ka.png" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's the thing no other tool was giving me. Not just &lt;br&gt;
"here's your health score" - but "here's what THIS push did."&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters for vibe coders specifically
&lt;/h2&gt;

&lt;p&gt;When you're using Bolt or Lovable, you're not the one writing &lt;br&gt;
the code. You're directing it.&lt;/p&gt;

&lt;p&gt;That means bugs don't look like bugs. They look like features.&lt;/p&gt;

&lt;p&gt;AI doesn't hallucinate in obvious ways. It halluccinates in &lt;br&gt;
subtle ones - importing packages that don't exist, leaving &lt;br&gt;
console.logs with sensitive data, building SQL queries from &lt;br&gt;
raw user input.&lt;/p&gt;

&lt;p&gt;These aren't the things Lighthouse catches. These aren't even &lt;br&gt;
things a senior dev reviewer always catches on a fast PR.&lt;/p&gt;

&lt;p&gt;You need something scanning specifically for what AI coding &lt;br&gt;
tools tend to get wrong.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 5 things AI coders miss most often
&lt;/h2&gt;

&lt;p&gt;After scanning dozens of vibe-coded repos, here's what comes &lt;br&gt;
up constantly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hardcoded secrets&lt;/strong&gt; - API keys, tokens, passwords in source code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucinated imports&lt;/strong&gt; - packages the AI invented that don't exist&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exposed API routes&lt;/strong&gt; - endpoints with no auth that AI forgot to protect&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;N+1 queries&lt;/strong&gt; - database calls inside loops that will destroy you at scale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency CVEs&lt;/strong&gt; - AI picks popular packages, not necessarily safe ones&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're building on Bolt, Lovable, Cursor, or v0 - run a scan &lt;br&gt;
before you show it to anyone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;VibeDoctor.io is free to scan. Sign up at vibedoctor.io, connect &lt;br&gt;
your GitHub repo, and get your score in under 5 minutes.&lt;/p&gt;

&lt;p&gt;If your vibe coding health score is above 60, I'll be genuinely &lt;br&gt;
impressed.&lt;/p&gt;

&lt;p&gt;Most aren't.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
