<?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: SnapTools</title>
    <description>The latest articles on DEV Community by SnapTools (@gulugulu).</description>
    <link>https://dev.to/gulugulu</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%2F3854413%2F57528983-cd1f-401a-87f2-ab992dac6bb7.jpg</url>
      <title>DEV Community: SnapTools</title>
      <link>https://dev.to/gulugulu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gulugulu"/>
    <language>en</language>
    <item>
      <title>I Built a DevTools for WebMCP — Because console.log Isn't a Debugging Strategy</title>
      <dc:creator>SnapTools</dc:creator>
      <pubDate>Wed, 08 Apr 2026 02:20:51 +0000</pubDate>
      <link>https://dev.to/gulugulu/i-built-a-devtools-for-webmcp-because-consolelog-isnt-a-debugging-strategy-3iha</link>
      <guid>https://dev.to/gulugulu/i-built-a-devtools-for-webmcp-because-consolelog-isnt-a-debugging-strategy-3iha</guid>
      <description>&lt;p&gt;Chrome just shipped &lt;code&gt;navigator.modelContext&lt;/code&gt;. Websites can now register structured tools for AI agents — no backend, no scraping, no guessing.&lt;/p&gt;

&lt;p&gt;But here's the thing: &lt;strong&gt;there's no DevTools panel for it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You register a tool. Did it work? Open the console. Want to test it? Write a throwaway script. Want to see the schema? &lt;code&gt;JSON.stringify&lt;/code&gt; and squint.&lt;/p&gt;

&lt;p&gt;I got tired of this after the second day. So I built &lt;a href="https://github.com/2019-02-18/WebMCP-DevTools" rel="noopener noreferrer"&gt;&lt;strong&gt;WebMCP DevTools&lt;/strong&gt;&lt;/a&gt; — a Chrome extension that gives you a proper side panel for everything WebMCP.&lt;/p&gt;




&lt;h2&gt;
  
  
  What does it actually do?
&lt;/h2&gt;

&lt;p&gt;Open the side panel. Navigate to any page with &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt;. Done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tools tab&lt;/strong&gt; — Every registered tool shows up automatically. You see the name, description, and a collapsible schema tree. No digging through console output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execute tab&lt;/strong&gt; — Click any tool, and WebMCP DevTools auto-generates an input form from its JSON Schema. Strings get text fields. Enums get dropdowns. Numbers get number inputs. Or switch to raw JSON mode if you prefer. Hit Execute, see the result instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Timeline tab&lt;/strong&gt; — Every &lt;code&gt;registerTool&lt;/code&gt;, &lt;code&gt;unregisterTool&lt;/code&gt;, and tool change event is logged with timestamps. When your SPA re-registers tools on route changes, you'll actually see what happened and when.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snapshots tab&lt;/strong&gt; — Save the current tool definitions, come back later, diff them. Catch unintentional schema changes before they break your agent integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Export&lt;/strong&gt; — One click to export as JSON, Markdown, Postman Collection, or ready-to-paste JavaScript code. Handy when you need to hand off tool specs to someone on the team who doesn't use the extension.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why not just use the official Model Context Tool Inspector?
&lt;/h2&gt;

&lt;p&gt;Google ships a &lt;a href="https://chromewebstore.google.com/detail/model-context-tool-inspec/gbpdfapgefenggkahomfgkhfehlcenpd" rel="noopener noreferrer"&gt;Model Context Tool Inspector&lt;/a&gt; extension. It's decent for discovery — you can see tools and test them with Gemini.&lt;/p&gt;

&lt;p&gt;WebMCP DevTools is built for a different workflow: &lt;strong&gt;the developer who's building the tools, not just consuming them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's what's different:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schema → Form generation.&lt;/strong&gt; The inspector shows you raw JSON schemas. WebMCP DevTools renders them as interactive, type-aware forms. You don't write JSON to test your own tool — you fill in a form like a human would.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Event timeline.&lt;/strong&gt; SPAs don't register tools once and forget. They register, unregister, re-register on navigation. The timeline shows every event, so you catch race conditions and duplicate registrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snapshot diffing.&lt;/strong&gt; You deployed a new version. Did your &lt;code&gt;searchProducts&lt;/code&gt; schema change? Take a snapshot before and after, diff them visually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Export formats.&lt;/strong&gt; Need to document your tools for the team? Export as Markdown. Integrating with Postman? Export as a Postman Collection. Want a quick test script? Export as JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bilingual UI.&lt;/strong&gt; Full English and Chinese (中文) support with one-click toggle. Because half the WebMCP early adopters I've talked to are Chinese developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero framework, ~90 KB.&lt;/strong&gt; Vanilla DOM. No React. No Vue. Loads fast, stays fast.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works under the hood
&lt;/h2&gt;

