<?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: PersonofNote</title>
    <description>The latest articles on DEV Community by PersonofNote (@personofnote).</description>
    <link>https://dev.to/personofnote</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%2F3339738%2Fa3209c28-c982-4518-befa-af8a73d1b88c.png</url>
      <title>DEV Community: PersonofNote</title>
      <link>https://dev.to/personofnote</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/personofnote"/>
    <language>en</language>
    <item>
      <title>I'm Building Diffuse: A Second Pair of Eyes for AI-Generated Mega PRs</title>
      <dc:creator>PersonofNote</dc:creator>
      <pubDate>Wed, 06 Aug 2025 16:12:26 +0000</pubDate>
      <link>https://dev.to/personofnote/im-building-diffuse-a-second-pair-of-eyes-for-ai-generated-mega-prs-56ap</link>
      <guid>https://dev.to/personofnote/im-building-diffuse-a-second-pair-of-eyes-for-ai-generated-mega-prs-56ap</guid>
      <description>&lt;p&gt;Hey folks! I’m building a dev tool called &lt;a href="https://www.npmjs.com/package/@personofnote/diffuse" rel="noopener noreferrer"&gt;Diffuse&lt;/a&gt;, and I want to start sharing the journey. Do the whole "build in public" thing.&lt;/p&gt;

&lt;p&gt;At its core, Diffuse is a Git tool designed to help developers quickly understand the downstream impact of a pull request in Typescript repos, especially the big, tangled ones that touch dozens or even hundreds of files.&lt;/p&gt;

&lt;p&gt;Why? Because AI is already writing code. A lot of code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI PRs are Already Here, and They're Kinda Spaghetti&lt;/strong&gt;&lt;br&gt;
If you've worked in a modern codebase recently, you've probably already seen a single GitHub Copilot or ChatGPT-generated PR that renames a function across 100 files... or worse, refactors logic in subtle ways that make it look correct, but breaks functionality elsewhere.&lt;/p&gt;

&lt;p&gt;These PRs can look clean. They might pass tests, follow lint rules, and sometimes get auto-approved or "LGTM"-ed out the door by a dev who's short on time. But they often carry hidden risk, especially when reviewers don't have time (or energy) to trace through dozens of affected files.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Claude 4 just refactored my entire codebase in one call.&lt;br&gt;&lt;br&gt;25 tool invocations. 3,000+ new lines. 12 brand new files.&lt;br&gt;&lt;br&gt;It modularized everything. Broke up monoliths. Cleaned up spaghetti.&lt;br&gt;&lt;br&gt;None of it worked.&lt;br&gt;But boy was it beautiful. &lt;a href="https://t.co/wvmzh7IeAP" rel="noopener noreferrer"&gt;pic.twitter.com/wvmzh7IeAP&lt;/a&gt;&lt;/p&gt;— vas (@vasumanmoza) &lt;a href="https://twitter.com/vasumanmoza/status/1926487201463832863?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 25, 2025&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;This is only going to get more common as AI tooling becomes cheaper and more integrated into dev workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enter Diffuse&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Diffuse gives you a quick summary of risky changes for your commits. It runs on the command line, or you can add a github workflow to have it comment on PRs. In the future, it could even block high-risk PRs from merging without a second approval, or require a senior reviewer — a safeguard against the dreaded “Friday afternoon LGTM.” (I've both caused and had my day ruined by that. Happens to the best of us.)&lt;/p&gt;

&lt;p&gt;It detects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Type safety&lt;/strong&gt;: Changes to return types, props, or exports. It might work for this case, but it's fairly likely to break something somewhere else out of the current scope if not carefully vetted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Graph-based impact&lt;/strong&gt;: Widespread or critical usage across the codebase. If 47 files import a symbol, best tread very carefully when merging changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Large change&lt;/strong&gt;: Symbol has been meaningfully changed (over 20% of lines changed). Maybe take a quick look if there's a huge change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Missing test updates&lt;/strong&gt;: Symbol has been meaningfully changed, but tests haven't been updated. Not a breaking change in and of itself, but signals tech debt and should be flagged.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can override and customize the weights and what you want to see in the output to make it more useful for your team. Want more output? Run &lt;code&gt;--verbose&lt;/code&gt;. Just want the risk score without any suggestions adding visual clutter? Run &lt;code&gt;--no-suggestions&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Works locally with your repo and git history (no special setup needed)&lt;/p&gt;

&lt;p&gt;Sample PR comment and CLI output:&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%2Fd4cbbcryjuxy2xjqksbj.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%2Fd4cbbcryjuxy2xjqksbj.png" alt="PR comment screenshot" width="800" height="721"&gt;&lt;/a&gt;&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%2F2s7so4ioa2us312kz41b.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%2F2s7so4ioa2us312kz41b.png" alt="CLI terminal output screenshot" width="796" height="906"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I’m Building This&lt;/strong&gt;&lt;br&gt;
I’ve worked in large, regulated codebases with strict review protocols, and fast-paced projects where AI-generated code flies in unchecked. In both cases, the need is the same:&lt;/p&gt;

&lt;p&gt;Developers need better tools to quickly evaluate the impact of code changes, not just the code itself. Especially as output gets higher, faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s Next&lt;/strong&gt;&lt;br&gt;
If there's enough interest, I'll build out a Github app for cross-repo analysis. I think that'll be the most useful feature for this tool, but it requires more infrastructure, dev time, and org buy-in. &lt;/p&gt;

&lt;p&gt;Other planned features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Language support beyond Typescript &lt;/li&gt;
&lt;li&gt;Hot file detection: Flags files that have been touched frequently in recent PRs — often a signal of instability or bugs&lt;/li&gt;
&lt;li&gt;Performance optimizations for repeated runs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Right now I'm looking for feedback from devs reviewing lots of code, especially in fast-moving teams. &lt;/p&gt;

&lt;p&gt;Is Diffuse helpful? Or just another contributor to information overload?&lt;/p&gt;

&lt;p&gt;If you're someone who reviews big PRs often, or you've been burned by an AI refactor gone wrong, I'd love your feedback!&lt;/p&gt;

&lt;p&gt;Drop a comment below,&lt;br&gt;
Join the &lt;a href="https://github.com/PersonofNote/diffuse-cli/discussions" rel="noopener noreferrer"&gt;GitHub discussion&lt;/a&gt;,&lt;br&gt;
Or send a carrier pigeon. (Whatever works for you.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@personofnote/diffuse" rel="noopener noreferrer"&gt;Try it out! &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading — more soon!&lt;/p&gt;

&lt;p&gt;— Jessie&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
