<?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: VibeFoundry</title>
    <description>The latest articles on DEV Community by VibeFoundry (@avivgerzhue).</description>
    <link>https://dev.to/avivgerzhue</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4234054%2Fd164f5b5-2e54-4969-b214-26a20b6910d6.png</url>
      <title>DEV Community: VibeFoundry</title>
      <link>https://dev.to/avivgerzhue</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avivgerzhue"/>
    <language>en</language>
    <item>
      <title>Before you push AI-generated code to prod, run these 3 open-source tools:</title>
      <dc:creator>VibeFoundry</dc:creator>
      <pubDate>Mon, 09 Nov 2026 22:48:27 +0000</pubDate>
      <link>https://dev.to/avivgerzhue/before-you-push-ai-generated-code-to-prod-run-these-3-open-source-tools-jnl</link>
      <guid>https://dev.to/avivgerzhue/before-you-push-ai-generated-code-to-prod-run-these-3-open-source-tools-jnl</guid>
      <description>&lt;p&gt;&lt;strong&gt;🎨 UI DNA:&lt;/strong&gt; npx -y unslop-mcp@latest init&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛡️ Security Audit:&lt;/strong&gt; npx -y @vibefoundry/vibe-shield@latest scan .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👻 Browser QA:&lt;/strong&gt; npx -y ghost-qa@latest init&lt;/p&gt;

&lt;p&gt;Link for my Profile:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://github.com/avivgerz-hue" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F234205358%3Fv%3D4%3Fs%3D400" height="420" class="m-0" width="420"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://github.com/avivgerz-hue" rel="noopener noreferrer" class="c-link"&gt;
            avivgerz-hue (VibeFoundry) · GitHub
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            avivgerz-hue has 9 repositories available. Follow their code on GitHub.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg" width="32" height="32"&gt;
          github.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>security</category>
    </item>
    <item>
      <title>I scanned 8 newly shipped Next.js + Supabase AI repos on GitHub - 5 scored an F (288 security findings)</title>
      <dc:creator>VibeFoundry</dc:creator>
      <pubDate>Sun, 08 Nov 2026 20:15:49 +0000</pubDate>
      <link>https://dev.to/avivgerzhue/i-scanned-8-newly-shipped-nextjs-supabase-ai-repos-on-github-5-scored-an-f-288-security-51m0</link>
      <guid>https://dev.to/avivgerzhue/i-scanned-8-newly-shipped-nextjs-supabase-ai-repos-on-github-5-scored-an-f-288-security-51m0</guid>
      <description>&lt;p&gt;Today I ran a security scanner across 8 recently updated &lt;strong&gt;Next.js + Supabase + OpenAI&lt;/strong&gt; repositories on GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Results:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;6 out of 8 repos (75%)&lt;/strong&gt; had real security vulnerabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 out of 8 scored a Grade F.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;288 total security issues&lt;/strong&gt; across just 8 projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Top 3 Mistakes AI Coding Agents Make:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No Row Level Security (RLS):&lt;/strong&gt; AI writes &lt;code&gt;CREATE TABLE&lt;/code&gt; in Supabase migrations, but forgets &lt;code&gt;ENABLE ROW LEVEL SECURITY&lt;/code&gt;—or silences errors with &lt;code&gt;USING (true)&lt;/code&gt;. Anyone can dump or wipe the database from Chrome DevTools using &lt;code&gt;NEXT_PUBLIC_SUPABASE_ANON_KEY&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unprotected API Routes:&lt;/strong&gt; AI creates Next.js &lt;code&gt;POST&lt;/code&gt; and &lt;code&gt;DELETE&lt;/code&gt; routes with zero session check, or trusts &lt;code&gt;userId&lt;/code&gt; from &lt;code&gt;req.json()&lt;/code&gt; instead of the server session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leaked Client Keys:&lt;/strong&gt; Putting secret keys into &lt;code&gt;NEXT_PUBLIC_&lt;/code&gt; or &lt;code&gt;VITE_&lt;/code&gt; variables.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Test Your Own Repo in 3 Seconds