&lt;p&gt;WebMCP tools live in the page's MAIN world — that's where &lt;code&gt;navigator.modelContext&lt;/code&gt; exists. But Chrome extensions can't directly access MAIN world objects from their side panel.&lt;/p&gt;

&lt;p&gt;So the architecture has four layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Web Page (MAIN)  →  Content Script (ISOLATED)  →  Background (Service Worker)  →  Side Panel (UI)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Layer 1: &lt;code&gt;injected.content.ts&lt;/code&gt;&lt;/strong&gt; runs in MAIN world. It monkey-patches &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt; to intercept every tool registration. When a page registers a tool, this script captures the name, description, input schema, and a reference to the handler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 2: &lt;code&gt;content.ts&lt;/code&gt;&lt;/strong&gt; runs in ISOLATED world. It bridges the gap using &lt;code&gt;window.postMessage&lt;/code&gt; (MAIN → ISOLATED) and &lt;code&gt;chrome.runtime.sendMessage&lt;/code&gt; (ISOLATED → Background).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 3: &lt;code&gt;background.ts&lt;/code&gt;&lt;/strong&gt; is the Service Worker. It routes messages between content scripts and the side panel, and tracks which tab has which tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 4: &lt;code&gt;sidepanel/main.ts&lt;/code&gt;&lt;/strong&gt; renders everything — tool cards, schema trees, forms, timeline entries, snapshot diffs. All vanilla DOM manipulation, no virtual DOM overhead.&lt;/p&gt;

&lt;p&gt;The tricky part was the monkey-patching. &lt;code&gt;navigator.modelContext&lt;/code&gt; isn't always available immediately — the flag has to be enabled, and the API might initialize after our content script runs. The injected script handles this with a polling + MutationObserver fallback.&lt;/p&gt;




&lt;h2&gt;
  
  
  Set it up in 3 minutes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Enable WebMCP in Chrome&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to &lt;code&gt;chrome://flags/#enable-webmcp-testing&lt;/code&gt;, set to &lt;strong&gt;Enabled&lt;/strong&gt;, restart Chrome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Install the extension&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From source (Chrome Web Store listing is under review):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/2019-02-18/WebMCP-DevTools.git
&lt;span class="nb"&gt;cd &lt;/span&gt;WebMCP-DevTools
pnpm &lt;span class="nb"&gt;install
&lt;/span&gt;pnpm build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then: &lt;code&gt;chrome://extensions/&lt;/code&gt; → Developer mode → Load unpacked → select &lt;code&gt;.output/chrome-mv3&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Test with the included demo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open &lt;code&gt;test/demo.html&lt;/code&gt; with a local server (VS Code Live Server works great). The demo page registers several mock WebMCP tools. Click the extension icon, open the side panel, and you'll see them listed immediately.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick taste: what registering a tool looks like
&lt;/h2&gt;

