<?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: Takeshi Fuchi</title>
    <description>The latest articles on DEV Community by Takeshi Fuchi (@takeshi_fuchi).</description>
    <link>https://dev.to/takeshi_fuchi</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%2F1930996%2F4377278e-9133-45dd-8989-adfef8f9fd60.png</url>
      <title>DEV Community: Takeshi Fuchi</title>
      <link>https://dev.to/takeshi_fuchi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/takeshi_fuchi"/>
    <language>en</language>
    <item>
      <title>I Built a VS Code Extension from Scratch with Claude Code — and Got 10+ Downloads Within the First Hour of Publishing</title>
      <dc:creator>Takeshi Fuchi</dc:creator>
      <pubDate>Fri, 29 May 2026 17:56:46 +0000</pubDate>
      <link>https://dev.to/takeshi_fuchi/i-built-a-vs-code-extension-from-scratch-with-claude-code-and-got-10-downloads-within-the-first-35mc</link>
      <guid>https://dev.to/takeshi_fuchi/i-built-a-vs-code-extension-from-scratch-with-claude-code-and-got-10-downloads-within-the-first-35mc</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;"I just want to peek inside this zip file without actually extracting it." — Every developer has been there. But VS Code's default behavior is either showing raw binary or launching an external app. Unzip, check, delete the folder — that friction adds up. I built this extension to eliminate it.&lt;/p&gt;

&lt;p&gt;The entire project was developed through conversation with Claude Code, starting from zero. I also wired in an ad-based monetization model. Then I published it to the VS Code Marketplace without any promotion whatsoever — and watched 10+ downloads roll in within the first hour.&lt;/p&gt;

&lt;p&gt;Here's the full story.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is "Zip &amp;amp; Archive Viewer"?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Zip &amp;amp; Archive Viewer&lt;/strong&gt; (publisher: Takeshi-Fuchi) is a VS Code extension that lets you &lt;strong&gt;browse and preview the contents of archive files directly in the editor — no extraction required&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Select a zip file and it immediately renders as a file tree. Mouse down on any filename in the list to preview its contents inline; release to close. No temp folders, no cleanup. For the job of "just checking what's inside," this is the shortest possible path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supported Formats
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;.zip&lt;/code&gt; / &lt;code&gt;.7z&lt;/code&gt; / &lt;code&gt;.tar&lt;/code&gt; / &lt;code&gt;.tar.gz&lt;/code&gt; / &lt;code&gt;.tgz&lt;/code&gt; / &lt;code&gt;.tar.xz&lt;/code&gt; / &lt;code&gt;.tar.bz2&lt;/code&gt; / &lt;code&gt;.tar.zst&lt;/code&gt; — 17 compression formats in total, including modern ones like Zstandard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;File Tree View&lt;/strong&gt;&lt;br&gt;
Selecting an archive displays filenames, sizes, and timestamps in a collapsible tree.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instant File Preview (No Extraction)&lt;/strong&gt;&lt;br&gt;
Hold the mouse button down on any filename to preview its content; release to dismiss. Shows the first N lines of text (configurable, default 20). Nothing is extracted to disk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image Preview (No Extraction)&lt;/strong&gt;&lt;br&gt;
JPG / PNG / GIF / WebP / BMP / SVG / ICO / TIFF / AVIF render inline inside the viewer. See exactly what's in the archive without touching your filesystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Markdown Preview (No Extraction)&lt;/strong&gt;&lt;br&gt;
Rendered Markdown is displayed directly from within the archive. Images referenced inside the archive are automatically resolved and embedded. Great for checking documentation in a release package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nested Archive Browsing&lt;/strong&gt;&lt;br&gt;
A zip inside a tar.gz? Click through and browse it. Still no extraction needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Password-Protected Archives&lt;/strong&gt;&lt;br&gt;
ZIP and 7Z password-protected archives are fully supported. Passwords are remembered for the session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Selective Extraction&lt;/strong&gt;&lt;br&gt;
Once you've confirmed what you need, right-click to extract individual files or entire folders. Multi-select with checkboxes for batch extraction. Extraction is an intentional step — not the default.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building It from Scratch with Claude Code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How It Started
&lt;/h3&gt;

&lt;p&gt;One day I received a zip file, needed to quickly verify its contents, and found myself going through the whole unzip → check → delete cycle just for a 30-second confirmation. "This should just work inside VS Code," I thought.&lt;/p&gt;

&lt;p&gt;I looked for existing extensions. Some were unmaintained, some only supported zip, some had clunky UIs. Close enough didn't cut it, so I decided to build one. The catch: I had never built a VS Code extension before. The Webview API, CustomEditorProvider, extension context lifecycle — unfamiliar territory. That's where Claude Code came in.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Development Progressed
&lt;/h3&gt;

&lt;p&gt;The workflow was straightforward. I described what I wanted — "show a tree view when a zip file is selected in VS Code, without extracting it" — and Claude Code generated the scaffolding. From there I layered in features: "add 7z support," "handle password-protected archives," "render Markdown from inside the archive."&lt;/p&gt;

