What they built.
Simon Willison had built a growing collection of small public web tools, but visitors needed a quick way to understand what each one did. He used Claude 3.7 Sonnet through the llm command-line tool, together with Python scripts, to generate short descriptions from each tool's source code and publish them on a collection page.
His March 2025 account links the scripts, prompting material and actual output, and describes an initial run covering 78 tools. He later shortened the descriptions. That makes this a useful example of improving a real collection, not an abstract claim that AI can write documentation for any codebase accurately.
The author documents an initial run across 78 tools and links actual code and output. This is inspectable work, not a claim about current model performance.
Read the build accountHow the tools work together
The script sends an individual tool's code to the model and asks for an explanation. It stores the description with the source commit identifier, which marks the exact code version being described. Another script assembles the collection page. That version link gives the workflow a practical way to notice when a description may need regeneration after the code changes.
Workflow at a glance
Read each tool's source
Send the file to Claude through the llm CLI and request a short explanation.
Tie the description to the code
Save the text alongside the source commit identifier.
Publish and refresh when code changes
Build the collection page from those descriptions and regenerate outdated ones. Willison later shortened the copy.
How you could adapt the idea
A developer could adapt the idea to a small set of scripts or internal utilities: define a concise description format, retain the source revision and review a few outputs against actual behavior before scaling up. The historical Claude 3.7 model identifies Willison's build, not a current-model recommendation. The published code is a starting point to inspect, while correctness still depends on checking whether the description matches the program.
Effort, cost and limitations
- Effort
- Developers can inspect and adapt the scripts; visitors can browse the result without setup.
- Cost
- The post gives costs for historical runs. They are not a current price quote, so this guide does not turn them into a per-project promise.
Generated documentation can misunderstand source code and needs review. The historical Claude 3.7 model is preserved rather than replaced with a current model name.
Go to the original work.
Build account and code linksPublished tool descriptionsPublic source repositorySource-backed editorial account; PrisAIm did not run or independently benchmark this implementation.
