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.

Six artifacts below, each produced by the skill in response to a real prompt. 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

six artifacts · six 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.

What's in the skill

SKILL.md + 8 references

SKILL.md is the entry point. It teaches recognition (when does a request want HTML?), the universal rules every artifact must follow, and the carve-outs. Each per-category reference is pulled in only when the task fits — most artifacts only need one or two.

Skill structure: SKILL.md at the center, eight reference files as spokes exploration-and-planning code-review-and-pr design-and-prototypes diagrams reports-and-research decks custom-editors matching-your-style 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.ai · Claude Code
Claude.ai

Upload the .skill file

  1. Download html-artifacts.skill from the repo.
  2. In Claude.ai, go to Settings → Capabilities → Skills.
  3. Upload the .skill file.
~30 seconds · available in any new conversation
Claude Code

Drop the folder into ~/.claude/skills/

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