&lt;/h3&gt;

&lt;p&gt;I built three free, open-source tools for Claude Code and Cursor that run 100% locally on your machine:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Vibe-Shield v2.0 (85-Rule Security Scanner &amp;amp; Attack-Surface Mapper)
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx -y @vibefoundry/vibe-shield@latest scan .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/avivgerz-hue" rel="noopener noreferrer"&gt;
        avivgerz-hue
      &lt;/a&gt; / &lt;a href="https://github.com/avivgerz-hue/vibe-shield" rel="noopener noreferrer"&gt;
        vibe-shield
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      60-rule static security scanner, MCP server &amp;amp; skill poisoning auditor for AI-generated codebases (Claude Code, Codex, Cursor).
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🛡️ vibe-shield&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The security gate for AI-written code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your agent ships fast. It also ships &lt;code&gt;NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY&lt;/code&gt;, a &lt;code&gt;DELETE&lt;/code&gt; route with no session check, and a &lt;code&gt;CREATE TABLE&lt;/code&gt; with no Row Level Security — because it was optimising for "it works".&lt;/p&gt;

&lt;p&gt;vibe-shield is a &lt;strong&gt;static security scanner built for that failure mode&lt;/strong&gt;, plus an &lt;strong&gt;Agent Skill&lt;/strong&gt; that makes Claude Code, Codex, Cursor and Windsurf audit before they say &lt;em&gt;"done"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@vibefoundry/vibe-shield" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0508b98d12fd18881fa813d8cb996f25470235853ef5e4d9dff9bfe4637aff2f/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f4076696265666f756e6472792f766962652d736869656c642e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@vibefoundry/vibe-shield" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9ef1b2cf508cfff0b7468d07935fd0f5d841691f3cbe286ded0e5ffacc758266/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f4076696265666f756e6472792f766962652d736869656c642e737667" alt="npm downloads"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/vibe-shield/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c207b1e3653d90fb5e2e63159578750812922be9e8d8804d0ab2ff5e39cd6bad/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f617669766765727a2d6875652f766962652d736869656c642f63692e796d6c3f6272616e63683d6d61696e267374796c653d666c61742d737175617265266c6f676f3d676974687562616374696f6e73266c6162656c3d4349" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/vibe-shield#-requirements" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/09eac7aec60251d150f8e9a26759d649a539d177466ff63488d959da92b92f64/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6f64652d25453225383925413531382e31372e302d3566613034653f7374796c653d666c61742d737175617265266c6f676f3d6e6f6465646f746a73" alt="node"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/vibe-shield/./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b6cdac3bed3baa1f49545c6c4db4d59a73050f3493342c763062b5f082befafc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f617669766765727a2d6875652f766962652d736869656c643f7374796c653d666c61742d73717561726526636f6c6f723d626c7565" alt="license"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/vibe-shield/./package.json" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2c2457b86576a8439f9b6a7cc78760d381b194cb9fd91924c31fed0b6c608e75/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72756e74696d65253230646570732d302d627269676874677265656e3f7374796c653d666c61742d737175617265" alt="zero dependencies"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/vibe-shield/./src/scanner/rules" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fa940e6467e29973113995390eb3cb56ca0946f28cf4336ebd0320e9e89dbb84/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646574656374696f6e2532307369676e6174757265732d39312d3862356366363f7374796c653d666c61742d737175617265" alt="rules"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/vibe-shield#-it-scans-itself" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/967a43617b55ec4d76e2a053fbfbae13c678903ac0b7a6ba961ad90e2b6067a7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73656c662d2d7363616e2d313030253246313030253230412532422d3136613334613f7374796c653d666c61742d737175617265" alt="self-scan"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npx -y @vibefoundry/vibe-shield scan&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/avivgerz-hue/vibe-shield/./assets/hero-terminal.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Favivgerz-hue%2Fvibe-shield%2FHEAD%2F.%2Fassets%2Fhero-terminal.svg" alt="vibe-shield terminal preview"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;v2.0.0: eight defensive vectors&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The v2 catalogue covers client exposure; auth and route protection; database/RLS; AI and web sinks; infrastructure; dependency hygiene; secrets and cryptography; and agent/MCP integrity. The new hardening checks include production source maps, insecure JWT settings, explicit and omitted cookie flags, locally absent security headers, container users, lifecycle scripts, lockfiles and weak cryptography. Run &lt;code&gt;rules&lt;/code&gt; for the complete catalogue.&lt;/p&gt;
&lt;p&gt;The scanner produces a heuristic &lt;strong&gt;attack-surface inventory&lt;/strong&gt; of route methods, observed guard signals…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/avivgerz-hue/vibe-shield" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  2. Unslop v2.0 (72-Rule Anti-AI-Slop UI Linter &amp;amp; 10 Design Token Systems)
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx -y unslop-mcp@latest audit ./src
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/avivgerz-hue" rel="noopener noreferrer"&gt;
        avivgerz-hue
      &lt;/a&gt; / &lt;a href="https://github.com/avivgerz-hue/unslop" rel="noopener noreferrer"&gt;
        unslop
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Studio-grade UI design systems, Design DNA extractor &amp;amp; Anti-Slop MCP server for AI coding agents (Claude Code, Codex, Cursor, Windsurf).
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;unslop v2.0.0&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Your agent can write the code. unslop gives it a measurable design engineering protocol.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/unslop-mcp" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/511016941788636bd1a1cadcc7ab087e0e7ee2f71e6ce058224427b4584237c7/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f756e736c6f702d6d63702e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/unslop-mcp" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e39eda783d92d855f4809b1d5ad918027ca425c7d62e824d33e3dca31a46e35f/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f756e736c6f702d6d63702e737667" alt="npm downloads"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/unslop/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/avivgerz-hue/unslop/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/eccc84a3ac1662759ff490d15a7521327cf4a4ccfde707da30125ec2355bb2b9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6f64652d25334525334432302e31392d336338373361" alt="Node.js 20.19+"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/unslop/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/69ddf80bd59ce4919aab829d1bdf4c9d774194215cdbe6afd8b173346b511ce3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d313131313131" alt="MIT license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/avivgerz-hue/unslop/./assets/hero-preview.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Favivgerz-hue%2Funslop%2FHEAD%2F.%2Fassets%2Fhero-preview.svg" alt="unslop preview"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;unslop&lt;/code&gt; is a zero-runtime-dependency &lt;strong&gt;UI/UX Design Engineering CLI, native MCP Server, and AI Agent Skill&lt;/strong&gt;. It audits 72 rules across seven design craft pillars, installs ten studio-grade archetypes, extracts Design DNA, exports four token formats, and turns every finding into an exact, prioritized transformation blueprint for JSX/TSX, HTML, Vue, Svelte, CSS, and Tailwind codebases.&lt;/p&gt;
&lt;p&gt;Works with &lt;strong&gt;Claude Code, OpenAI Codex, Cursor, Windsurf, Cline&lt;/strong&gt;, and any agent that reads project instructions.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/avivgerz-hue/unslop/main/docs/assets/before-after-unslop.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Favivgerz-hue%2Funslop%2Fmain%2Fdocs%2Fassets%2Fbefore-after-unslop.png" alt="Before and after unslop: a generic purple-gradient AI landing page transformed into a precise, token-driven Linear Dark dashboard"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npx -y unslop-mcp init --preset linear-precision
npx -y unslop-mcp audit &lt;span class="pl-c1"&gt;.&lt;/span&gt;
npx -y unslop-mcp refactor-plan &lt;span class="pl-c1"&gt;.&lt;/span&gt; --report UNSLOP-REPORT.md&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The result is not a generic prompt. It is a versioned token contract, a &lt;strong&gt;Design Craft Score from 0–100&lt;/strong&gt;, a seven-pillar scorecard, exact before/after translations, and file-level steps your agent can execute in one coherent pass.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;v2 at a glance&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;v2 contract&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/avivgerz-hue/unslop" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  3. Ghost-QA v2.0 (8-Trap Headless Browser QA for Desktop &amp;amp; Mobile)
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx -y ghost-qa@latest test http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/avivgerz-hue" rel="noopener noreferrer"&gt;
        avivgerz-hue
      &lt;/a&gt; / &lt;a href="https://github.com/avivgerz-hue/ghost-qa" rel="noopener noreferrer"&gt;
        ghost-qa
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Autonomous headless browser QA &amp;amp; self-healing verification loop for AI coding agents
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;👻 ghost-qa&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Autonomous headless browser QA &amp;amp; self-healing verification loop for coding agents.&lt;/strong&gt; &lt;code&gt;v2.0.0&lt;/code&gt; — the 8-Trap Deep Browser Inspection Engine: 3 viewports × light/dark, QA Health Score (A+…F), interactive HTML dashboard, and regression diffing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/avivgerz-hue/ghost-qa/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/avivgerz-hue/ghost-qa/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/ghost-qa" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e406adf2de423e34a10c2e195662618e33c5f3aa5759942e055efb9c52d31341/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f67686f73742d71612e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/ghost-qa" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e47fb75ff10d7e50d809a22f26a1e9794b15f3d66059027ea9611b4d57a0c6ec/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f67686f73742d71612e737667" alt="npm downloads"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avivgerz-hue/ghost-qa/./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://nodejs.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/231f67d029e8c6bc6169854de7d236401b640e8a31409f14c857832e0f6d1c96/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6f64652d25334525334432302d627269676874677265656e2e737667" alt="Node &gt;= 20"&gt;&lt;/a&gt;
&lt;a href="https://playwright.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b49beb590264116690daca403d50018e4b49c7421428cad982d718151f0fc380/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f776572656425323062792d506c61797772696768742d3435626134622e737667" alt="Powered by Playwright"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/avivgerz-hue/ghost-qa/./assets/hero-terminal.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Favivgerz-hue%2Fghost-qa%2FHEAD%2F.%2Fassets%2Fhero-terminal.svg" alt="ghost-qa terminal preview"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Coding agents (Claude Code, Codex, Cursor, Windsurf) write code &lt;strong&gt;blind&lt;/strong&gt; — then declare victory while the actual browser has React hydration errors, broken buttons, 500ing APIs, or mobile layout overflow.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ghost-qa&lt;/code&gt; fixes that. One command launches a headless browser against your running app, crawls the live DOM, safely pokes every button, traps runtime/network/layout failures, and hands the agent a structured &lt;strong&gt;Self-Healing Bug Report&lt;/strong&gt; so it fixes its own bugs &lt;em&gt;before&lt;/em&gt; telling you it's done.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npx -y ghost-qa &lt;span class="pl-c1"&gt;test&lt;/span&gt; http://localhost:3000&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;No test scripts. No config. No mercy for "it works on my machine".&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Prefer running straight from GitHub instead of npm? &lt;code&gt;npx -y github:avivgerz-hue/ghost-qa test http://localhost:3000&lt;/code&gt; works identically — every command in this README accepts either…&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/avivgerz-hue/ghost-qa" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you run the command on your repo, drop your Grade (&lt;code&gt;A+&lt;/code&gt; to &lt;code&gt;F&lt;/code&gt;) in the comments!&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdputyfh7rlwpmom8s7lq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdputyfh7rlwpmom8s7lq.png" alt=" " width="800" height="773"&gt;&lt;/a&gt;&lt;/p&gt;

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