<?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: akadeepesh</title>
    <description>The latest articles on DEV Community by akadeepesh (@akadeepesh).</description>
    <link>https://dev.to/akadeepesh</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%2F952623%2F73f10e4d-6b6b-4442-8f77-f398e6fd0332.png</url>
      <title>DEV Community: akadeepesh</title>
      <link>https://dev.to/akadeepesh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akadeepesh"/>
    <language>en</language>
    <item>
      <title>Giving an AI chat your whole codebase, and getting the changes back without losing your own</title>
      <dc:creator>akadeepesh</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:07:12 +0000</pubDate>
      <link>https://dev.to/akadeepesh/giving-an-ai-chat-your-whole-codebase-and-getting-the-changes-back-without-losing-your-own-4fpa</link>
      <guid>https://dev.to/akadeepesh/giving-an-ai-chat-your-whole-codebase-and-getting-the-changes-back-without-losing-your-own-4fpa</guid>
      <description>&lt;p&gt;I use the Claude and ChatGPT web chats on my own projects. Sending the code was never the hard part. Copying the AI's edits back, file by file, without breaking something, was.&lt;/p&gt;

&lt;p&gt;Here's what I learned doing it safely.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/9FnYfyB3qd8" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Send files, not snippets
&lt;/h2&gt;

&lt;p&gt;A model that sees your folder structure guesses less. It finds the files you already have instead of inventing new ones. A ZIP also keeps the paths, so you know where every file in the reply belongs.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Leave out the noise
&lt;/h2&gt;

&lt;p&gt;Skip dependencies, build output, caches, lockfiles and media. On one of my Next.js projects that's 37,887 of 37,949 files. The 62 left are what a new teammate would actually read.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Never send secrets
&lt;/h2&gt;

&lt;p&gt;That means &lt;code&gt;.env&lt;/code&gt;, private keys, &lt;code&gt;.npmrc&lt;/code&gt;, cloud credentials and Terraform state. If the model needs to know which settings exist, send the keys with the values blanked:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;DATABASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;REDACTED&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="nv"&gt;API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;REDACTED&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Ask for a reply you can apply
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Complete files, never "rest unchanged"&lt;/li&gt;
&lt;li&gt;The same paths you sent&lt;/li&gt;
&lt;li&gt;A list of anything moved or deleted&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Merge three ways, not two
&lt;/h2&gt;

&lt;p&gt;Copying the reply back goes wrong in three ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flattened paths:&lt;/strong&gt; the reply has &lt;code&gt;page.tsx&lt;/code&gt;. Which one?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cut-off files:&lt;/strong&gt; &lt;code&gt;// ... rest unchanged&lt;/code&gt; deletes half your file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your own edits:&lt;/strong&gt; you fixed a typo while waiting, and the reply overwrites it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fix is to compare three versions: what you &lt;strong&gt;sent&lt;/strong&gt;, what's on &lt;strong&gt;disk now&lt;/strong&gt;, and what &lt;strong&gt;came back&lt;/strong&gt;. If only the AI changed a file, write it. If you both changed it in different places, merge. If you both changed the same lines, a human decides. That's a three-way merge, and it only works if you kept a copy of what you sent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Doing it in one command
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://github.com/akadeepesh/contextzip" rel="noopener noreferrer"&gt;contextzip&lt;/a&gt; to do all of this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip install contextzip
cz         &lt;span class="c"&gt;# zip the right files to your clipboard&lt;/span&gt;
cz apply   &lt;span class="c"&gt;# merge the AI's reply back&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It knows 62 stacks, never sends secrets, and keeps a snapshot of every ZIP for the merge. Nothing to install? &lt;a href="https://www.contextzipcli.com" rel="noopener noreferrer"&gt;contextzipcli.com&lt;/a&gt; does it in your browser, and your files never leave your machine.&lt;/p&gt;

&lt;p&gt;Which stack does it get wrong for you? And how do you get AI edits back into your code today? I'd like to hear in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Your Codebase Is Too Big for an AI. Here's How to Give It Only What Matters</title>
      <dc:creator>akadeepesh</dc:creator>
      <pubDate>Wed, 27 May 2026 06:10:00 +0000</pubDate>
      <link>https://dev.to/akadeepesh/your-codebase-is-too-big-for-an-ai-heres-how-to-give-it-only-what-matters-3m19</link>
      <guid>https://dev.to/akadeepesh/your-codebase-is-too-big-for-an-ai-heres-how-to-give-it-only-what-matters-3m19</guid>
      <description>&lt;p&gt;Every AI session I had started with the same silent ritual.&lt;/p&gt;

