Simon Willison adds 'beats' content type to blog-to-newsletter tool using Claude Code agent
Simon Willison enhanced his blog-to-newsletter tool to incorporate a new content category called 'beats', which aggregates external posts like open-source project releases, tool builds, and museum visits from niche-museums.com. The modification was executed through a prompt to Claude Code, an AI coding agent, targeting the simonw/tools repository. Willison instructed the agent to clone the simonw/simonwillisonblog repository to /tmp for reference, ensuring it wouldn't be included in commits. The prompt directed updates to blog-to-newsletter.html to include beats with descriptions, mirroring the logic of the blog's Atom feed that filters out unannotated or draft beats. Validation involved running a Python HTTP server and using uvx rodney --help for browser automation to compare newsletter output with the homepage of simonwillison.net. The resulting pull request added a UNION clause to an SQL query, filtering drafts and beats lacking notes. This work is part of the guide 'Agentic Engineering Patterns', created and last modified on 18th April 2026. Willison's tool fetches content from a Datasette instance, formats it as rich text HTML for his Substack newsletter, which he uses to email subscribers his blog posts weekly.
Key facts
- Simon Willison added a 'beats' content type to his blog-to-newsletter tool
- Beats include open-source project releases, tool builds, and museum visits from niche-museums.com
- The update was implemented using Claude Code, an AI coding agent
- The agent cloned the simonw/simonwillisonblog repository to /tmp for reference
- Changes were made to blog-to-newsletter.html to include beats with descriptions
- Validation used python -m http.server and uvx rodney --help for browser automation
- The resulting PR added a UNION clause to an SQL query to filter drafts and unannotated beats
- This is part of the guide 'Agentic Engineering Patterns' created on 18th April 2026
Entities
Institutions
- Substack
- Datasette
- GitHub
- Claude Code