visualize
Skill2 starsChanged 3 months agoMITView on GitHub
Create self-contained HTML visualizations (single .html file) from conversation content, data, or ideas. Trigger on: "visualize this," "make a deck/slide/infographic/dashboard," "build a one-pager / poster / carousel / kanban / mind map / org chart / flowchart," "show me a chart," "render as HTML," or any ask to convert text/data into a visual HTML artifact. Do NOT trigger when the user asks for a Figma design (use `figma-*`), a Tally form (use `tally`), a Canva file (use `canva-*`), a real multi-page website, a React/Vue component, or a screenshot of an existing page (use `agent-browser`).
45 other projects use a version of this.
Adopted by
Most recently taken up by
- ex3ndr/skillstheir own version, first seen Nov 1, 2026
- therapys/dotagentstheir own version, first seen Nov 1, 2026
- Adrian333Dev/flowtheir own version, first seen Nov 1, 2026
- liormesh/trestletheir own version, first seen Nov 1, 2026
- stefanprodan/1ctxtheir own version, first seen Oct 25, 2026
- PKU-DAIR/AutoScitheir own version, first seen Oct 25, 2026
Used with
Projects with it also use exp-pilot-eval, exp-pilot-run and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
skyllwtSkillexp-pilot-eval
Pilot result evaluation — read pilot results, apply success criteria, update idea page (pilot_result, failure_reason if failed), generate PILOT_VERDICT_REPORT. Called by /ideate Phase 5 after /exp-pilot-run.
Also in 4 projects that use this
skyllwtSkillexp-pilot-run
Pilot experiment execution — read Pilot Spec YAML, write pilot code, run experiment(Confirm with the user before operation and require the applicant to conduct manual inspection), return results. Called by /ideate Phase 5. Does NOT modify wiki pages or judge pass/fail.
Also in 4 projects that use this
LambenthanSkilldaily-arxiv
每日从 arXiv 拉取新论文,过滤相关性,auto-ingest 高优先级论文,检测 SOTA 更新
Also in 4 projects that use this
LambenthanSkillexp-eval
实验判决门:Review LLM 独立评判实验结果 → 4 种判决路径 → 自动更新 claims confidence、ideas status、graph edges
Also in 4 projects that use this
phanghonghaoSkillposter
HTML/CSS A4 海报生成。从沙龙/活动 Markdown 文件生成科技风 A4 海报 PDF/PNG。Use when user mentions: poster, 海报, 海报生成, make poster, generate poster, 活动海报, 沙龙海报.
Also in 4 projects that use this
- +1 more from skyllwt
- +6 more from Lambenthan
Other versions45 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 45
- moltbot/clawdbot★ 394ksame name
- steipete/warelay★ 394ksame name
- steipete/clawdis★ 394ksame name
- moltbot/moltbot★ 394ksame name
- clawdbot/clawdbot★ 394ksame name
- openclaw/openclaw★ 394ksame name
- molt-bot/clawdbot★ 391ksame name
- amosblomqvist/learn★ 3.4ksame name
- skyllwt/OmegaWiki★ 1.7ksame name
- DAIR-AutoResearch/AutoSci★ 1.7ksame name
35 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- airtableSkill
- design-logSkill
- find-sessionSkill
- git-shipSkill
- skill-improverSkill
- skills-buildSkill
- tallySkill
- tech-researcherSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
22 rules. 0 are common, 19 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 43 edited versions we read keep these.
19
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 52
Gather content: Use the conversation context, pasted data, or WebFetch for URLs (see Source content).
- Distinctive: line 53
Copy skeleton: Start from references/skeleton.md — never write HTML from scratch.
- Distinctive: line 62
If the request matches a non-trigger (Figma, Tally, Canva, real website) → stop, suggest the correct skill.
- Distinctive: line 63
If the subject already exists in the user's product and you have not read its source → stop and read it before writing HTML (Ground in the …
- Distinctive: line 64
If a real token, string, or font exists and you used an approximation instead → replace it with the real value before writing.
- Distinctive: line 65
If skeleton.md required elements (menu, theme classes, exact CSS-property names) are missing from the output → evaluation will fail.
- Distinctive: line 66
If charts render blank → see the Troubleshooting checklist in references/libraries.md.
- Distinctive: line 67
If the layout overflows at 375px viewport → mandatory fix before write.
- Very specific: line 68
If Chart.defaults.animation = false is not set immediately after the Chart.js CDN → must add.
- Distinctive: line 69
If the purpose is to let the user choose between rendered options → make options selectable and add a clipboard export (Pick-and-Extract).
- Distinctive: line 96
See it rendered when you can: If the page is running (localhost, a preview URL, production), open it with Playwright and screenshot the …
- Distinctive: line 108
Don't quietly invent one. Say in one line what you searched for and didn't find, state the design assumption you're proceeding under, and …
- Distinctive: line 135
Verify, don't assume: When something looks wrong, read the computed styles rather than guessing at the cause:
- Distinctive: line 164
Don't hand-draw SVG continents: Use Leaflet for any geographic data.
- Distinctive: line 166
Always use real content: Never generate placeholder/Lorem ipsum data when real context exists.
- Distinctive: line 168
Options differ on one axis only: If the variants also drift in font, spacing, or copy, the user is picking on noise instead of the actual …
- Very specific: line 172
If the subject already exists: was its real source read, and are its actual tokens/strings/direction reproduced in the output?
- Distinctive: line 173
If the subject already exists: is there a "current" reference card, rendered first and non-selectable?
- Distinctive: line 174
Do the options differ only on the axis being decided?
- Distinctive: line 213
Every file MUST have ≥1 interaction beyond theme + menu — see the Type-Specific Interactivity table in references/types.md.
- Distinctive: line 226
When the visualization's purpose is to let the user choose between rendered options and hand the decision back to you (UI variants, color …
- Distinctive: line 230
Prerequisite: if the options are variants of something that exists, complete Ground in the current implementation first — the options must …
“Common” is measured: kept by at least 6 in 10 of the 43 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Visualize
Turn any idea, data, or content into a stunning single-file HTML visualization.
This SKILL.md is the operational layer. Detailed patterns live in references/ and are loaded
on demand — see the Reference map at the bottom. Never inline that detail here.
When this triggers
- User says "visualize," "make a deck/slide/dashboard/infographic/poster/carousel," or any visualization-type keyword.
- User pastes data (CSV, JSON, table, numbers) and wants it shown visually.
- User shares a URL and asks for a visual summary.
- User wants a single self-contained
.htmlartifact (no server, no build step).
When this does not trigger
- Figma / mockup / design-system work →
figma-generate-design,figma-use. - Tally form / questionnaire →
tally. - Canva file →
canva-*tools. - Real multi-page website, React/Vue/Next app → not a skill match; build with framework.
- Screenshotting or scraping an existing webpage →
agent-browser. - Editing an existing HTML file the user already has → use plain
Edit.
Required inputs
- The content to visualize (conversation context, pasted data, URL, or explicit description).
- If the visualization renders options for something that already exists (a screen, component, loader, nav, card, color scheme, layout in the user's product) — the actual current implementation. Go read it before writing any HTML. See Ground in the current implementation.
- Optional: visualization type (deck, dashboard, infographic, etc.) — infer if not given.
- Optional: output path (defaults to
~/Downloads/<kebab-case-name>.html).
Workflow
- Pick type. Match the request to a row in the Visualization Types table below. If ambiguous, pick the closest fit and proceed. Detailed per-type patterns: references/types.md.
- Ground in the current implementation — before writing a single line of HTML. If the thing being visualized already exists anywhere (a screen, component, loader, nav, card, palette, layout in the user's product), go find and read the real code, and render the options in that design — not an invented one. Mandatory, no exceptions: see Ground in the current implementation.
- Gather content. Use the conversation context, pasted data, or
WebFetchfor URLs (see Source content). Never use placeholder/Lorem ipsum. - Copy skeleton. Start from references/skeleton.md — never write HTML from scratch. It carries the theme system, exact CSS-property names, menu, animations, print styles, and accessibility hooks the evaluator checks.
- Add content to the
<!-- YOUR CONTENT HERE -->block. Follow the type-specific rules in references/types.md. - Wire libraries as needed — references/libraries.md for CDN URLs + the Chart.js / Reveal.js / Leaflet patterns, references/menu.md for the required hamburger menu, references/animations.md for entrance/scroll animation, references/design-system.md for typography/color/spacing/sizing, references/css-techniques.md for advanced CSS.
- Run the Evaluation checklist below before saving.
- Write the file with
Writeto~/Downloads/<name>.html(kebab-case). - Serve it over localhost, then open it. See Serving and verifying —
file://silently breaks the clipboard export and cannot be inspected with Playwright. Serve the containing directory, open thehttp://127.0.0.1:<port>/<name>.htmlURL, and return that URL in the response. - Verify in the browser before claiming it works. Load the localhost URL with Playwright, check console errors, confirm no horizontal overflow at 375px, and smoke-test the main interaction. Never report a visualization as done on the strength of the HTML source alone.
Decision gates
- If the request matches a non-trigger (Figma, Tally, Canva, real website) → stop, suggest the correct skill.
- If the subject already exists in the user's product and you have not read its source → stop and read it before writing HTML (Ground in the current implementation).
- If a real token, string, or font exists and you used an approximation instead → replace it with the real value before writing.
- If skeleton.md required elements (menu, theme classes, exact CSS-property names) are missing from the output → evaluation will fail; fix before writing.
- If charts render blank → see the Troubleshooting checklist in references/libraries.md.
- If the layout overflows at 375px viewport → mandatory fix before write.
- If
Chart.defaults.animation = falseis not set immediately after the Chart.js CDN → must add. - If the purpose is to let the user choose between rendered options → make options selectable and add a clipboard export (Pick-and-Extract).
Ground in the current implementation
If the thing being visualized already exists, go look at it first. Then render the options in the real design — same tokens, same markup shape, same direction. An option card built from an invented design is worthless: the user can't judge "does this fit my product" against something that isn't their product, and a picked option can't be implemented as-is.
This applies to any visualization whose subject is an existing artifact — UI variants, loader styles, nav layouts, card treatments, color schemes, empty states, copy in situ, before/after comparisons. It does not apply to green-field concepts, abstract data stories, or charts of pure numbers.
The four things to extract, in order
- Find the real source.
Glob/Grepfor the component, screen, or stylesheet by the name the user used — the Hebrew or English label, the class name, the route. Read the actual file. Never reason from what the code probably looks like. - Lift the design tokens verbatim. Copy the real CSS custom properties, hex values, font stacks,
radii, shadows, spacing scale, and breakpoints out of the source into your page's
:root. Do not approximate a brand color by eye and do not substitute the skeleton's defaults where a real token exists. If the project has a design skill or token file (e.g. a*-designskill,tokens.css,tailwind.config), read that too and prefer it as the authority. - Reproduce the real structure and state. Same element hierarchy, same class names, same content
— real strings from the app, real row counts, real number formats. Preserve
dir="rtl", the real font, and Hebrew/English mixing exactly as the product does it. Options must differ only on the axis being decided; everything else stays identical, or the comparison isn't a comparison. - See it rendered when you can. If the page is running (localhost, a preview URL, production), open it with Playwright and screenshot the real component before rebuilding it. Live pixels beat source-reading for spacing, density, and what the thing actually feels like.
Always include the current state as a card
Render today's version as the first card, labeled "current" and marked .no-pick (not selectable
— see pick-and-extract.md). Every option is then judged as a delta
from a real baseline instead of in a vacuum, and "keep what we have" stays a visible answer.
When you can't find it
Don't quietly invent one. Say in one line what you searched for and didn't find, state the design assumption you're proceeding under, and build the options on that stated assumption — then flag it above the fold on the page itself so the user reads the picks in the right light.
Serving and verifying
Always serve over localhost — never hand the user a bare file:// link. The file is still
self-contained and portable; localhost is only how it gets opened and checked.
cd ~/Downloads && (python3 -m http.server 8899 >/dev/null 2>&1 &) ; sleep 2
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8899/<name>.html # expect 200
open http://127.0.0.1:8899/<name>.htmlThree concrete reasons, all of which have bitten real runs:
- The clipboard export silently fails on
file://.navigator.clipboardis blocked on the file protocol, so a Pick-and-Extract page looks fine and then does nothing when the user clicks copy. Overhttp://127.0.0.1it just works. - Playwright refuses
file://(Access to "file:" protocol is blocked), so you cannot verify your own output — no console-error check, no computed-style check, no 375px overflow check. - Some CDN and font loads behave differently under the file protocol.
Pick an uncommon port (8899, not 8000) so you don't collide with the user's dev server, and confirm the 200 before opening. Mention the server is running when you hand over the link.
Verify, don't assume. When something looks wrong, read the computed styles rather than guessing at the cause:
// Is it a broken variable, or just a low-contrast palette? These answer it definitively.
getComputedStyle(document.documentElement).getPropertyValue('--negative')
getComputedStyle(document.querySelector('.card')).backgroundColorA page that renders "unstyled" is far more often a contrast problem than a CSS-not-loading
problem — the light theme's --surface: #FFFFFF on --bg: #FAFAF9 with 6%-opacity borders is
nearly invisible on a scaled-down screenshot. If cards and buttons disappear, add a stronger
component-level edge (a --edge variable at ~12–14% opacity plus a small shadow) rather than
rewriting the mandated --border / --surface names the evaluator checks for.
Output format
- One
.htmlfile written to~/Downloads/(or user-specified path), kebab-case filename. - File contains: inline CSS, inline JS, CDN libraries via
<script>, no build step. - Response to user: one short line + the
http://127.0.0.1:<port>/URL (mention the local server). No additional summary unless asked. - Evaluation rubric: references/eval.md — the 8 scoring dimensions checked upstream.
- Background: references/anthropic-skill-guide-notes.md — the skill best-practices that shaped this structure.
Gotchas
- Skeleton is non-negotiable. Starting from scratch loses the menu, theme classes, theme toggle, print styles, and accessibility hooks — all checked by the eval system.
- Class-based themes only (
html.theme-dark/html.theme-light). Neverdata-theme, never@media (prefers-color-scheme)for the variables themselves. varat top level, notlet/const. Function hoisting causes TDZ errors otherwise.- Chart.js:
Chart.defaults.animation = falseimmediately after the CDN. Required and auto-checked. Never disable tooltips. - No horizontal overflow at 375px. Mandatory.
- Single-screen posters use
overflow: hidden+ fixed dimensions and no hamburger menu. A scrolling page screenshotted ≠ a poster. - Don't hand-draw SVG continents. Use Leaflet for any geographic data.
- Reveal.js needs numeric dimensions (
width: 1280, height: 720) — string'100%'causes blank slides. - Always use real content. Never generate placeholder/Lorem ipsum data when real context exists.
- Never mock up an option in a design you invented when the real one is on disk. Read the component, lift its actual tokens, and render the options inside it — an option judged against a fake baseline is a wasted round-trip and can't be implemented as picked.
- Options differ on one axis only. If the variants also drift in font, spacing, or copy, the user is picking on noise instead of the actual decision.
- Never hand over a
file://link. Serve over localhost — see Serving and verifying. Clipboard export dies onfile://and Playwright can't open it, so you'd be shipping unverified.
Evaluation checklist
- If the subject already exists: was its real source read, and are its actual tokens/strings/direction reproduced in the output?
- If the subject already exists: is there a "current" reference card, rendered first and non-selectable?
- Do the options differ only on the axis being decided?
- Does the output start from skeleton.md verbatim?
- Are both
.theme-lightand.theme-darkclasses defined with the full, exact custom-property set? - Is the
.viz-menucomponent present (toggle, theme, download PNG, print)? (Posters exempt.) - Is Chart.js wired with
Chart.defaults.animation = false+ theme-aware colors + tooltips enabled? - Does every chart canvas have
role="img"andaria-label? - Is there ≥1 entrance animation (
.animateclass,data-reveal, or scroll-drivenview())? - Does the file render without horizontal scroll at 375px?
- Is there ≥1 meaningful interaction beyond menu + theme?
- Was the file served over localhost, opened, and the
http://127.0.0.1:<port>/URL returned? - Zero console errors on load (checked in a browser, not assumed)?
Visualization Types
Pick the right format. Detailed per-type patterns and rules: references/types.md.
| Type | When to Use | Key Feature |
| Slide Deck | Presentations, pitches | 16:9, keyboard nav, transitions |
| Infographic | Data summaries, visual stories | Long scroll, big numbers, sections |
| Dashboard | Metrics, KPIs | Grid of cards + charts |
| Flowchart | Processes, architecture | Mermaid or SVG diagrams |
| Timeline | Chronological events | Alternating left/right, scroll-triggered |
| Comparison | Side-by-side analysis | Feature matrix, pros/cons |
| Data Viz | Charts, data stories | Chart.js or D3 |
| One-Pager | Summaries, briefs | Single viewport, print-friendly |
| Mind Map | Concept relationships | Radial SVG layout |
| Kanban | Status tracking | Column-based cards |
| Carousel Cards | Social (IG/LinkedIn) | 1080×1080 per card, swipeable, bold text |
| Event Poster | Conferences, meetups | Portrait A4/letter, bold headline, date/venue |
| Resume/CV | Job applications | One-page, two-column, print-optimized |
| Banner/Header | Email, blog, social cover | 1200×630 or 1500×500, centered text on visual bg |
| Quote Card | Social proof, testimonials | Portrait/square, large quote, attribution |
| Process Guide | How-to, step-by-step | Numbered steps, icons, clear flow |
| Status Report | Executive updates | KPIs + progress bars + highlights, one-page |
| Org Chart | Team structure | Hierarchical tree, photos/avatars, roles |
| Data Story | Narrative + data | Scrollytelling, charts woven with text |
| Product Card | Feature highlight, launch | Hero image area, feature pills, CTA |
Every file MUST have ≥1 interaction beyond theme + menu — see the Type-Specific Interactivity table in references/types.md.
Source content
This skill runs mid-conversation. Leverage everything as source material — never invent placeholder data:
- Conversation context — summarize, structure, or visualize what's been discussed.
- URLs —
WebFetchto crawl and extract content, then visualize as a summary. - Pasted data — CSV (parse, auto-detect headers → chart), JSON (keys = labels, values = data, nested = series), tables (→ comparison/chart), numbers in text (→ stat cards).
- Ideas / concepts / code — turn abstract discussions or system designs into diagrams and data flows.
Pick-and-Extract
When the visualization's purpose is to let the user choose between rendered options and hand the
decision back to you (UI variants, color schemes, layouts, copy choices), make the options selectable on
the page and add a clipboard export — a standalone .html can't post back, so the clipboard is the bridge.
Trigger phrases: "let me pick on the HTML," "make the options selectable," "I'll choose and send it back."
Prerequisite: if the options are variants of something that exists, complete
Ground in the current implementation first — the options must
be rendered in the product's real design, with today's version as the first, non-selectable card.
Full pattern, wiring code, and gotchas: references/pick-and-extract.md.
Reference map
Load only the file relevant to the current step (progressive disclosure):
| File | Load when |
| references/skeleton.md | Always — the mandatory starting template + evaluation requirements. |
| references/types.md | Picking a type and applying its layout/interaction rules. |
| references/libraries.md | Wiring a CDN library (Chart.js, D3, Mermaid, Reveal.js, Leaflet, Tailwind) or debugging blank charts. |
| references/design-system.md | Typography, color, spacing, sizing, layout, accessibility, anti-patterns. |
| references/menu.md | Building/verifying the required hamburger menu. |
| references/animations.md | Entrance, scroll-driven, hover, and counter animation patterns. |
| references/css-techniques.md | Advanced CSS — container queries, :has(), view transitions, conic gradients, fluid type. |
| references/pick-and-extract.md | Decision visualizations the user picks on and exports back. |
| references/eval.md | The 8-dimension scoring rubric the output is graded against. |
| references/anthropic-skill-guide-notes.md | Background on the skill-authoring best practices behind this structure. |
The quality bar: "good, period" — not "good for AI-generated."
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