&lt;p&gt;The main file, &lt;code&gt;src/extension.ts&lt;/code&gt;, is about 2,000 lines. Stream-based reading for each archive format, HTML generation for the Webview, preview logic, password dialogs, batch extraction — all in one file.&lt;/p&gt;

&lt;p&gt;I wrote tests too: unit tests, integration tests against real archive files, and end-to-end tests with Playwright. When something broke, I'd pass the failure back — "this test is failing, find out why" — and get a precise fix. The debug cycle was noticeably faster than working alone.&lt;/p&gt;

&lt;p&gt;Looking at the git history: from &lt;code&gt;Initial commit&lt;/code&gt; through feature additions, bug fixes, and version bumps, the entire arc from zero to published was one developer in conversation with an AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Took Away from the Experience
&lt;/h3&gt;

&lt;p&gt;The biggest win with Claude Code was not having to look up unfamiliar APIs. Things like using &lt;code&gt;vscode.window.showInputBox()&lt;/code&gt; for a password prompt, or &lt;code&gt;retainContextWhenHidden&lt;/code&gt; to preserve Webview state across tab switches — I could just describe what I wanted and get working code, without context-switching to docs.&lt;/p&gt;

&lt;p&gt;Not everything worked on the first try. Images broke due to a Content Security Policy misconfiguration. The tar tree hierarchy got mangled at one point. Small bugs, real bugs. But the pattern of "here's the failing test, fix it" reliably produced accurate fixes. The time I spent debugging dropped significantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Monetizing a VS Code Extension with Ads
&lt;/h2&gt;

&lt;p&gt;Before publishing, I added something unusual: &lt;strong&gt;designated ad space within the extension UI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The README states it plainly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This extension may display advertisements in designated advertising spaces within the interface. Revenue from advertisements is used for the development, maintenance, and improvement of the extension.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In-app advertising is standard in mobile apps and web services, but it's rare in developer tooling. The VS Code extension ecosystem is almost entirely donation-ware or subscription-based. I wanted to test whether an ad model could work here.&lt;/p&gt;

&lt;p&gt;Some pushback is expected — developers tend to have low tolerance for ads in their tools. The constraints I set for myself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Non-intrusive&lt;/strong&gt;: Ads sit at the edge of the UI and don't interfere with archive browsing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fully local&lt;/strong&gt;: No file data is sent externally, stated explicitly in the privacy policy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparent&lt;/strong&gt;: The README discloses ad presence before anyone installs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether the developer community accepts this or not is the experiment. The results will tell me something either way.&lt;/p&gt;




&lt;h2&gt;
  
  
  10+ Downloads in the First Hour — Without Any Promotion
&lt;/h2&gt;

&lt;p&gt;I had zero expectations at launch. No tweets, no Reddit posts, no Product Hunt submission. I published to the VS Code Marketplace and that was it.&lt;/p&gt;

&lt;p&gt;Within an hour, downloads had crossed 10.&lt;/p&gt;

&lt;p&gt;I was genuinely surprised.&lt;/p&gt;

&lt;p&gt;In hindsight, it makes sense. The VS Code Marketplace has a massive, active user base searching for extensions every day. When you search "zip viewer" or "archive viewer" as a new listing, you surface at the top. No SEO work, no ad spend — the marketplace's own search index does the distribution.&lt;/p&gt;

&lt;p&gt;Launching a web service from scratch is a cold start problem. You need SEO, social posts, community engagement, and paid acquisition just to get visible. A marketplace is different. The audience is already there. The infrastructure connecting supply and demand already exists.&lt;/p&gt;

&lt;p&gt;The App Store and Google Play have the same structure, but the VS Code Marketplace is narrower: everyone visiting is a developer looking for a tool. The match rate between "I want to preview zip contents in VS Code" and this extension is near-perfect. A real solution to a real need gets found automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where It Is Now
&lt;/h2&gt;

&lt;p&gt;Current version: 2.1.2. It started at 1.0.0 with preview support for 5 ZIP/TAR formats, expanded to 17 formats with a major UI overhaul in 2.0.0, and added Markdown preview, image preview, and batch extraction in 2.1.0. The scope has grown considerably from what I originally had in mind.&lt;/p&gt;

&lt;p&gt;How the ad model performs, how downloads trend, how the developer community responds — I'll write a follow-up when there's something worth reporting.&lt;/p&gt;

&lt;p&gt;If you've ever caught yourself unzipping just to check a file and immediately deleting the folder, give it a try.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search "Zip &amp;amp; Archive Viewer" by Takeshi-Fuchi on the VS Code Marketplace&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Source code is available at &lt;a href="https://github.com/t-fuchi/zip-viewer" rel="noopener noreferrer"&gt;https://github.com/t-fuchi/zip-viewer&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>extensions</category>
      <category>zip</category>
      <category>preview</category>
    </item>
  </channel>
</rss>
