Ephemeral
- Scrollback is a buffer, not a record
- Close the tab, lose the analysis
- Context compaction eats the middle of long sessions
- Nothing to send to a teammate or a meeting
1.0Launch talk · 15 min · for developers who run coding agents
The case for HTML artifacts: when an agent's answer has shape, give it a document — one self-contained file that opens anywhere and lives forever.
2.0Cold open
## Comparison: queue vs. cron vs. event-driven rebuild ### Option A — durable queue | Option | Latency | Failure mode | Ops cost | |--------|---------|--------------|----------| | Queue | ~2s | redelivery | medium | | Cron | ~60s | silent skip | low | - Tradeoff 14 of 23: backpressure vs. simplicity... - See also the migration plan in section 6, which... ### Rollback strategy (do not lose this part) $ █
3.0The problem
Short answers are fine in the terminal. The failure starts exactly when the answer becomes worth keeping.
4.0The thesis
If the reader needs to compare, navigate, review, archive, or hand the answer to someone else — it should be one self-contained HTML file, not a scroll of markdown. The browser is the most widely deployed document reader on earth, and it is already on your machine.
5.0Mental model
6.0What an artifact is
7.0The skill family
operator-brief · status-report — what happened, what is nextbuild-plan · implementation-map — phases, files, data flowpr-review-packet · release-brief — diff tour, deploy proofincident-report · decision-brief — timeline, options, tradeoffsexplainer · prototype / editor — concepts, clickable flowstalk-deck — speaker notes + run-of-show (this file)workshop-deck — exercises, labs, checkpointsessay-deck — deck plus long-form guidedemo-deck — live demos with fallbackslaunch-deck · teaching-guide — narrative, PDF-firstShared rules: smallest mode that fits, evidence first, self-contained file, validate before shipping.
8.0Self-containment is a security posture
| Banned in every profile | Why |
|---|---|
| <script src> · CDNs | no remote code, ever |
inline on* handler attributes | script goes in one auditable block |
| javascript: URLs · meta refresh | no sneaky execution or redirects |
| iframe · object · embed · base | no foreign documents inside yours |
| external fonts, images, css url() | no phone-home, works offline forever |
9.0The annotation loop
10.0Demo · live
| Step | Beat |
|---|---|
| 1 | Ask the agent a question with shape — a six-option architecture comparison |
| 2 | Run /htmlify on the answer |
| 3 | Validator runs; artifact opens in the default browser |
| 4 | Highlight a weak claim, leave a comment, export the bundle |
| 5 | Paste the bundle back; the agent ships a revised artifact |
Screenshot of the rendered decision-brief artifact with an annotation open. To be captured from a real session before recording — not faked, not illustrated.
11.0Failure modes
| Answer shape | Right channel | Why |
|---|---|---|
| Short, linear, command-like | stdout | you will act, not re-read |
| Yes/no plus one reason | stdout | a file is ceremony |
| Mid-loop iteration, half-formed | stdout | artifacts assert; drafts should not |
| Comparison, plan, timeline, review | artifact | shape needs layout |
| Anything headed to a meeting or archive | artifact | permanence is the point |
Rule of thumb: if you would never scroll back to it, do not make a file out of it.
12.0Install
git clone https://github.com/zakelfassi/htmlify.git ~/.claude/skills/htmlify
git clone https://github.com/zakelfassi/htmlify.git ~/.codex/skills/htmlify
pi install npm:@zakelfassi/htmlify
printf '%s' "$ANSWER" | npx @zakelfassi/htmlify htmlify-answer --title "Answer"
13.0Run of show · chapters copy-pastable for YouTube
| Time | Chapter | Beat |
|---|---|---|
| 00:00 | Cold open | the wall of markdown, scrolling away |
| 01:10 | The problem | ephemeral + unreadable at length |
| 02:40 | The thesis | answers with shape deserve a document |
| 04:00 | Mental model | evidence, author, validate — one file |
| 05:30 | Anatomy of an artifact | plate, wells, stamps, crop marks |
| 07:00 | The skill family | htmlify modes, deckify modes |
| 08:20 | Security posture | what the validator bans; three profiles |
| 09:50 | The annotation loop | comment in browser, markdown back |
| 11:10 | Demo | /htmlify end to end, fallback ready |
| 13:00 | When to stay in the terminal | failure modes, rule of thumb |
| 13:50 | Install | one command per agent |
| 14:30 | Close | checklist + repo |
14.0Close
Star it, install it, htmlify your next real answer:
github.com/zakelfassi/htmlify