---
title: "Prompts I use"
section: "raw"
type: "source"
created: "2026-08-22"
updated: "2026-08-22"
canonical: "https://pyweb.dev/wiki/raw/articles/simon-willison-prompts-2026"
---
# Prompts I use

Simon Willison’s Weblog
Subscribe
Sponsored by: Teleport — AI agents don’t sleep and will try anything to achieve their goal. Teleport explains how to deploy AI safely, starting with an isolated ephemeral trusted runtime.

Guides > Agentic Engineering Patterns

Prompts I use

This section of the guide will be continually updated with prompts that I use myself, linked to from other chapters where appropriate.

Artifacts #

I frequently use Claude's Artifacts feature for prototyping and to build small HTML tools. Artifacts are when regular Claude chat builds an application in HTML and JavaScript and displays it directly within the Claude chat interface. OpenAI and Gemini offer a finial feature which they both call Canvas.

Models love using React for these. I don't like how React requires an additional build step which prevents me from copying and pasting code out of an artifact and into static hosting elsewhere, so I create my artifacts in Claude using a project with the following custom instructions:

Proofreader #

I don't let LLMs write text for my blog. My hard line is that anything that expresses opinions or uses "I" pronouns needs to have been written by me. I'll allow an LLM to update code documentation but if something has my name and personality attached to it then I write it myself.

I do use LLMs to proofread text that I publish. Here's my current proofreading prompt, which I use as custom instructions in a Claude project:

Alt text #

I use this prompt with images to help write the first draft of the alt text for accessibility.

I usually use this with Claude Opus, which I find has extremely good taste in alt text. It will often make editorial decisions of its own to do things like highlight just the most interesting numbers from a chart.

These decisions may not always be the right ones. Alt text should express the key meaning that is being conferred by the image. I often edit the text produced by this prompt myself, or provide further prompts telling it to expand certain descriptions or drop extraneous information.

Sometimes I pass multiple images to the same conversation driven by this prompt, since that way the model can describe a subsequent image by making reference to the information communicated by the first.

Podcast highlights #

After I'm a guest on a podcast I like to publish a blog post with some quoted highlights from the conversation. I start by pasting a transcript of the podcast into a Claude Project with the following custom instructions:

Here's example output after pasting in the transcript from An AI state of the union: We've passed the inflection point, dark factories are coming, and automation timelines with Lenny Rachitsky.

← Adding a new content type to my blog-to-newsletter tool

This is a chapter from the guide Agentic Engineering Patterns.

Chapters in this guide

Principles
What is agentic engineering?
Writing code is cheap now
Hoard things you know how to do
AI should help us produce better code
Anti-patterns: things to avoid
Working with coding agents
How coding agents work
Using Git with coding agents
Subagents
Testing and QA
Red/green TDD
First run the tests
Agentic manual testing
Understanding code
Linear walkthroughs
Interactive explanations
Annotated prompts
GIF optimization tool using WebAssembly and Gifsicle
Adding a new content type to my blog-to-newsletter tool
Appendix
Prompts I use
prompt-engineering 196

Created: 28th February 2026
Last modified: 2nd April 2026
13 changes

Previous: Adding a new content type to my blog-to-newsletter tool

Disclosures Colophon © 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026

---

## Agent Navigation

### Machine endpoints
- Knowledge graph: https://pyweb.dev/api/graph.json
- Graph analysis: https://pyweb.dev/api/graph-analysis.json
- Context index: https://pyweb.dev/llms.txt
