<?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: Daniel Maß</title>
    <description>The latest articles on DEV Community by Daniel Maß (@themassiveone).</description>
    <link>https://dev.to/themassiveone</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%2F1059643%2F4f9d00f6-446e-486d-b9ca-db2c177a3bf6.png</url>
      <title>DEV Community: Daniel Maß</title>
      <link>https://dev.to/themassiveone</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/themassiveone"/>
    <language>en</language>
    <item>
      <title>AI agents should not just write code</title>
      <dc:creator>Daniel Maß</dc:creator>
      <pubDate>Mon, 03 Aug 2026 05:59:32 +0000</pubDate>
      <link>https://dev.to/themassiveone/ai-agents-should-not-just-write-code-333l</link>
      <guid>https://dev.to/themassiveone/ai-agents-should-not-just-write-code-333l</guid>
      <description>&lt;p&gt;They should be able to use the application they changed.&lt;/p&gt;

&lt;p&gt;That sounds obvious, but most coding agent workflows still stop at editing files, running tests, maybe starting a dev server, and reporting back. For web apps, that is not enough.&lt;/p&gt;

&lt;p&gt;A human developer does not only inspect diffs. They open the app. They click through the flow. They notice when the wrong tab is open, when a button does nothing, when the page changed unexpectedly, or when the browser is still pointing at yesterday's backend.&lt;/p&gt;

&lt;p&gt;AI agents need that same feedback loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Browser state becomes coordination state
&lt;/h2&gt;

&lt;p&gt;Once multiple agents are running in parallel, browser state becomes another coordination problem. Without isolation, browser tabs point to the wrong workspace, one agent clicks in another agent's app, authentication state leaks between branches, screenshots no longer match the running process, and the developer cannot tell which agent is doing what.&lt;/p&gt;

&lt;p&gt;This is why Agent-Up now treats the browser as part of the workspace runtime.&lt;/p&gt;

&lt;p&gt;Each workspace gets its own browser session, application tabs, port mappings, logs, and runtime state. Agents interact with that browser through MCP, so they can navigate to the app, inspect the page, click links and buttons, wait for text or selectors, take screenshots, and record browser activity into the audit history.&lt;/p&gt;

&lt;p&gt;The important part is not just that the agent can click. It is that the click belongs to the correct workspace.&lt;/p&gt;

&lt;p&gt;When an agent clicks inside its app, Agent-Up can switch the visible application tab for that workspace, move the agent mouse representation, show the click animation, and keep the developer's desktop view aligned with what the agent is actually doing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The review experience changes
&lt;/h2&gt;

&lt;p&gt;Instead of reading four terminal logs and guessing what happened, you can watch four agents exercise four isolated versions of an app at the same time.&lt;/p&gt;

&lt;p&gt;One agent might test the login flow. Another checks pricing. Another walks through checkout. Another validates returns and fulfillment.&lt;/p&gt;

&lt;p&gt;Same machine. Same repo.&lt;/p&gt;

&lt;p&gt;But different worktrees, different runtime environments, and different browser sessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The browser is part of the feedback loop
&lt;/h2&gt;

&lt;p&gt;This is the part of agentic development I think people underestimate: the browser is not just an output surface.&lt;/p&gt;

&lt;p&gt;It is part of the feedback loop.&lt;/p&gt;

&lt;p&gt;For web applications, an agent that cannot use the browser is missing the place where the product actually exists.&lt;/p&gt;

&lt;p&gt;Git isolates the source. Agent-Up isolates the runtime. MCP gives agents control over both.&lt;/p&gt;

&lt;p&gt;That makes parallel agent work easier to supervise because you are no longer only reviewing generated code. You are watching each agent operate its own version of the product.&lt;/p&gt;

&lt;p&gt;That is what the demo was built to show.&lt;/p&gt;