&lt;p&gt;If you haven't played with &lt;code&gt;navigator.modelContext&lt;/code&gt; yet, here's the minimum:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;modelContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registerTool&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;get_weather&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Get current weather for a city&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;inputSchema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;City name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;enum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;celsius&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fahrenheit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;unit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;celsius&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetchWeather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;condition&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With WebMCP DevTools open, the moment this code runs you'll see a &lt;code&gt;get_weather&lt;/code&gt; card appear in the Tools tab — schema tree expanded, ready to execute.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who is this for?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you're building WebMCP tools&lt;/strong&gt; — this is your debug panel. You shouldn't have to &lt;code&gt;console.log&lt;/code&gt; tool registrations or write ad-hoc test scripts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're evaluating WebMCP&lt;/strong&gt; — install this, open the &lt;a href="https://travel-demo.bandarra.me/" rel="noopener noreferrer"&gt;travel demo&lt;/a&gt;, and poke around. You'll understand the API in 5 minutes instead of 50.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're building AI agents that consume WebMCP&lt;/strong&gt; — use the export feature. Get the tool schemas as JSON or Postman Collections, integrate them into your agent's tool discovery pipeline.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/2019-02-18/WebMCP-DevTools" rel="noopener noreferrer"&gt;https://github.com/2019-02-18/WebMCP-DevTools&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chrome Web Store&lt;/strong&gt;: Under review — install from source for now&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebMCP Spec&lt;/strong&gt;: &lt;a href="https://github.com/webmachinelearning/webmcp" rel="noopener noreferrer"&gt;W3C webmachinelearning/webmcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chrome Blog&lt;/strong&gt;: &lt;a href="https://developer.chrome.com/blog/webmcp-epp" rel="noopener noreferrer"&gt;WebMCP Early Preview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Star the repo if it saves you time. Issues and PRs are welcome — especially if you find edge cases with how different sites register tools.&lt;/p&gt;

&lt;p&gt;The WebMCP ecosystem is early. The tooling should grow with it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>chrome</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Built a Chrome Extension That Lets You Inspect CSS Without Opening DevTools</title>
      <dc:creator>SnapTools</dc:creator>
      <pubDate>Wed, 01 Apr 2026 01:13:23 +0000</pubDate>
      <link>https://dev.to/gulugulu/i-built-a-chrome-extension-that-lets-you-inspect-css-without-opening-devtools-4ak1</link>
      <guid>https://dev.to/gulugulu/i-built-a-chrome-extension-that-lets-you-inspect-css-without-opening-devtools-4ak1</guid>
      <description>&lt;p&gt;Every front-end developer knows the drill: right-click → Inspect → scroll through a mountain of inherited styles in the DevTools panel just to find the CSS of one button.&lt;/p&gt;

&lt;p&gt;I got tired of it. So I built &lt;strong&gt;SnapCSS&lt;/strong&gt; — a Chrome extension that lets you see the CSS of any element on any page with a single click.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Click the SnapCSS icon in your toolbar to activate inspect mode&lt;/li&gt;
&lt;li&gt;Hover over any element — it gets highlighted instantly&lt;/li&gt;
&lt;li&gt;Click the element — a clean floating panel shows you the full, cleaned CSS&lt;/li&gt;
&lt;li&gt;One-click copy to your clipboard&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. No DevTools, no noise, no digging through inherited rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;DevTools is powerful, but it's overkill when all you want is "what's the font-size, padding, and background of this button?" As a front-end developer, I do this dozens of times a day — checking how other sites style their components, debugging spacing issues, or just grabbing a quick reference.&lt;/p&gt;

&lt;p&gt;SnapCSS strips away the complexity and gives you exactly what you need: the computed CSS of the element you clicked, formatted and ready to copy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes It Different from Similar Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight&lt;/strong&gt; — only 61.4 KB, no bloat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean output&lt;/strong&gt; — shows cleaned, relevant CSS instead of dumping every inherited property&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful floating panel&lt;/strong&gt; — stays on the page, doesn't take you to a separate view&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero data collection&lt;/strong&gt; — no analytics, no tracking, your browsing stays private&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install It
&lt;/h2&gt;

&lt;p&gt;SnapCSS is free on the Chrome Web Store:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://chromewebstore.google.com/detail/snapcss/kcacjomlfcnflimmcnegppmejdebdcon" rel="noopener noreferrer"&gt;&lt;strong&gt;Install SnapCSS&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find it useful, a rating on the Chrome Web Store would mean a lot — it helps other developers discover it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm currently working on another extension called &lt;strong&gt;WebMCP DevTools&lt;/strong&gt; for debugging the new WebMCP protocol (the standard that lets AI agents interact with websites). It's currently in review on the Chrome Web Store.&lt;/p&gt;

&lt;p&gt;If you have feedback or feature requests for SnapCSS, drop a comment below — I'd love to hear what you think.&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>chrome</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
