github.com/dogum/html-artifacts companion to Thariq's "Unreasonable Effectiveness of HTML"
A Claude skill, by way of Thariq Shihipar's argument

Markdown is a poor format for the things agents now make.

Plans, comparisons, code reviews, status reports, throwaway editors — they read dramatically better as self-contained HTML than as markdown documents. This skill teaches Claude when to make an HTML artifact instead, and equally important, when to leave well enough alone.

Nine artifacts below, each produced by the skill in response to a real prompt, and each rendered headless and checked before it shipped. This page is itself one of them.

The thesis, briefly

Markdown is optimized for documents — files you edit by hand, diff in version control, scroll through linearly. Agents are increasingly producing artifacts: things you read once and act on, share by link, or manipulate. For those, markdown's restrictions actively obscure the content.

HTML lifts those restrictions. Side-by-side comparison instead of stacked sections. A real flowchart instead of ASCII boxes. A live demo instead of paragraphs about how something would feel. A throwaway editor that round-trips back to markdown so you stay in the loop.

The same prompt — "compare three approaches to debouncing" — in both formats.
As markdown
## Approach 1: inline useEffect
- pro: zero deps
- pro: easy to debug
- con: duplicated everywhere

## Approach 2: custom hook
- pro: reusable
- pro: testable
- con: one more file

## Approach 3: library
- pro: edge cases handled
- pro: well-tested
- con: +1.4 kb
Reader holds 1, then 2, then 3 in their head while scrolling. The shape of the comparison is in their working memory, not on the page.
As HTML
01 inline0 deps+0 kb
02 hookreusable+0.2 kb
03 librarybattle-tested+1.4 kb
Reader scans across. The comparison is on the page, not in their head. They pick one.

Examples

nine artifacts · nine categories

Each is a self-contained .html file. None has a build step; none calls a server at view time; each is the kind of artifact the skill produces on prompt. Open any of them directly.

01 Exploration & planning

Three ways to do SSE streaming in Hono

Three approaches in three columns, identical structure. Code, pro/con tables, hard metrics, and an actual recommendation at the bottom — the thing markdown structurally can't do.

01-sse-comparison.html
02 Research & learning

How a quarter-car model computes IRI

Concept explainer with a live golden-car simulation — drag the bump amplitude up, watch IRI climb. Comparison to RMS-of-profile, marginal glossary, "where you'll meet it."

02-iri-explainer.html
03 Custom editor

Sprint triage board

Eight pre-filled tickets, drag between Now / Next / Later / Cut, click tags to filter. Ends with the non-negotiable feature: a copy as markdown button that round-trips your work back into a paste-able doc.

03-triage-editor.html
04 Report

Weekly status report

Shipped / in flight / blocked, color-coded, 14 items in 90 seconds of reading. Inline sparkline of PR throughput, asks separated from the body. Designed for the skim.

04-status-report.html
05 Diagram

Annotated deploy pipeline

Real flowchart drawn as inline SVG — nodes, edges, happy path in green, failure paths dashed in red. Click any step for what runs there, expected duration, and the failure mode.

05-flowchart.html
06 Deck

The case for HTML over markdown — a deck

Ten slides on the thesis, navigable with arrow keys. Self-referential by design: a slide deck arguing for HTML, in HTML. Press F for fullscreen.

06-deck.html
07 Code review & PR

Review: retry with backoff in api-client

The diff is the spine; six numbered notes sit in the margin, pinned to lines. Severity is worded as well as colored, jump links at the top, and a verdict that actually decides.

07-code-review.html
08 Design & prototypes

Ledger design tokens

Every token rendered as itself: swatches, a type scale at real size, spacing bars, radii, shadows, and easing curves you can hover to play. One-click copy of the value or the name.

08-design-tokens.html
09 Reports & research

Post-mortem: search latency after api v2.31.0

Impact summary first, then a drawn timeline with the pace visible: log excerpts at the moments that matter, a gap annotation where nothing happened, action items with owners. Prints cleanly.