&lt;p&gt;Download Agent-Up:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agent-up.themassiveone.net/" rel="noopener noreferrer"&gt;https://agent-up.themassiveone.net/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open source repo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/agent-up-oss/agent-up/" rel="noopener noreferrer"&gt;https://github.com/agent-up-oss/agent-up/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>mcp</category>
      <category>browser</category>
    </item>
    <item>
      <title>AI agents changed my opinion on vertical slices.</title>
      <dc:creator>Daniel Maß</dc:creator>
      <pubDate>Tue, 28 Jul 2026 16:38:21 +0000</pubDate>
      <link>https://dev.to/themassiveone/ai-agents-changed-my-opinion-on-vertical-slices-3k92</link>
      <guid>https://dev.to/themassiveone/ai-agents-changed-my-opinion-on-vertical-slices-3k92</guid>
      <description>&lt;h1&gt;
  
  
  The old preference
&lt;/h1&gt;

&lt;p&gt;For years, I preferred a traditional layered architecture.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Controllers/
Services/
Repositories/
DTOs/
Models/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It makes navigation straightforward. If I need a repository, I know exactly where to look.&lt;/p&gt;

&lt;h1&gt;
  
  
  The optimization target changed
&lt;/h1&gt;

&lt;p&gt;Then I started working with multiple AI agents, and suddenly the optimization target changed. Imagine one agent implementing Shipping while another implements Billing.&lt;/p&gt;

&lt;p&gt;With a layered architecture, they both end up touching controllers, services, repositories, tests, and dependency injection, even though they are working on different features. The implementation of a single feature becomes scattered across the entire project. So does the code review.&lt;/p&gt;

&lt;h1&gt;
  
  
  Vertical slices fit agent ownership
&lt;/h1&gt;

&lt;p&gt;The model that worked better was organizing the code around features instead of layers. Shipping and Billing stop being scattered concepts that have to be reconstructed from several folders. They become visible parts of the project structure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Features/
├── Shipping/
│   ├── Controllers/
│   ├── Services/
│   ├── Repositories/
│   └── DTOs/
│
└── Billing/
    ├── Controllers/
    ├── Services/
    ├── Repositories/
    └── DTOs/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now each agent owns an entire feature, not just a few files spread across the solution. Reviewing changes becomes opening &lt;code&gt;Features/Shipping&lt;/code&gt; instead of searching through controllers, services, repositories, DTOs, dependency injection, and tests in different places.&lt;/p&gt;

&lt;h1&gt;
  
  
  Tests by feature
&lt;/h1&gt;

&lt;p&gt;The same ownership boundary applies to verification. If the implementation belongs to a feature, the tests that prove it works should be organized by that feature too. Otherwise the review still requires jumping between multiple layers within the test project aswell.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Features/
├── Shipping/
│   ├── HTTP/
│   ├── Repository/
│   └── Unit/
│
└── Billing/
    ├── HTTP/
    ├── Repository/
    └── Unit/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each agent only owns the implementation and everything required to verify it. That keeps the task boundary clear: the agent changes the feature, updates the relevant tests, and leaves the rest of the system alone. Nothing more.&lt;/p&gt;

&lt;h1&gt;
  
  
  Observable ownership
&lt;/h1&gt;

&lt;p&gt;I previously argued that event-driven architectures work well with AI because they make behavior observable. I think this is the architectural equivalent.&lt;/p&gt;

&lt;p&gt;Vertical slices make ownership immediately observable. You immediately know which agent owns a feature, where to review its changes, and where its tests live.&lt;/p&gt;

&lt;h1&gt;
  
  
  The existing workflow pays off again
&lt;/h1&gt;

&lt;p&gt;The interesting part is that vertical slices were not designed for AI. They were designed to improve cohesion. Agentic development simply exposes the same problems again: Agents need to coordinate with each other just like humans do.&lt;/p&gt;

&lt;p&gt;The less coordination your architecture requires, the better it works for humans and AI alike.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>architecture</category>
      <category>agents</category>
      <category>ai</category>
    </item>
    <item>
      <title>AI-generated changes are easy to create and hard to review.</title>
      <dc:creator>Daniel Maß</dc:creator>
      <pubDate>Tue, 28 Jul 2026 05:50:02 +0000</pubDate>
      <link>https://dev.to/themassiveone/ai-generated-changes-are-easy-to-create-and-hard-to-review-1bg5</link>
      <guid>https://dev.to/themassiveone/ai-generated-changes-are-easy-to-create-and-hard-to-review-1bg5</guid>
      <description>&lt;p&gt;Large tasks rarely produce one logical change. They usually produce several changes that belong in separate commits, but without a dedicated workflow everything accumulates in the same working tree. Unrelated changes get mixed together, logical slices become harder to preserve, staging becomes risky, and reviews become larger than necessary.&lt;/p&gt;

