html
You are producing a single self-contained .html file, not a markdown document. The reader will open it directly in a browser. No build step, no framework, no install. Treat the file as the deliverable.
Based on Thariq Shihipar's The unreasonable effectiveness of HTML — the observation that markdown flattens information that is inherently spatial, comparative, or interactive, and a small HTML file fixes this.
What this skill is for (read this first)
Agent-generated artifacts for a human reader. Throwaway or reference, not production.
Concretely, the things this skill produces are:
- Working documents the reader will read once and act on (a plan, an options comparison, a PR writeup, a status report).
- Reference pages the reader will return to (a design-tokens page, a codemap, an explainer).
- Throwaway tools the reader uses for a few minutes to do a piece of work, then exports out of (a triage board, a feature-flag toggler, a motion tuner).
What this skill is not for:
- Production websites or apps shipped to end users. The conventions here (single file, no build step, no framework, no server, vanilla JS, in-memory state) exist for fast disposability, not for production quality. If the user is building something they ship to customers, this is the wrong tool — use a real frontend skill.
- Long-form prose with no shape (an email, a paragraph of analysis, a conversational reply). HTML doesn't earn its place when the content is just sentences. Use markdown.
- Things that need persistence, multi-user state, or a backend. State here lives in memory and dies on refresh. The export button is how work survives.
If you're not sure which side a request falls on, ask yourself: would a human be happy reading this once in a browser tab and then closing it? If yes, this skill applies. If they need to bookmark it, share it with twenty colleagues, and have it still work in six months — that's a different skill.
When this skill applies (signals)
If the user invoked /html or a pattern slash command directly, just produce HTML. They've already chosen.
Otherwise, the strong signals are:
- Comparison — "show me my options", "compare X vs Y", "trade-offs of A, B, C"
- Code review or PR — annotate a diff, write the PR description, map a codebase
- Design — tokens, component variants, contact sheet
- Motion — animation, transition, click-through where feel matters
- Diagram — flowchart, architecture, data flow, illustrative figures
- Deck — a short presentation you'd arrow-key through
- Explainer — concept or feature, with collapsibles and tabs
- Recurring report — weekly status, incident timeline, post-mortem
- Editor — a throwaway UI for the specific thing the user is wrestling with
- Table — rows × columns the reader needs to sort, filter, or scan
If the request is plain prose without shape, use markdown. HTML is not a universal hammer; it earns its place when the content has structure.
What every output looks like
Every artifact this skill produces obeys these conventions. Patterns assume you've followed them.
- Single file. One
.html. No external CSS, no external JS, no build step. Inline everything.
- No network at render time. No CDN, no Google Fonts, no remote images. The artifact must render offline.
- Locked look — Claude editorial system. Start from
templates/base.html. Do not redesign tokens per artifact. The look (cream canvas #faf9f5, coral accent #cc785c, dark navy #181715, EB Garamond serif display at weight 400 with negative tracking, Inter / system sans body, JetBrains Mono code) is fixed across every artifact this skill produces so the reader recognizes the genre on sight. If you need to tune a token, change base.html, not the per-artifact <style>.
- Mobile-readable. Viewport meta is in the template. Multi-column layouts collapse below ~720px.
- Semantic HTML.
<section>, <article>, <details>/<summary>, <figure>, <table>. Headings nest properly.
- Information has shape. Don't pour markdown into a
<div>. Side-by-side things go in a grid. Sequences go on a timeline. Risks go in a table. If the content has no shape, you're producing the wrong artifact — use markdown.
- A "Prompt:" block near the top. Small italic callout with the user's request, near-verbatim. Makes the artifact legible later and makes it forkable. Already styled in the template as
.prompt.
- Inline SVG over images. The agent has a real pen — use it. Diagrams are
<svg>, not <img>.
- Vanilla JS only, sparingly. One
<script> tag at the bottom. State in a single in-memory object. No React, no Vue, no jQuery, no framework. No localStorage unless explicitly requested.
- Close the loop: export back to text. Any artifact the user can do something to (toggle, reorder, tune, edit) MUST end with a button that emits the result as something pasteable — markdown, JSON, a diff, a prompt. The artifact is throwaway; the export is the durable output. This is the single most important convention.
- Export-first design. Decide what text the user will copy out before designing the UI. The data model serves that export; the UI mutates the data model; the data model must always be derivable into the export string. Applies to any interactive pattern —
editor, motion, tokens, table, and interactive variants of plan or pr. Detailed in patterns/editor.md.
- Live tuning uses primitives from the gallery. When the user asks to tune values live (sliders, toggles, drag-and-drop, sort, filter, swatch pickers), lift the primitive from
gallery/interactions.html rather than writing one from scratch. Keeps interaction style consistent across artifacts.
How to start
In this order, every time:
- Identify the pattern(s). Skim the table below. Pick the closest one. If a request spans two patterns (planning + comparison, explainer + diagram), pick a primary and borrow structure from the secondary — don't refuse to combine.
- Read the relevant pattern playbook(s).
patterns/<name>.md, ~70–150 lines each, opinionated and prescriptive. The playbook owns the shape of the artifact: sections, order, what the export emits.
- Read the shared template.
templates/base.html — boilerplate, CSS variables, utility classes. Start from this rather than rewriting it. Do not redefine the tokens.
- Decide the export format before the UI (if interactive). What text would the user paste somewhere after they're done? Markdown? A diff? A JSON blob? A re-issuable prompt? The data model serves that export.
- Write the file. One pass: head → header (title + prompt block) → main content → export button + script.
Reference files (don't copy structure from these)
The gallery/ folder is a look + interaction reference, not a shape reference. Each file shows primitives in isolation; structure for the artifact you're producing comes from the pattern playbook, not from gallery files.
gallery/look.html — color swatches, type ramp, callout / chip / card / glance / timeline variants. After producing an artifact, mentally compare its surfaces, type, and chips to this file. If they don't match, your tokens drifted — fix them.
gallery/interactions.html — sliders, toggles, switches, drag-and-drop columns, sortable lists, filter bars, segmented controls, swatch pickers, number steppers. Pull the primitive you need when the user wants to tune values live.
gallery/navigation.html — tabs, arrow-key deck, sticky side-nav, anchor row, collapsible details, sticky export bar. Pull from here when the artifact needs to move the reader around.
Where the file goes
- If a working directory or output path is implied, write there.
- Otherwise: current working directory, kebab-case filename from the topic.
debounced-search-options.html, cycle-14-triage.html, comment-threads-plan.html.
- After writing, tell the user the path and suggest they open it.
Patterns
Each lives at patterns/<name>.md. Read the one you need.
Universal patterns (work for any domain — software, marketing, research, ops, life admin):
| Pattern |
When to use |
options |
"Show me 2–4 ways to do X with trade-offs" — any decision before commitment |
plan |
A milestoned plan with a timeline, mockups or sketches, and a risk table |
diagram |
Hand-rolled SVG diagrams — flowcharts, architecture, illustrative figures |
deck |
A short presentation, arrow-key navigable, single file |
explainer |
Layered explanation — TL;DR, collapsibles, tabs, glossary |
status |
Recurring report — weekly status, project update, post-mortem, retro |
editor |
Throwaway UI for editing the specific thing at hand, with export-back-to-text |
table |
Sortable, filterable tabular data — incidents, customers, line-items, anything with rows and columns |
Software-specific patterns (assume the user is working with code; descriptions reflect this):
| Pattern |
When to use |
pr |
Code-review writeup — annotated diff OR author's PR description |
codemap |
Onboarding to an unfamiliar codebase — boxes, arrows, hot path, entry points |
tokens |
Render a design system — live swatches, type ramp, component contact sheet |
motion |
UI animation or click-through prototype where feel can't be described in prose |
Combining patterns
Real requests cross pattern boundaries. That's normal — combine, don't refuse.
Common combinations:
- plan + options. "Plan the feature, but show me three ways to do the realtime part." → Use
plan as the spine, drop an options block inside section 02 (data flow) showing the alternatives for the contested decision.
- explainer + diagram. "Explain how X works." Most good explainers have one or two diagrams. Use
explainer as the spine, embed diagram-pattern SVG figures inline.
- status + diagram. A post-mortem with an architecture diagram showing where the failure was. Use
status as the spine, embed a diagram in the root-cause section.
- editor + options. "Help me pick which of these features to cut, and show me what the cut and remaining feature lists look like." → An
editor (drag-to-cut) whose export emits two markdown lists.
When combining, pick the primary pattern by which one most determines the overall shape of the file. The secondary pattern contributes a section or a component, not the whole structure. Read both playbooks; resolve conflicts in favor of the primary.
Anti-patterns
- Markdown-in-a-
<div>. If your <body> is one big <div> of paragraphs and headers, you've produced HTML but not a useful artifact. The content has no shape — use markdown.
- Generic-LLM aesthetics. Avoid the gradient hero, the floating shadowed card, rainbow emoji bullets. These telegraph "AI made this" and undermine authority. Use the base template's restrained tokens; don't reach for decoration.
- No export on an editor. An interactive artifact without a "copy as ..." button is half-built. The user can't get the work back out.
- Frameworks. No React, no Vue, no Tailwind, no Bootstrap. The point is no build step. (Exception: if the user explicitly asks for "a React component", that's a different request — not this skill.)
- External assets. System fonts, inline SVG, no
<link rel="stylesheet">, no <img src="https://...">. Render offline.
- Overlong files. A good artifact in any of these patterns is 200–700 lines of HTML. Past 1000, you're building a website when the user wanted a page.
Self-check before declaring done
- Does it open standalone with no network?
- Is there a "Prompt:" block near the top?
- Does the content have shape — grid, timeline, table, diagram — not stacked paragraphs?
- If interactive: working export button? Export format chosen before the UI?
- Mobile-readable (columns collapse, type scales)?
- Kebab-case filename, descriptive of the topic?
- Did you read the pattern playbook(s)? If no, go back.
- Did you keep the locked look — cream canvas, coral accent, EB Garamond display, Inter body — straight from
base.html? Compare visually against gallery/look.html if unsure.
1---2name: html3description: Produce a single self-contained .html file instead of a markdown wall when the answer has shape — side-by-side comparisons, a timeline, a diagram, a sortable list, or a deck. This skill should be used when the user invokes /html or any of its patterns (options, plan, pr, codemap, tokens, motion, diagram, deck, explainer, status, editor), and when a request implies a structured artifact — phrases like "show me my options for X", "write the plan", "do a post-mortem", "make a deck from these notes", "let me triage these", "render the design system", "explain how X works", "diagram the flow". Prefer this skill even when the user says "write me a doc" or "summarize" — HTML is often the better surface, and the user can always ask for markdown if they prefer.4---56# html78You are producing **a single self-contained `.html` file**, not a markdown document. The reader will open it directly in a browser. No build step, no framework, no install. Treat the file as the deliverable.910Based on Thariq Shihipar's [*The unreasonable effectiveness of HTML*](https://thariqs.github.io/html-effectiveness/) — the observation that markdown flattens information that is inherently spatial, comparative, or interactive, and a small HTML file fixes this.1112## What this skill is for (read this first)1314**Agent-generated artifacts for a human reader.** Throwaway or reference, not production.1516Concretely, the things this skill produces are:1718- **Working documents** the reader will read once and act on (a plan, an options comparison, a PR writeup, a status report).19- **Reference pages** the reader will return to (a design-tokens page, a codemap, an explainer).20- **Throwaway tools** the reader uses for a few minutes to do a piece of work, then exports out of (a triage board, a feature-flag toggler, a motion tuner).2122What this skill is **not** for:2324- **Production websites or apps** shipped to end users. The conventions here (single file, no build step, no framework, no server, vanilla JS, in-memory state) exist for fast disposability, not for production quality. If the user is building something they ship to customers, this is the wrong tool — use a real frontend skill.25- **Long-form prose** with no shape (an email, a paragraph of analysis, a conversational reply). HTML doesn't earn its place when the content is just sentences. Use markdown.26- **Things that need persistence, multi-user state, or a backend.** State here lives in memory and dies on refresh. The export button is how work survives.2728If you're not sure which side a request falls on, ask yourself: would a human be happy reading this once in a browser tab and then closing it? If yes, this skill applies. If they need to bookmark it, share it with twenty colleagues, and have it still work in six months — that's a different skill.2930## When this skill applies (signals)3132If the user invoked `/html` or a pattern slash command directly, just produce HTML. They've already chosen.3334Otherwise, the strong signals are:3536- **Comparison** — "show me my options", "compare X vs Y", "trade-offs of A, B, C"37- **Code review or PR** — annotate a diff, write the PR description, map a codebase38- **Design** — tokens, component variants, contact sheet39- **Motion** — animation, transition, click-through where feel matters40- **Diagram** — flowchart, architecture, data flow, illustrative figures41- **Deck** — a short presentation you'd arrow-key through42- **Explainer** — concept or feature, with collapsibles and tabs43- **Recurring report** — weekly status, incident timeline, post-mortem44- **Editor** — a throwaway UI for the specific thing the user is wrestling with45- **Table** — rows × columns the reader needs to sort, filter, or scan4647If the request is plain prose without shape, use markdown. HTML is not a universal hammer; it earns its place when the content has structure.4849## What every output looks like5051Every artifact this skill produces obeys these conventions. Patterns assume you've followed them.52531. **Single file.** One `.html`. No external CSS, no external JS, no build step. Inline everything.542. **No network at render time.** No CDN, no Google Fonts, no remote images. The artifact must render offline.553. **Locked look — Claude editorial system.** Start from `templates/base.html`. Do not redesign tokens per artifact. The look (cream canvas `#faf9f5`, coral accent `#cc785c`, dark navy `#181715`, EB Garamond serif display at weight 400 with negative tracking, Inter / system sans body, JetBrains Mono code) is fixed across every artifact this skill produces so the reader recognizes the genre on sight. If you need to tune a token, change `base.html`, not the per-artifact `<style>`.564. **Mobile-readable.** Viewport meta is in the template. Multi-column layouts collapse below ~720px.575. **Semantic HTML.** `<section>`, `<article>`, `<details>/<summary>`, `<figure>`, `<table>`. Headings nest properly.586. **Information has shape.** Don't pour markdown into a `<div>`. Side-by-side things go in a grid. Sequences go on a timeline. Risks go in a table. If the content has no shape, you're producing the wrong artifact — use markdown.597. **A "Prompt:" block near the top.** Small italic callout with the user's request, near-verbatim. Makes the artifact legible later and makes it forkable. Already styled in the template as `.prompt`.608. **Inline SVG over images.** The agent has a real pen — use it. Diagrams are `<svg>`, not `<img>`.619. **Vanilla JS only, sparingly.** One `<script>` tag at the bottom. State in a single in-memory object. No React, no Vue, no jQuery, no framework. No `localStorage` unless explicitly requested.6210. **Close the loop: export back to text.** Any artifact the user can *do something to* (toggle, reorder, tune, edit) MUST end with a button that emits the result as something pasteable — markdown, JSON, a diff, a prompt. The artifact is throwaway; the export is the durable output. This is the single most important convention.6311. **Export-first design.** Decide what text the user will copy out *before* designing the UI. The data model serves that export; the UI mutates the data model; the data model must always be derivable into the export string. Applies to any interactive pattern — `editor`, `motion`, `tokens`, `table`, and interactive variants of `plan` or `pr`. Detailed in `patterns/editor.md`.6412. **Live tuning uses primitives from the gallery.** When the user asks to tune values live (sliders, toggles, drag-and-drop, sort, filter, swatch pickers), lift the primitive from `gallery/interactions.html` rather than writing one from scratch. Keeps interaction style consistent across artifacts.6566## How to start6768In this order, every time:69701. **Identify the pattern(s).** Skim the table below. Pick the closest one. If a request spans two patterns (planning + comparison, explainer + diagram), pick a primary and borrow structure from the secondary — don't refuse to combine.712. **Read the relevant pattern playbook(s).** `patterns/<name>.md`, ~70–150 lines each, opinionated and prescriptive. The playbook owns the *shape* of the artifact: sections, order, what the export emits.723. **Read the shared template.** `templates/base.html` — boilerplate, CSS variables, utility classes. Start from this rather than rewriting it. **Do not redefine the tokens.**734. **Decide the export format before the UI** (if interactive). What text would the user paste somewhere after they're done? Markdown? A diff? A JSON blob? A re-issuable prompt? The data model serves that export.745. **Write the file.** One pass: head → header (title + prompt block) → main content → export button + script.7576### Reference files (don't copy structure from these)7778The `gallery/` folder is a **look + interaction reference**, not a shape reference. Each file shows primitives in isolation; structure for the artifact you're producing comes from the pattern playbook, not from gallery files.7980- **`gallery/look.html`** — color swatches, type ramp, callout / chip / card / glance / timeline variants. After producing an artifact, mentally compare its surfaces, type, and chips to this file. If they don't match, your tokens drifted — fix them.81- **`gallery/interactions.html`** — sliders, toggles, switches, drag-and-drop columns, sortable lists, filter bars, segmented controls, swatch pickers, number steppers. Pull the primitive you need when the user wants to tune values live.82- **`gallery/navigation.html`** — tabs, arrow-key deck, sticky side-nav, anchor row, collapsible details, sticky export bar. Pull from here when the artifact needs to move the reader around.8384## Where the file goes8586- If a working directory or output path is implied, write there.87- Otherwise: current working directory, kebab-case filename from the topic. `debounced-search-options.html`, `cycle-14-triage.html`, `comment-threads-plan.html`.88- After writing, tell the user the path and suggest they open it.8990## Patterns9192Each lives at `patterns/<name>.md`. Read the one you need.9394Universal patterns (work for any domain — software, marketing, research, ops, life admin):9596| Pattern | When to use |97|---|---|98| `options` | "Show me 2–4 ways to do X with trade-offs" — any decision before commitment |99| `plan` | A milestoned plan with a timeline, mockups or sketches, and a risk table |100| `diagram` | Hand-rolled SVG diagrams — flowcharts, architecture, illustrative figures |101| `deck` | A short presentation, arrow-key navigable, single file |102| `explainer` | Layered explanation — TL;DR, collapsibles, tabs, glossary |103| `status` | Recurring report — weekly status, project update, post-mortem, retro |104| `editor` | Throwaway UI for editing the specific thing at hand, with export-back-to-text |105| `table` | Sortable, filterable tabular data — incidents, customers, line-items, anything with rows and columns |106107Software-specific patterns (assume the user is working with code; descriptions reflect this):108109| Pattern | When to use |110|---|---|111| `pr` | Code-review writeup — annotated diff OR author's PR description |112| `codemap` | Onboarding to an unfamiliar codebase — boxes, arrows, hot path, entry points |113| `tokens` | Render a design system — live swatches, type ramp, component contact sheet |114| `motion` | UI animation or click-through prototype where feel can't be described in prose |115116## Combining patterns117118Real requests cross pattern boundaries. That's normal — combine, don't refuse.119120Common combinations:121122- **plan + options.** "Plan the feature, but show me three ways to do the realtime part." → Use `plan` as the spine, drop an `options` block inside section 02 (data flow) showing the alternatives for the contested decision.123- **explainer + diagram.** "Explain how X works." Most good explainers have one or two diagrams. Use `explainer` as the spine, embed `diagram`-pattern SVG figures inline.124- **status + diagram.** A post-mortem with an architecture diagram showing where the failure was. Use `status` as the spine, embed a `diagram` in the root-cause section.125- **editor + options.** "Help me pick which of these features to cut, and show me what the cut and remaining feature lists look like." → An `editor` (drag-to-cut) whose export emits two markdown lists.126127When combining, pick the **primary** pattern by which one most determines the overall shape of the file. The secondary pattern contributes a section or a component, not the whole structure. Read both playbooks; resolve conflicts in favor of the primary.128129## Anti-patterns130131- **Markdown-in-a-`<div>`.** If your `<body>` is one big `<div>` of paragraphs and headers, you've produced HTML but not a useful artifact. The content has no shape — use markdown.132- **Generic-LLM aesthetics.** Avoid the gradient hero, the floating shadowed card, rainbow emoji bullets. These telegraph "AI made this" and undermine authority. Use the base template's restrained tokens; don't reach for decoration.133- **No export on an editor.** An interactive artifact without a "copy as ..." button is half-built. The user can't get the work back out.134- **Frameworks.** No React, no Vue, no Tailwind, no Bootstrap. The point is *no build step*. (Exception: if the user explicitly asks for "a React component", that's a different request — not this skill.)135- **External assets.** System fonts, inline SVG, no `<link rel="stylesheet">`, no `<img src="https://...">`. Render offline.136- **Overlong files.** A good artifact in any of these patterns is 200–700 lines of HTML. Past 1000, you're building a website when the user wanted a page.137138## Self-check before declaring done1391401. Does it open standalone with no network?1412. Is there a "Prompt:" block near the top?1423. Does the content have shape — grid, timeline, table, diagram — not stacked paragraphs?1434. If interactive: working export button? Export format chosen *before* the UI?1445. Mobile-readable (columns collapse, type scales)?1456. Kebab-case filename, descriptive of the topic?1467. Did you read the pattern playbook(s)? If no, go back.1478. Did you keep the locked look — cream canvas, coral accent, EB Garamond display, Inter body — straight from `base.html`? Compare visually against `gallery/look.html` if unsure.