Skip to content
Agentmart
Submit a tool

quick-html

Build a single self-contained HTML file with Tailwind and CDN imports, no build step.

Skill by MarvinJWendt

IndexedMIT★ 1
Write a review

Chalk Labs

Need help deploying quick-html?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/marvinjwendt-quick-html

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Build a single self-contained HTML file with Tailwind and CDN imports, no build step. Reports, local experiment frontends, and debug UIs served by a backend.

Use cases: frontend, backend

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 1, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/quick-html

What's inside

Skill name
quick-html
Description
Build a single self-contained HTML file with Tailwind and CDN imports, no build step. Reports, local experiment frontends, and debug UIs served by a backend.
License
MIT
Instructions
104 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# quick-html

One `.html` file that opens in a browser and needs nothing else: no build step, no bundler, no Node. Dependencies load from jsDelivr and the markup stays readable, so the next agent to touch the page edits the thing that actually runs.

Three shapes come up: a report handed to a human, a frontend for a local experiment, and a debug UI a backend serves out of its own binary. Same file either way.

Write the file to disk and print the path. This never becomes a published artifact.

## Naming

A page a backend serves is `index.html`. A file a human opens is named after what it holds, so `kubernetes-cost-report-2026.html` rather than `report.html`. It lands in the working directory unless the repo has an obvious place for static files.

## Stack

Tailwind v4 through the browser build, `https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4`. Configuration goes in an inline `<style type="text/tailwindcss">` block, not a JS config object.

Alpine drives every page, the theme toggle and the tabs included. Any state beyond those is Alpine too.

Everything else is your call. These are the defaults to beat:

| Need | Package |
| --- | --- |
| charts | `chart.js` |
| tables that sort, filter or page | `tabulator-tables`, otherwise plain markup driven by Alpine |
| markdown | `marked` |
| syntax highlighting | `shiki` |
| icons | `lucide` |
| CSV parsing | `papaparse` |
| diagrams | `mermaid` |
| dates | native `Intl`, no package |

Shiki is ESM only, so it loads through `<script type="module">` from `https://cdn.jsdelivr.net/npm/shiki@<major>/+esm`. Its dual-theme mode emits both palettes as CSS variables in one pass, which is what keeps highlighted code readable on both sides of the theme toggle.

### Versions

Pin the major: `chart.js@4`. Never `@latest`, never a full version. Patches then arrive on their own and a new major cannot.

Resolve that major as you write the file, and again when you edit a page whose pins look old:

```sh
curl -s https://registry.npmjs.org/chart.js/latest | jq -r .version
```

If the major moved, pin the new one and migrate the code that used the old API.

## Chrome

A navbar across the top: the project or tool name as plain text on the left, tabs in the middle once there is more than one view, theme toggle on the right. A live page may put a refresh button and a last-updated timestamp beside the toggle. Nothing else belongs up there.

Tabs route through the hash (`#/logs`), so a reload keeps the view and a link points at one.

### Theme

Three states: system, light, dark. System is the default and follows `prefers-color-scheme` live through a `matchMedia` listener, not only at load. The choice persists in `localStorage`.

Two things break this quietly. Tailwind v4 resolves `dark:` against the media query alone, so class-based switching needs `@custom-variant dark (&:where(.dark, .dark *));` declared in the Tailwind style block. And the class has to land on `<html>` from an inline script in `<head>` that runs before the first paint, or every load flashes light.

### Looks

Professional, technical, and dense. These are data pages, so spacing stays tight. System font stack, no webfont. Monospace for anything a human scans rather than reads: IDs, hashes, durations, timestamps.

A neutral base (`slate` or `zinc`) plus one accent. Take the accent from the project when it has a palette of its own, otherwise pick one that suits what the tool does. Pages across different projects do not have to look alike.

Real `<button>` elements, visible focus rings, labelled inputs. That is the whole accessibility bar.

## Data

A page a backend serves fetches from that backend. A page handed to a human carries its data inline in `<script id="data" type="application/json">`.

Fetching pages need all three states: loading, empty, and failed. The failure state prints the status and the response body, since the page exists to debug something and a swallowed error defeats it.

Live pages refresh on a button, plus an interval the user can switch on and off and see. Poll silently and nobody can tell whether the page or the tool went stale. Reach for SSE or a WebSocket only when the backend already speaks one.

A report gets a `@media print` block, so it prints to a PDF worth sending to someone who will never run the tool.

## Readability

Agents do most of the later editing, and the file is their input. Keep it legible:

- A comment at the top: what the page is, where its data comes from, how to run it.
- Order: header comment, Tailwind theme block, markup, then one `<script>` holding the Alpine components.
- Section comments between major blocks of markup.
- `x-data` stays a single line on the element. Longer components live in the script as `Alpine.data('name', ...)`.
- Nothing minified, nothing generated, nothing pasted in as a blob.

## Prose on the page

Load `unslop` for the text that ships in the interface: labels, empty states, error copy, tooltips, headings. Load `technical-writing` too when prose carries the page, as in a report built of findings and paragraphs.

Charts route to `dataviz`. Colour that holds up in both themes is its subject, not this one.

## Editing a page that exists

Bring it to these rules, including the parts it currently contradicts, and report what you changed. A page on Tailwind v3 or without a theme toggle gets migrated, not matched.

## Checking it

Opening the page costs time, so spend it where it pays: once after finishing a one-shot report, or when part of the page is involved enough that you are unsure it works. The user saying something looks wrong is the other trigger. Not after every edit.

## When to stop

Say so instead of pushing the single file further once it needs a build step, routing past tabs, or components shared across pages, and when the repo already has a frontend stack this belongs in.

From MarvinJWendt/skills, MIT.

More from MarvinJWendt/skills

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Oct 10, 2026 (27 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from MarvinJWendt

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get quick-html running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying quick-html?

CallGet help
Cite this page

quick-html skill. Agent Mart. https://agentmart.dev/skills/marvinjwendt-quick-html (last updated 2026-10-24)