&lt;p&gt;A better workflow would preserve each logical slice as soon as it is complete. That slice should include the affected files, a proposed commit message, the relevant test commands, and the exact patch. Once preserved, the working tree should be restored so the agent can continue with the next slice independently.&lt;/p&gt;

&lt;p&gt;But preserving slices is only half the problem. The agent should be able to organize the work without controlling Git history. The developer should still review every staged diff and create every commit manually.&lt;/p&gt;

&lt;p&gt;That is what Agent-Up commits provides. Agent-Up commits is a local commit proposal queue for agent-assisted development. Agents enqueue proposals instead of creating commits, and each proposal stores its patch and message before restoring the working tree.&lt;/p&gt;

&lt;p&gt;Later, the developer runs &lt;code&gt;agent-up commits next&lt;/code&gt;. Agent-Up applies and stages exactly one proposal. With the JetBrains plugin, a single button takes the first proposal in the queue and opens it directly in the IDE's commit window. The developer reviews it in the IDE, runs the relevant tests, and commits it manually. Then the next proposal can be reviewed.&lt;/p&gt;

&lt;p&gt;Agent-Up does not replace Git. It adds a safety layer between agent-generated changes and human-controlled commits, so agents can preserve logical slices while they work, developers can review one staged proposal at a time, and Git history remains under human control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get the JetBrains IDE plugin
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://plugins.jetbrains.com/plugin/33179-agent-up-commit-queue" rel="noopener noreferrer"&gt;https://plugins.jetbrains.com/plugin/33179-agent-up-commit-queue&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Download agent-up CLI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://agent-up.themassiveone.net/" rel="noopener noreferrer"&gt;https://agent-up.themassiveone.net/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>git</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>What if MCP could manage your entire development runtime?</title>
      <dc:creator>Daniel Maß</dc:creator>
      <pubDate>Sat, 25 Jul 2026 15:49:23 +0000</pubDate>
      <link>https://dev.to/themassiveone/what-if-mcp-could-manage-your-entire-development-runtime-1k8l</link>
      <guid>https://dev.to/themassiveone/what-if-mcp-could-manage-your-entire-development-runtime-1k8l</guid>
      <description>&lt;p&gt;I created &lt;strong&gt;Agent-Up&lt;/strong&gt;, an open-source desktop app and local server for running multiple coding-agent environments on one machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worktrees isolate source code, not the runtime
&lt;/h2&gt;

&lt;p&gt;The problem is that Git worktrees isolate source code, but they do not isolate the running application.&lt;/p&gt;

&lt;p&gt;When several agents work on the same monorepo, each one may need its own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;application processes,&lt;/li&gt;
&lt;li&gt;ports,&lt;/li&gt;
&lt;li&gt;Docker services,&lt;/li&gt;
&lt;li&gt;logs,&lt;/li&gt;
&lt;li&gt;runtime state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without a shared runtime manager, agents end up coordinating those details through shell commands.&lt;/p&gt;

&lt;p&gt;That is fragile.&lt;/p&gt;

&lt;p&gt;One agent may reuse a port that another process still owns. A restart may leave an old process alive. Docker services may overlap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Runtime isolation per workspace
&lt;/h2&gt;

&lt;p&gt;Agent-Up manages those concerns per workspace.&lt;/p&gt;

&lt;p&gt;Each workspace gets its own process lifecycle, allocated ports, Docker services, logs, and runtime state. The desktop app also provides one browser session per workspace for reviewing its web applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents control Agent-Up through MCP
&lt;/h2&gt;