09-postmortem.html

What's in the skill

SKILL.md + 12 references

SKILL.md is the entry point. It teaches recognition (when does a request want HTML?), the universal rules every artifact must follow, the carve-outs, and a five-step workflow that ends with verifying the page before handing it over. Each reference is pulled in only when the task fits; most artifacts need one or two. Eight are per-category patterns; four are cross-cutting: data and charts, accessibility and print, harness mechanics (the one file that knows which surface you're on), and the pre-delivery check.

Skill structure: SKILL.md at the center, twelve reference files as spokes exploration-and-planning code-review-and-pr design-and-prototypes diagrams-and-illustrations data-and-charts reports-and-research decks custom-editors matching-your-style accessibility-and-print harness-mechanics verify-before-delivering SKILL.md always loaded
SKILL.md — recognition heuristic, universal rules, carve-outs. Always in context.
references/ — pulled in on demand by the matching task type.

Stays out of the way for

where markdown still wins

A skill that mechanically rewrote every prompt as HTML would be worse than no skill — it would obscure the cases where markdown is genuinely the right answer. The recognition heuristic in SKILL.md explicitly defers to markdown for the categories below.

Conversational chat replies

"What does this regex do?" gets answered in chat. The skill doesn't manufacture a deliverable for a question that wants a sentence.

Code-only outputs

"Write a hash function" gets the hash function. No wrapping document, no pre-amble — just the code, the way the user asked.

Quick three-bullet summaries

Things the reader will scan once and discard. Markdown bullets are exactly the right shape; HTML structure would be ceremony.

Files that live in git over time

Specs and design docs reviewed in PRs across many revisions. HTML diffs are noisy; markdown diffs cleanly. The skill prefers markdown for these even when HTML would render better.

The meta

I'm a little bit afraid that people will read this article and turn it into a /html skill or something. While there might be some value in that, I want to emphasize that you don't need to do much to get Claude to do this. — Thariq Shihipar, The Unreasonable Effectiveness of HTML

That worry is right. A "/html skill" that mechanically converted every prompt into HTML would be exactly the bad outcome — it would obscure where markdown wins, and it would calcify into the default-AI aesthetic of gradient cards and emoji headers. This skill tries to be the version that doesn't do that.

Worry
A mechanical "always-output-HTML" rule.
Response
A recognition heuristic in SKILL.md: HTML when content benefits from layout, color, diagrams, or interactivity; markdown otherwise. The carve-outs above are explicit, not implied.
Worry
The default-AI aesthetic creeping in.
Response
matching-your-style.md ships with an explicit "avoid" list: gradient hero sections, four shades of indigo, emoji-decorated headers, glass morphism. Plus a baseline typographic CSS that doesn't lean on Tailwind cards.
Worry
People skipping the prompting fundamentals.
Response
The references teach patterns, not templates. The model still has to think about what the artifact wants to do — what's load-bearing in a comparison, what makes an explainer's demo worth including, what export an editor needs to round-trip.

Whether it succeeds is your call. The artifacts above are the skill's work; if any of them feels like it would have been better as markdown, that's a bug — open an issue.

Install

Claude Code · Claude.ai · anywhere skills load
Claude Code · recommended

Install from the marketplace

  1. Add this repo as a marketplace.
  2. Install the plugin. Updates arrive with /plugin update.
/plugin marketplace add dogum/html-artifacts
/plugin install html-artifacts@html-artifacts
~20 seconds · auto-updatable
Claude.ai · Cowork · cloud

Upload the .skill file

  1. Download html-artifacts.skill from the latest release.
  2. In Claude.ai, go to Settings → Capabilities → Skills.
  3. Upload the .skill file.
~30 seconds · re-upload to update
Manual

Copy the folder

  1. Clone the repo.
  2. Copy skills/html-artifacts/ into your skills directory. Any Agent Skills-compatible runtime works.
git clone https://github.com/dogum/html-artifacts.git
cp -r html-artifacts/skills/html-artifacts ~/.claude/skills/
~30 seconds