Agent Skills: html-effectiveness

Produce a single self-contained .html file instead of a wall of markdown when the user wants a report, dashboard, triage board, design doc, code review, flowchart, slide deck, postmortem, implementation plan, prompt tuner, feature-flag editor, or an agent-spawn deck (HTML carrying ready-to-paste prompts for parallel fan-out) — any artifact that benefits from layout, interaction, drag-drop, side-by-side comparison, or copy-to-clipboard export. Use when the user asks (English OR German, case-insensitive, typo-tolerant, semantic, NOT literal): "html instead of markdown", "make me a dashboard", "html report", "triage board", "status report", "wochenbericht", "postmortem", "implementierungsplan", "side by side", "vergleiche x y z", "code review", "slide deck", "präsentation", "feature flag editor", "spawn agents", "agenten spawnen". Fire eagerly when the output would otherwise be a long markdown table or a sortable/filterable list. Match on intent: tickets→triage-board, diff→code-review.

UncategorizedID: ANcpLua/ancplua-claude-plugins/html-effectiveness

Install this agent skill to your local

pnpm dlx add-skill https://github.com/ANcpLua/ancplua-claude-plugins/tree/HEAD/plugins/html-effectiveness/skills/html-effectiveness

Skill Files

Browse the full folder contents for html-effectiveness.

Download Skill

Loading file tree…

plugins/html-effectiveness/skills/html-effectiveness/SKILL.md

Skill Metadata

Name
html-effectiveness
Description
'Produce a single self-contained .html file instead of a wall of markdown when the user wants a report, dashboard, triage board, design doc, code review, flowchart, slide deck, postmortem, implementation plan, prompt tuner, feature-flag editor, or an agent-spawn deck (HTML carrying ready-to-paste prompts for parallel fan-out) — any artifact that benefits from layout, interaction, drag-drop, side-by-side comparison, or copy-to-clipboard export. Use when the user asks (English OR German, case-insensitive, typo-tolerant, semantic, NOT literal): "html instead of markdown", "make me a dashboard", "html report", "triage board", "status report", "wochenbericht", "postmortem", "implementierungsplan", "side by side", "vergleiche x y z", "code review", "slide deck", "präsentation", "feature flag editor", "spawn agents", "agenten spawnen". Fire eagerly when the output would otherwise be a long markdown table or a sortable/filterable list. Match on intent: tickets→triage-board, diff→code-review.'

html-effectiveness

Based on Thariq Shihipar's html-effectiveness repo. He works on Claude Code at Anthropic; the philosophy: agents producing HTML files instead of markdown walls because HTML carries spatial information and interaction that markdown flattens.

Canonical source — vendored in-tree

The 20 canonical patterns ship with this plugin as standalone .html files under ${CLAUDE_PLUGIN_ROOT}/skills/html-effectiveness/references/patterns/ (one per pattern.file, e.g. 01-exploration-code-approaches.html20-editor-prompt-tuner.html). No clone, no network, no external setup — the plugin carries its own source of truth and works on any machine. They are the upstream reference (Apache-2.0, see references/patterns/UPSTREAM-LICENSE): read them to learn the pattern, then write a new file with the user's data into the user's project area (default: ~/<task>/<slug>.html or alongside related artifacts) — never edit the vendored references in place.

Decision protocol

  1. Load the routing data. Read references/patterns.json from this skill folder. It contains 20 canonical patterns and a decision_tree mapping user-intent phrases (English + German + semantic) to use_pattern IDs. The triggering_principles block at the top tells you HOW to match (fuzzy, multilingual, typo-tolerant, intent-based — not literal).

  2. Match user intent. Scan the user's request for semantic fit with any entry in decision_tree. Match on intent regardless of language, case, or typos. If multiple patterns fit, pick the one whose key_pattern field most closely describes the data structure the user has. If still ambiguous, prefer the more interactive pattern (editor > report > diagram).

  3. Study the canonical source. Open ${CLAUDE_PLUGIN_ROOT}/skills/html-effectiveness/references/patterns/<pattern.file> and read it end-to-end. Don't paraphrase the pattern — internalize the HTML structure, CSS tokens, JS interaction code, and copy-button mechanism. Reuse the same eyebrow / h1 / sub / sticky-toolbar / column / card markup so the output feels like one family.

  4. Replicate with the user's real data. Replace Thariq's example data (Acme tickets, Birchline comments, etc.) with the user's actual data. Keep the design tokens (#FAF9F5 ivory bg, #D97757 clay accent, ui-serif, Georgia, serif + system-ui + SF Mono), layout, and interaction code intact. If the user has no real data yet, ask once for a sample — do not invent fictional company data.

  5. Honor the principles (see references/patterns.json:principles):

    • Self-contained: inline <style> and <script>, no external dependencies — fully offline, no Google Fonts.
    • Anthropic Coral DNA: design tokens in references/patterns.json:design_tokens.
    • Vanilla JS only. No React, no jQuery.
    • Editors end with a Copy as markdown (or Copy diff / Copy JSON / Copy gh commands) button that exports the UI state back into something the user can paste into the next prompt.
    • If the artifact contains private data (private repo names, customer info, internal URLs), save it under the user's home (e.g. ~/repo-audit/, ~/<task>/) — never commit to a public plugin repo.
  6. Output and open. Write the .html at a sensible location (default: ~/<task>/output.html or alongside related artifacts). Open it in the user's browser via open <file> for immediate inspection. For interactive editors, mention the export-button location so the user knows how to round-trip the UI state.