&lt;p&gt;The current MCP interface supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;starting and stopping workspaces&lt;/li&gt;
&lt;li&gt;listing registered workspaces&lt;/li&gt;
&lt;li&gt;reading workspace status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Agent-Up server owns the runtime state behind those operations. That means the agent does not need to independently discover ports, track process IDs, or reconstruct the application topology through shell commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing runtime layer for parallel coding agents
&lt;/h2&gt;

&lt;p&gt;This is relevant because current coding agents are increasingly used in parallel.&lt;/p&gt;

&lt;p&gt;The source-code side of that workflow is already well served by Git branches and worktrees.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The runtime side is not.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agent-Up is intended to provide that missing runtime layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Planned MCP functionality
&lt;/h2&gt;

&lt;p&gt;Planned MCP functionality includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;browser inspection and interaction,&lt;/li&gt;
&lt;li&gt;diagnostics,&lt;/li&gt;
&lt;li&gt;screenshots,&lt;/li&gt;
&lt;li&gt;health checks,&lt;/li&gt;
&lt;li&gt;Playwright flow export.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Same workflow, more control
&lt;/h2&gt;

&lt;p&gt;Git still owns branches, commits, pull requests, and merges.&lt;/p&gt;

&lt;p&gt;Agent-Up just owns the local runtime around them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent-Up is open source
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/agent-up-oss/agent-up" rel="noopener noreferrer"&gt;View Agent-Up on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agent-up.themassiveone.net/" rel="noopener noreferrer"&gt;Read the documentation and download Agent-Up&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>agents</category>
      <category>ai</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>You do not need to Dockerize your entire app to run multiple agent workspaces</title>
      <dc:creator>Daniel Maß</dc:creator>
      <pubDate>Thu, 23 Jul 2026 07:11:35 +0000</pubDate>
      <link>https://dev.to/themassiveone/you-do-not-need-to-dockerize-your-entire-app-to-run-multiple-agent-workspaces-4b9h</link>
      <guid>https://dev.to/themassiveone/you-do-not-need-to-dockerize-your-entire-app-to-run-multiple-agent-workspaces-4b9h</guid>
      <description>&lt;p&gt;When several coding agents run the same app, Docker looks like the obvious answer: put every frontend in a container, put every API in a container, and put every worker in a container.&lt;/p&gt;

&lt;p&gt;It works, but it adds friction. Stale images can serve old code, rebuilds slow down feedback, caches hide what actually changed, images and layers clutter storage, and debugging gains another runtime layer.&lt;/p&gt;

&lt;p&gt;With one workspace, that may be fine. With several agents, it gets noisy fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local isolation does not require containerizing every process
&lt;/h2&gt;

&lt;p&gt;Most collisions come from ports, processes, Docker services, browser profiles, logs, and environment state. Agent-Up isolates those directly.&lt;/p&gt;

&lt;p&gt;Your apps can still run normally using &lt;code&gt;npm run dev&lt;/code&gt;, &lt;code&gt;dotnet run&lt;/code&gt;, or &lt;code&gt;./gradlew bootRun&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Each workspace gets its own ports, and each process receives the full port map. Another agent gets a different range, which means no collisions and no full app image rebuilds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker still has a clear role
&lt;/h2&gt;

&lt;p&gt;Use Docker for databases, queues, caches, and object storage. Keep app code local, and keep infrastructure in Docker.&lt;/p&gt;

&lt;p&gt;Let Agent-Up manage both as one workspace&lt;/p&gt;

&lt;p&gt;✅ Git isolates the source.&lt;br&gt;&lt;br&gt;
✅ Agent-Up isolates the runtime.&lt;br&gt;&lt;br&gt;
✅ Docker isolates infrastructure.&lt;/p&gt;