&lt;p&gt;Open the project. Figure out which files are actually relevant. Remember to skip &lt;code&gt;node_modules&lt;/code&gt;. And &lt;code&gt;__pycache__&lt;/code&gt;. And &lt;code&gt;.venv&lt;/code&gt;. And the lock files. Zip everything manually. Find the zip. Upload it. Then type out what I was actually trying to do, context the AI had no way of knowing.&lt;/p&gt;

&lt;p&gt;It was maybe 5 minutes. Not a crisis. But it happened &lt;em&gt;every single session&lt;/em&gt;, and at some point I stopped accepting it as normal.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;contextzip&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/mHq1JH0ZJuY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;contextzip is a CLI tool that packages exactly the right parts of your codebase into a ZIP, ready to drop into Claude, ChatGPT, or any other AI tool.&lt;/p&gt;

&lt;p&gt;Install it once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;contextzip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then from any project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
contextzip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. It detects your stack automatically : Next.js, Django, FastAPI, Rust, Go, Ruby, and more, applies the right exclusion rules for each, respects your &lt;code&gt;.gitignore&lt;/code&gt;, and drops a clean ZIP into &lt;code&gt;.contextzip/&lt;/code&gt; at your project root. Your file manager opens with the archive already selected.&lt;/p&gt;




&lt;h2&gt;
  
  
  The part I'm most excited about
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;contextzip &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Change toast color on failed login"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe your task in plain English. contextzip builds a lightweight file map of your project and asks Gemini to return only the files relevant to that specific task. Usually 2 to 5 files. Not your entire codebase.&lt;/p&gt;

&lt;p&gt;The ZIP also includes a &lt;code&gt;prompt.txt&lt;/code&gt; with your task description, so when you drop it into an AI tool, the context is already there. No retyping, no re-explaining.&lt;/p&gt;

&lt;p&gt;This is the feature that changed how I personally work with AI tools day to day.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;First-time setup: &lt;code&gt;--prompt&lt;/code&gt; requires a free Gemini API key from Google AI Studio, no credit card needed. contextzip walks you through it on first use.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Other things it does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;--git-changes&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Only package files that git considers modified, staged, or untracked. Perfect for incremental debugging sessions and PR reviews where you don't need the whole project, just what changed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;contextzip &lt;span class="nt"&gt;--git-changes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;watch&lt;/code&gt; mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one is underrated. Wrap your dev server with &lt;code&gt;contextzip watch&lt;/code&gt; and it buffers the output in the background, watching for errors. The moment one appears, a prompt shows up beneath it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╭─ contextzip · error detected ─────────────────────╮
│  Press [D] to package debug context  [S] to skip  │
╰───────────────────────────────────────────────────╯
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Press D. A debug-ready ZIP lands in &lt;code&gt;.contextzip/&lt;/code&gt; with the error, the stack trace, and the relevant source files already inside. Your server keeps running, no restart needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;contextzip watch &lt;span class="nt"&gt;--&lt;/span&gt; npm run dev
contextzip watch &lt;span class="nt"&gt;--&lt;/span&gt; python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Smart exclusions by framework&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;contextzip stacks exclusion rules based on what it detects:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stack&lt;/th&gt;
&lt;th&gt;Excluded automatically&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Node.js / Next.js&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;node_modules/&lt;/code&gt;, &lt;code&gt;.next/&lt;/code&gt;, &lt;code&gt;dist/&lt;/code&gt;, lock files, &lt;code&gt;*.min.js&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python / Django / FastAPI&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;__pycache__/&lt;/code&gt;, &lt;code&gt;.venv/&lt;/code&gt;, &lt;code&gt;*.pyc&lt;/code&gt;, &lt;code&gt;migrations/&lt;/code&gt;, lock files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;target/&lt;/code&gt;, &lt;code&gt;Cargo.lock&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;vendor/&lt;/code&gt;, &lt;code&gt;go.sum&lt;/code&gt;, &lt;code&gt;bin/&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A monorepo with both &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;pyproject.toml&lt;/code&gt; gets both rule sets applied automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--prompt&lt;/code&gt; requires a free Gemini API key&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;watch&lt;/code&gt; doesn't use PTY emulation, so color passthrough on Windows is limited&lt;/li&gt;
&lt;li&gt;AI file selection is capped at 10 files by design, the goal is tight context, not comprehensive coverage&lt;/li&gt;
&lt;/ul&gt;




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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;contextzip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub: &lt;a href="https://github.com/akadeepesh/contextzip" rel="noopener noreferrer"&gt;github.com/akadeepesh/contextzip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MIT licensed, open source.&lt;/p&gt;

&lt;p&gt;If you've been living with this friction and didn't realize it was fixable, now you know. And if you try it, I'd genuinely love to hear how it fits into your workflow.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
