What I learned letting two agents maintain a website
Field Notes, 2026-05-12
We Love Claude updates itself: two agents crawl Claude's apps and open PRs. The hard part wasn't the agents.
We Love Claude is a guide to Claude's features that updates itself, a living and interactive reference rather than a static page. It is built on two agents that crawl the desktop and web apps, notice anything that has changed, research it, update the site, and open PRs to keep it always current. Here's what surprised me building it.
The hard part wasn't the agents
Detecting change is easy. Detecting change that matters is not. My first version opened a pull request every time a button moved or a label re-rendered. The real work was teaching the agent to classify the difference between UI noise and an actual feature shift.
The desktop crawler nearly beat me
If one piece was genuinely hard, it was the desktop crawler. The desktop version of Claude is built on Electron, and crawling a desktop app is a different beast from crawling a web one. Pointing an agent at a web app is simple. Pointing one at an Electron app is not. I nearly gave up several times, and only after leaving it for about a week and coming back with a fresh head did I find the workaround that got the desktop crawler working. Persistence pays off, and so does stepping away from a problem and returning to it with a clear mind.
PRs, not auto-merge
It would have been satisfying to let the agents publish directly. It would also have been a mistake. A human gate means a wrong edit never ships silently, and that single constraint is what makes autonomous maintenance trustworthy rather than reckless.
Two agents, not one, because the desktop and web apps are so fundamentally different in their functionality and features. As things change quickly, Anthropic often gates key updates behind one app or the other, so treat them as a single surface and you miss a lot of what matters.
More field notes