Trigger principles — read these before matching

  • Match on intent, not phrase. The trigger lists are EXAMPLES of intent, not a whitelist. If the user describes a deliverable that would render better with layout + interaction than as markdown prose, fire.
  • Languages: English + German + mixed. Triggers are listed bilingually. Mixed-language input ("mach mir einen status report"), Austrian/Swiss German variants, and informal contractions all count. Match by semantic intent regardless of language.
  • Typo tolerance. User typos ("reprot", "staus", "tirage", "flowshart", "implementierungsplan" misspelled) are expected. Match by stem / phonetic similarity.
  • Case-insensitive. "HTML REPORT", "html report", "Html Report" are the same.
  • Ambiguous user intent. If the user says "make me a thing for X", look at WHAT X is. A list of tickets → triage-board. A diff → code-review. A timeline → incident-report. Let the data shape decide the pattern.
  • Be pushy. Default to firing when the output would otherwise be a long markdown table, several sections of prose with categories, or a list the user will sort/filter/diff. Markdown for a paragraph; HTML for anything you'll come back to.

Palette choice

patterns.json:palettes defines two:

  • coral (default) — #FAF9F5/#D97757/#141413/#788C5D + ui-serif, Georgia, serif. Use for reports, plans, design docs, status updates, research explainers, editor UIs. Anything reading-room or knowledge-work.
  • github_dark#0d1117/#58a6ff/#3fb950/#f85149. Use for codebase audits, CI/CD dashboards, fan-out agent decks, terminal-adjacent tooling. Anything that lives next to a terminal session.

Pattern 21-agent-spawn-deck defaults to github_dark. All others default to coral. The user can override per request.

Composition (multi-pattern output)

If a task naturally splits across multiple deliverables (e.g., an implementation-plan AND a spawn-deck for executing the plan), write multiple linked .htmls and reference each other via <a href> at the bottom. Example: repo-cleanup-plan.html (pattern 16, plan) + repo-cleanup-spawn-deck.html (pattern 21, parallel scanners) + repo-cleanup-triage.html (pattern 18, result triage). Each links the next.

If a single pattern needs sub-work that parallelizes (audit 200 repos, scan 30 services), default to 21-agent-spawn-deck instead of one giant report — the deck carries N ready-to-paste prompts, the user fan-outs, the lead synthesizes.

When to skip this skill

  • The user explicitly asked for markdown / a commit message / a code change in a .py / .cs / etc. file.
  • The output is genuinely a single short paragraph or single code snippet.
  • The user wants prose they will paste into another system that doesn't render HTML (e.g., a Slack message body, a commit body, a CHANGELOG entry).

Examples (intent → pattern)

| User says | Pattern fires | |---|---| | "triage diese 200 dead repos" | 18-editor-triage-board | | "make me a weekly status of what shipped" | 11-status-report | | "wochenbericht für Sprint 14" | 11-status-report | | "zeig mir die generated C# vs YAML side by side" | 01-exploration-code-approaches | | "explain how auth flows through this repo" | 14-research-feature-explainer (or 04-code-understanding if structural) | | "tune my SKILL.md description against these 10 prompts" | 20-editor-prompt-tuner | | "incident bei deploy gestern, mach postmortem" | 12-incident-report | | "implementierungsplan für ANcpLua.NET.Sdk v3 mit Risks" | 16-implementation-plan | | "annotated diff für PR #145" | 03-code-review-pr | | "präsi für Bachelor-Verteidigung mit Pfeiltasten" | 09-slide-deck | | "feature flags editor für flags.production.json" | 19-editor-feature-flags | | "concept explainer für consistent hashing, interaktiv" | 15-research-concept-explainer | | "fan out 4 agents to scan my 349 repos" | 21-agent-spawn-deck (github_dark palette) | | "gib mir das deck mit prompts zum parallel ausführen für den shadow-ai audit" | 21-agent-spawn-deck | | "implementation plan PLUS spawn-deck zum ausführen" | 16-implementation-plan + 21-agent-spawn-deck (linked) |

Bundled asset

assets/otel-semconv-demo.html is a concrete proof-of-concept built on top of 01-exploration-code-approaches pattern, showing OTel semantic-convention YAML → generated C# diff with breaking-change filter. Open it to see the pattern applied to Alexander's actual problem domain.