A new open-source project called html-anything flips the document workflow on its head. Instead of writing Markdown and converting to HTML, you feed raw content—Markdown, CSV, Excel, JSON, SQL, or plain notes—to your local AI agent and it outputs a finished single-file HTML artifact ready for publication. The tool auto-detects eight coding-agent CLIs already installed on your system: Claude Code, Cursor Agent, OpenAI Codex, Gemini CLI, GitHub Copilot CLI, OpenCode, Qwen Coder, and Aider. No API key required. You just press ⌘+Enter and watch the page render in real time via server-sent events streaming.

The Philosophy: HTML Is for Readers, Markdown Is for Writers

The project emerged from a simple observation by Anthropic's Claude Code team—they stopped writing internal docs in Markdown entirely and started shipping HTML directly. The argument is straightforward: Markdown is good for writers (easy to draft), but HTML is what readers actually consume. Markdown looks ugly when screenshotted into tweets, requires re-flowing for each platform like WeChat or Zhihu, and limits layout to whatever the renderer supports. HTML gives you complete control over visual design, works as a designed artifact out of the box, and one-click converts to any format. The html-anything team built their entire workflow around this premise: "HTML is the final form for humans. Markdown is just an intermediate state during writing."

Zero API Keys, Maximum Flexibility

The tool reuses whatever coding-agent CLI you already have authenticated in your terminal—claude login, cursor login, gemini auth—all of it carries over. On startup, the browser calls /api/agents and scans your entire PATH (including ~/.local/bin, ~/.bun/bin, /opt/homebrew/bin, ~/.npm-global-bin—directories a GUI-launched Node process normally misses) to surface every CLI it recognizes. Each CLI gets a thin adapter in next/src/lib/agents/argv.ts handling invocation arguments, stdin protocol, and stream parsing. The detection model is borrowed directly from nexu-io/open-design: one privileged process spawns CLIs, JSON-line is the wire protocol. If you've already paid for Claude Code or Cursor Pro, html-anything taps that existing subscription with zero marginal cost.

75 Skill Templates Across Nine Surface Modes

The template system covers magazine articles, keynote decks, résumés, posters, Xiaohongshu cards, tweet cards, web prototypes, data reports, and Hyperframes videos. Featured skills include deck-guizang-editorial (magazine × e-ink editorial with 10 locked layouts), deck-swiss-international (Swiss International style with a 16-column grid across 22 locked layouts), doc-kami-parchment (warm-parchment reading surface for long essays), video-hyperframes (Hyperframes/Remotion-compatible storyboard scripts), and frame-glitch-title (cyan/magenta chromatic offset with CRT scanlines). Web prototype skills span SaaS landing pages, dashboards, pricing tiers, mobile app prototypes, brutalist layouts, editorial web styles, and email marketing templates. One-click export routes to WeChat (juice-inlined CSS pastes cleanly), X/Weibo/Xiaohongshu (modern-screenshot renders iframe to 2× PNG via ClipboardItem), Zhihu (LaTeX equations converted to image placeholders), or standalone .html/.png download.

Hard Constraints Stop AI Slop

Every template enforces strict design rules borrowed from alchaincyf/huashu-design's anti-AI-slop discipline: CJK-first font stack with Noto Sans/Serif SC for Chinese and Inter/Manrope for Latin text, 8px baseline grid (all spacing and type sizes are multiples of 8), color contrast ≥4.5, no pure black or white backgrounds, rounded corners and soft shadows on interactive elements, and a hard rule against lorem ipsum—the model must use the user's actual data. Skills follow Claude Code's SKILL.md convention: SKILL.md frontmatter plus assets/, references/, and example.html. Drop a skill folder into next/src/lib/templates/skills/, restart the dev server, and it appears in the picker instantly.

Technical Architecture: Streaming Preview, Sandboxed Execution

The /api/convert endpoint spawns your local CLI via Node's child_process, pipes stdin/stdout through JSON-line parsing on the server side, then re-emits text deltas as SSE events that append directly to the iframe's srcdoc in real time. You watch the page draw line by line—interrupt anytime if it goes sideways and you won't have paid for a full generation you threw away. User HTML always renders inside