HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
simonw
tools
HTML2024–2026
simonw / tools

tools

Assorted useful tools, almost entirely generated using LLMs

7Distinct people
37Mentions
0Explicit recommenders
1.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Assorted useful tools, almost entirely generated using LLMs

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month37 dated mentions

Observed mentions: 2024-10-24 01:09:48 UTC to 2026-10-18 16:08:22 UTC.

02468102024-10-01 00:00:00 UTC to 2024-11-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsOct 20242024-11-01 00:00:00 UTC to 2024-12-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-12-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2025-02-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-02-01 00:00:00 UTC to 2025-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-01 00:00:00 UTC to 2025-04-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025-04-01 00:00:00 UTC to 2025-05-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-05-01 00:00:00 UTC to 2025-06-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-06-01 00:00:00 UTC to 2025-07-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025-07-01 00:00:00 UTC to 2025-08-01 00:00:00 UTC (exclusive): 10 mentions; 0 submissions, 10 comments2025-08-01 00:00:00 UTC to 2025-09-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-09-01 00:00:00 UTC to 2025-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-01 00:00:00 UTC to 2025-11-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsOct 20252025-11-01 00:00:00 UTC to 2025-12-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-12-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2026-01-01 00:00:00 UTC to 2026-02-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-02-01 00:00:00 UTC to 2026-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-03-01 00:00:00 UTC to 2026-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-01 00:00:00 UTC to 2026-05-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-05-01 00:00:00 UTC to 2026-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-06-01 00:00:00 UTC to 2026-07-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-07-01 00:00:00 UTC to 2026-08-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-08-01 00:00:00 UTC to 2026-09-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-09-01 00:00:00 UTC to 2026-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-01 00:00:00 UTC to 2026-11-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsOct 2026

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Oct 20242024-10-01 00:00:00 UTC2024-11-01 00:00:00 UTC202
Nov 20242024-11-01 00:00:00 UTC2024-12-01 00:00:00 UTC303
Dec 20242024-12-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
Jan 20252025-01-01 00:00:00 UTC2025-02-01 00:00:00 UTC000
Feb 20252025-02-01 00:00:00 UTC2025-03-01 00:00:00 UTC000
Mar 20252025-03-01 00:00:00 UTC2025-04-01 00:00:00 UTC202
Apr 20252025-04-01 00:00:00 UTC2025-05-01 00:00:00 UTC101
May 20252025-05-01 00:00:00 UTC2025-06-01 00:00:00 UTC101
Jun 20252025-06-01 00:00:00 UTC2025-07-01 00:00:00 UTC110
Jul 20252025-07-01 00:00:00 UTC2025-08-01 00:00:00 UTC10010
Aug 20252025-08-01 00:00:00 UTC2025-09-01 00:00:00 UTC000
Sep 20252025-09-01 00:00:00 UTC2025-10-01 00:00:00 UTC000
Oct 20252025-10-01 00:00:00 UTC2025-11-01 00:00:00 UTC202
Nov 20252025-11-01 00:00:00 UTC2025-12-01 00:00:00 UTC101
Dec 20252025-12-01 00:00:00 UTC2026-01-01 00:00:00 UTC505
Jan 20262026-01-01 00:00:00 UTC2026-02-01 00:00:00 UTC101
Feb 20262026-02-01 00:00:00 UTC2026-03-01 00:00:00 UTC000
Mar 20262026-03-01 00:00:00 UTC2026-04-01 00:00:00 UTC000
Apr 20262026-04-01 00:00:00 UTC2026-05-01 00:00:00 UTC101
May 20262026-05-01 00:00:00 UTC2026-06-01 00:00:00 UTC000
Jun 20262026-06-01 00:00:00 UTC2026-07-01 00:00:00 UTC101
Jul 20262026-07-01 00:00:00 UTC2026-08-01 00:00:00 UTC101
Aug 20262026-08-01 00:00:00 UTC2026-09-01 00:00:00 UTC303
Sep 20262026-09-01 00:00:00 UTC2026-10-01 00:00:00 UTC000
Oct 20262026-10-01 00:00:00 UTC2026-11-01 00:00:00 UTC202

What Hacker News says

