<?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>Forem: Lisa McCormack</title>
    <description>The latest articles on Forem by Lisa McCormack (@lisa_mccormack_898a722474).</description>
    <link>https://forem.com/lisa_mccormack_898a722474</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%2F3824730%2Ff2c8a0b0-3c75-498a-8f2a-3bab8b979d86.jpg</url>
      <title>Forem: Lisa McCormack</title>
      <link>https://forem.com/lisa_mccormack_898a722474</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/lisa_mccormack_898a722474"/>
    <language>en</language>
    <item>
      <title>Introducing clean-vibe — AI Clean Code scanner for GitHub repos</title>
      <dc:creator>Lisa McCormack</dc:creator>
      <pubDate>Sun, 15 Mar 2026 02:04:05 +0000</pubDate>
      <link>https://forem.com/lisa_mccormack_898a722474/introducing-clean-vibe-ai-clean-code-scanner-for-github-repos-fj7</link>
      <guid>https://forem.com/lisa_mccormack_898a722474/introducing-clean-vibe-ai-clean-code-scanner-for-github-repos-fj7</guid>
      <description>&lt;p&gt;Every codebase accumulates debt. Not the big architectural decisions — those get debated in PRs. The quiet stuff. The function that does three things. The variable named d. The catch block that swallows errors silently. The magic number buried in a conditional.&lt;br&gt;
Martin's Clean Code has been the standard reference for over fifteen years. Most developers have read it — or at least know they should have. But reading the book and consistently applying its principles across a 50,000-line codebase are very different things.&lt;br&gt;
clean-vibe closes that gap.&lt;/p&gt;

&lt;p&gt;"Leave the code cleaner than you found it." — Robert C. Martin, Clean Code&lt;/p&gt;

&lt;p&gt;How it works&lt;br&gt;
Connect any GitHub repository — public or private — paste in your GitHub token and Anthropic API key, and clean-vibe fetches the full file tree. It estimates scan time per directory so you can run in batches rather than waiting for a monorepo to finish overnight.&lt;/p&gt;

&lt;p&gt;Full repo traversal — fetches every scannable file via GitHub API, skips lockfiles, dist, maps, and generated code automatically&lt;br&gt;
Two-pass AI analysis — Haiku for fast full-coverage scanning, Sonnet for deep blocker analysis with root cause and refactored examples&lt;br&gt;
Session persistence — results saved to localStorage after every file, scan a directory today and another tomorrow, merge into one report&lt;br&gt;
Markdown export — download the full report as a .md file at any point, paste it into a PR, a ticket, or a team retrospective&lt;/p&gt;

&lt;p&gt;Three levels of severity&lt;br&gt;
Not all violations are equal. A magic number in a config file is not the same as a catch block that silently swallows errors in a health data platform. clean-vibe sorts accordingly.&lt;br&gt;
blocker — Must fix before merge. Dangerous, incorrect, or violates a hard rule. Will cause real bugs or silent failures in production.&lt;br&gt;
warning — Should fix soon. Clear Clean Code violation that degrades maintainability, obscures intent, or makes the next developer's job harder.&lt;br&gt;
suggestion — Worth considering. Naming or structural improvement. Small changes that compound over time into a significantly cleaner codebase.&lt;br&gt;
What it actually finds&lt;br&gt;
Here's a real example. A function that looks fine at a glance:&lt;br&gt;
js// ✗ before&lt;br&gt;
async function proc(d, t) {&lt;br&gt;
  // process the data&lt;br&gt;
  if (d &amp;amp;&amp;amp; t === true) {&lt;br&gt;
    try {&lt;br&gt;
      await save(d);&lt;br&gt;
    } catch(e) {&lt;br&gt;
      console.error(e);&lt;br&gt;
    }&lt;br&gt;
  } else {&lt;br&gt;
    return -1;&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
ts// ✓ after&lt;br&gt;
async function saveIfActive(&lt;br&gt;
  record: Record,&lt;br&gt;
  isActive: boolean&lt;br&gt;
): Promise {&lt;br&gt;
  if (!isActive) return;&lt;br&gt;
  try {&lt;br&gt;
    await saveRecord(record);&lt;br&gt;
  } catch (error) {&lt;br&gt;
    showError('Could not save record.');&lt;br&gt;
    throw error;&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
The violations: cryptic parameter names (d, t), a flag argument, a silent catch, an error code return, and a comment describing what the code already says. Five violations in eight lines — none of them obvious without a systematic review.&lt;br&gt;
The two-pass model&lt;br&gt;
Speed matters when you're scanning hundreds of files. clean-vibe uses Claude Haiku for the first pass — fast, cheap, covering every file. The cost for a 200-file repo is roughly $0.15.&lt;br&gt;
After the Haiku pass, any file with blocker-level violations gets a second pass with Claude Sonnet. Sonnet does what Haiku can't: root cause analysis, code smell categorization from Martin's taxonomy, and a concrete refactored example showing the correct approach. This is where the report goes from a list of complaints to an actionable improvement plan.&lt;br&gt;
Zero dependencies. Zero build step.&lt;br&gt;
clean-vibe is a single index.html file. No npm install, no webpack, no server. Open it locally or serve it from any static host. Your API keys stay in your browser — they never pass through any server except Anthropic's and GitHub's directly.&lt;br&gt;
bashgit clone &lt;a href="https://github.com/Triple-Moon-Goddess/clean-vibe.git" rel="noopener noreferrer"&gt;https://github.com/Triple-Moon-Goddess/clean-vibe.git&lt;/a&gt;&lt;br&gt;
open clean-vibe/index.html&lt;br&gt;
Free for non-commercial use&lt;br&gt;
If you're using clean-vibe for personal projects, learning, or open source work — it's free, forever, no account required. Bring your own Anthropic API key and GitHub token.&lt;br&gt;
Commercial use requires a license. Three tiers: Individual ($100/year), Team up to 10 developers ($500/year), and Organization unlimited seats ($1,500/year).&lt;/p&gt;

&lt;p&gt;Try it on your codebase → triple-moon-goddess.github.io/clean-vibe&lt;br&gt;
GitHub → Triple-Moon-Goddess/clean-vibe&lt;/p&gt;

</description>
      <category>cleancode</category>
      <category>ai</category>
      <category>github</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