&lt;p&gt;Check out the open source repo&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/agent-up-oss/agent-up" rel="noopener noreferrer"&gt;https://github.com/agent-up-oss/agent-up&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Downloads&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agent-up.themassiveone.net/" rel="noopener noreferrer"&gt;https://agent-up.themassiveone.net/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>ai</category>
      <category>agents</category>
      <category>docker</category>
    </item>
    <item>
      <title>Introducing Agent-Up: run multiple agent-built versions of your web app at once</title>
      <dc:creator>Daniel Maß</dc:creator>
      <pubDate>Tue, 21 Jul 2026 17:28:32 +0000</pubDate>
      <link>https://dev.to/themassiveone/introducing-agent-up-run-multiple-agent-built-versions-of-your-web-app-at-once-1nb4</link>
      <guid>https://dev.to/themassiveone/introducing-agent-up-run-multiple-agent-built-versions-of-your-web-app-at-once-1nb4</guid>
      <description>&lt;p&gt;Agent-Up is an open-source, cross-platform desktop app for running and reviewing multiple AI coding agent workspaces on the same machine. It is built specifically for web application development, where each agent needs more than just an isolated source tree — it needs an isolated runtime.&lt;/p&gt;

&lt;p&gt;Every agent workspace in Agent-Up gets its own processes, stable ports, isolated Docker services, a dedicated browser session, grouped browser tabs, and its own logs and runtime state. Agents manage their environments through MCP. You review them all in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Git worktrees solve source code isolation well. When you give each agent its own worktree, their changes stay separate and can be reviewed independently. But worktrees do not isolate running applications.&lt;/p&gt;

&lt;p&gt;When several agents work on the same web app simultaneously, each may need to run a different version of the full stack at the same time. Without additional tooling, that quickly becomes unreliable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ports collide between workspaces&lt;/li&gt;
&lt;li&gt;Old processes keep serving previous versions after an agent restarts its stack&lt;/li&gt;
&lt;li&gt;Browser tabs point to the wrong workspace&lt;/li&gt;
&lt;li&gt;Related frontend and backend tabs are not grouped together&lt;/li&gt;
&lt;li&gt;Docker services conflict across workspaces&lt;/li&gt;
&lt;li&gt;Authentication and browser state leak between sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The worst failure is the subtle one. An agent changes the code successfully and restarts its server — but your browser is still connected to a different agent's process. You are reviewing the wrong version and do not know it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Agent-Up changes
&lt;/h2&gt;

&lt;p&gt;Agent-Up treats each workspace as a complete, isolated runtime environment rather than just a directory.&lt;/p&gt;

&lt;p&gt;A workspace represents the entire monorepo: multiple web apps, APIs, workers, databases, queues, and Docker services. Each workspace gets stable, pre-allocated ports and its own browser session inside the desktop app. Its web applications appear as a dedicated group of browser tabs. Switching workspaces means switching the complete environment managed by that agent.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You always know which workspace you are reviewing, which frontend and backend versions are running, which browser tabs belong together, and which logs and processes belong to that workspace.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Multiple agents can therefore run different versions of the same full-stack web app simultaneously on one machine, without any of their environments interfering with each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  How agents use it
&lt;/h2&gt;

&lt;p&gt;An agent finishes its work and starts the new version through the Agent-Up MCP server. The server handles the rest: starting or restarting the required applications, spinning up declared Docker services, allocating conflict-free ports, injecting those ports into each process as environment variables, tracking logs and process state, and exposing the running web apps as browser tabs in the desktop app.&lt;/p&gt;

&lt;p&gt;The entire stack does not need to be Dockerized. For many web applications, process and port isolation is already enough to run several versions concurrently without conflict.&lt;/p&gt;

&lt;h2&gt;
  
  
  One desktop app for all agent workspaces
&lt;/h2&gt;

&lt;p&gt;Stop managing multiple terminals, port assignments, Docker stacks, browser windows, and browser profiles to keep parallel agent work straight.&lt;/p&gt;

&lt;p&gt;Agent-Up gives each agent an isolated full-stack environment and puts the controls for all of them in a single desktop app. You can finally stop wondering whether you are looking at the correct version of your app.&lt;/p&gt;




&lt;p&gt;Windows and macOS installers are available at &lt;a href="https://agent-up.themassiveone.net/" rel="noopener noreferrer"&gt;agent-up.themassiveone.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Agent-Up is open source — view the code, report issues, or contribute at &lt;a href="https://github.com/agent-up-oss/agent-up/" rel="noopener noreferrer"&gt;github.com/agent-up-oss/agent-up&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>tooling</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