37 sources
I'm planning an article at the moment in defense of lines of code. Saying "lines of code are a bad measurement" is too easy! It's about time someone presented an opposing argument. In my specific case, lines of code for my published open source projects is a metric that I trust, because I have high standards for those. I have plenty of other projects where I'll accept poor quality, unreviewed code (almost all of https://github.com/simonw/tools for example), but Datasette, sqlite-utils and LLM are not that. Of course, that's only useful for me personally and for people who trust me to stick to my own self-declared high standards!
In Eight Myths on Software Engineering and GenAI
> Can, but do people do that? Yes, of course they are. Not the people who are vibe-puking feed-content to try and make a quick buck; The people that are hustler first, craftsperson second. But there are plenty examples of it being done better if you start following projects. A simple example: https://github.com/simonw/tools/commits/main/ Its worth remembering that the word we use for what we do is _development_, and the vast majority of software running right now is undergoing continual development. I swear, there must be whole generation of coddled-coders out there who have never had to work on a legacy codebase, and these chuckleheads must be the source of most anti-clanker sentiment. In 2013 I started working for couchsurfing, a company that was trying to go from a volunteer-coded and operated web app to a "proper" startup with an
Read the rest
engineering team and a set of phone apps to go along with the application. The legacy codebase was worse than anything claude or codex will produce these days; It was a true cronenburg horror of php and mysql filled with a decade of twists, turns, dead and hidden features. Every step of that development project involved de-slopping, and none of it had been produced by AI.
In Artificial Intelligence: Ars Notoria and the Promise of Instant Knowledge
Right, the transcript is linked from the issue: https://github.com/simonw/sqlite-utils/issues/787#issuecomme... As far as I can tell I've shared more prompt transcripts than anyone else. Happy to be proven wrong about that. Look through my commit history on https://github.com/simonw/tools/commits and https://github.com/simonw/sqlite-utils/commits and https://github.com/simonw/datasette/commits and you'll see that commits that were AI-assisted almost all link to a transcript or include a prompt or both.
In Prefer strict tables in SQLite
Amusingly I just had Claude vibe code up a new tool and it has exactly the same bug! Safari only, you have to expand the "Document context" area to see it. Here's that HTML file (frozen at the version with the bug): https://github.com/simonw/tools/blob/e7a23e8a1083ea99a5b3ef5... It's hosted here, but I've added the overflow-x: hidden now so it's fixed: https://tools.simonwillison.net/openai-webrtc The bug only shows up if you increase your browser font size - at default size there's no scrollbar.
In Claude Fable is relentlessly proactive
I've been trying out the new model like this: OPENAI_API_KEY="$(llm keys get openai)" \ uv run https://tools.simonwillison.net/python/openai_image.py \ -m gpt-image-2 \ "Do a where's Waldo style image but it's where is the raccoon holding a ham radio" Code here: https://github.com/simonw/tools/blob/main/python/openai_imag... Here's what I got from that prompt. I do not think it included a raccoon holding a ham radio (though the problem with Where's Waldo tests is that I don't have the patience to solve them for sure): https://gist.github.com/simonw/88eecc65698a725d8a9c1c918478a...
In ChatGPT Images 2.0
I got this running on macOS using mlx-audio thanks to Prince Canuma: https://x.com/Prince_Canuma/status/2014453857019904423 Here's the script I'm using: https://github.com/simonw/tools/blob/main/python/q3_tts.py You can try it with uv (downloads a 4.5GB model on first run) like this: uv run https://tools.simonwillison.net/python/q3_tts.py \ 'I am a pirate, give me your gold!' \ -i 'gruff voice' -o pirate.wav
In Qwen3-TTS family is now open sourced: Voice design, clone, and generation
> Never mind six months; with AI, "you" can "build" something small and useful that works in six minutes. But "you" almost certainly didn't learn anything, and I think it's quite questionable if "you" "built" something. I think you learned something critically important: that the thing you wanted to build is feasible to build. A lot of ideas people have are not possible to build. You can't prove a negative but you CAN prove a positive: seeing a version of the thing you want to exist running in front of you is a big leap forward from pondering if it could be built. That's a useful thing to learn. The other day, at brunch, I had Claude Code on my phone add webcam support (with pinch-to-zoom) to my https://tools.simonwillison.net/is-it-a-bird is-it-a-bird CLIP-in-your-browser app. I didn't even have to look at the code it wrote to learn that
Read the rest
it's possible for Mobile Safari to render the webcam input in a box on the page (not full screen) and to have a rough pinch-to-zoom mechanism work - it's pixelated, not actual-camera-zoom, but for a CLIP app that's fine because the zoom is really just to try and exclude things from the image that aren't a potential bird. (The prompts I used for this are quoted in the PR description: https://github.com/simonw/tools/pull/175) > Can I get that with AI? You bet. And probably even better, in some respects. But I have to deliberately choose to. It's way too easy to just grab the exact answer I wanted and be on my way. 100% agree with that. You need a lot of self-discipline to learn effectively with AI. I'd argue you need self-discipline to learn via other means as well though.
In Stop Slopware
I'm effectively no longer typing code by hand: I decide what change I want to make and then prompt Claude Code to describe that change. Sometimes I'll have it figure out the fix too. An example from earlier today: https://github.com/simonw/llm-gemini/commit/fa6d147f5cff9ea9... That commit added 33 lines and removed 13 - so I'm already at a 20-lines-a-day level just from that one commit (and I shipped a few more plus a release of llm-gemini: https://github.com/simonw/llm-gemini/commits/a2bdec13e03ca8a...) It took about 3.5 minutes. I started from this issue someone had filed against my repo: Then I opened Claude Code and said: Run this command: uv run llm -m gemma-3-27b-it hi That ran the command and returned the error message. I then said: Yes, fix that - the gemma models do not support media resolution Which was enough for it to f
Read the rest
igure out the fix and run the tests to confirm it hadn't broken anything. I ran "git diff", thought about the change it had made for a moment, then committed and pushed it. Here's the full Claude Code transcript: https://gistpreview.github.io/?62d090551ff26676dfbe54d8eebbc... I verified the fix myself by running: uv run llm -m gemma-3-27b-it hi I pasted the result into an issue comment to prove to myself (and anyone else who cares) that I had manually verified the fix: https://github.com/simonw/llm-gemini/issues/116#issuecomment... Here's a more detailed version of the transcript including timestamps, showing my first prompt at 10:01:13am and the final response at 10:04:55am. https://tools.simonwillison.net/claude-code-timeline?url=htt... I built that claude-code-timeline application this morning too, and that thing is 2284 lines of code: https://github.com/simonw/tools/commits/main/claude-code-tim... - but that was much more of a vibe-coded thing, I hardly reviewed the code that was written at all and shipped it as soon as it appeared to work correctly. Since it's a standalone HTML file there's not too much that can go wrong if it has bugs in it.
In The State of AI Coding Report 2025
> how does a "tool" which constantly change its behaviour deserve being called a tool at all? Let's go with blast furnaces. They're definitely tools. They change over time - a team might constantly run one for twenty years but still need to monitor and adjust how they use it as the furnace itself changes behavior due to wear and tear (I think they call this "drift".) The same is true of plenty of other tools - pottery kilns, cast iron pans, knife sharpening stones. Expert tool users frequently use tools that change over time and need to be monitored and adjusted. I do think dogs and horses other animal tools remain an excellent example here as well. They're unpredictable and you have to constantly adapt to their latest behaviors. I agree that LLMs are unpredictable in that they are non-deterministic by nature. I also think that this is s
Read the rest
omething you can learn to account for as you build experience. I just fed this prompt to Claude Code: Add to_text() and to_markdown() features to justhtml.html - for the whole document or for CSS selectors against it Consult a fresh clone of the justhtml Python library (in /tmp) if you need to It did exactly what I expected it would do, based on my hundred of previous similar interventions with that tool: https://github.com/simonw/tools/pull/162
In Ask HN: How can I get better at using AI for programming?
I just shipped a new one of these a few minutes ago (from my phone). I found out about a new Python HTML parsing library - https://github.com/EmilStenstrom/justhtml - and wanted to try it out but I'm out without my laptop. So I had Claude Code for web build me a playground interface for trying it out: https://tools.simonwillison.net/justhtml It loads the Python library using Pyodide and lets you try it out with a simple HTML UI. The prompts I used are in this PR: https://github.com/simonw/tools/pull/156
In Useful patterns for building HTML tools

Showing the 15 most recent of 37 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.