Threads Carousel
itchernetski/threads-carousel-claude-skill
Convert text posts into visual carousel images or presentations for Threads, Instagram, LinkedIn, TikTok, YouTube.
Generate self-contained HTML pages that visually explain technical material — systems, code changes, plans, data.
$ npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install NikiforovAll/claude-code-rules visual-explainer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/NikiforovAll/claude-code-rules.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/handbook-visual-explainer/skills/visual-explainer .claude/skills/visual-explainer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "visual-explainer" agent skill from https://github.com/NikiforovAll/claude-code-rules/tree/main/plugins/handbook-visual-explainer/skills/visual-explainer into .claude/skills/visual-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-explainer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/NikiforovAll/claude-code-rules/tree/main/plugins/handbook-visual-explainer/skills/visual-explainerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install NikiforovAll/claude-code-rules visual-explainer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NikiforovAll/claude-code-rules.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/handbook-visual-explainer/skills/visual-explainer .agents/skills/visual-explainer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "visual-explainer" agent skill from https://github.com/NikiforovAll/claude-code-rules/tree/main/plugins/handbook-visual-explainer/skills/visual-explainer into .agents/skills/visual-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-explainer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install NikiforovAll/claude-code-rules visual-explainer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NikiforovAll/claude-code-rules.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/handbook-visual-explainer/skills/visual-explainer .cursor/skills/visual-explainer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "visual-explainer" agent skill from https://github.com/NikiforovAll/claude-code-rules/tree/main/plugins/handbook-visual-explainer/skills/visual-explainer into .cursor/skills/visual-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-explainer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/NikiforovAll/claude-code-rules.git --path plugins/handbook-visual-explainer/skills/visual-explainer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install NikiforovAll/claude-code-rules visual-explainer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NikiforovAll/claude-code-rules.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/handbook-visual-explainer/skills/visual-explainer .gemini/skills/visual-explainer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "visual-explainer" agent skill from https://github.com/NikiforovAll/claude-code-rules/tree/main/plugins/handbook-visual-explainer/skills/visual-explainer into .gemini/skills/visual-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-explainer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install NikiforovAll/claude-code-rules visual-explainerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/NikiforovAll/claude-code-rules.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/handbook-visual-explainer/skills/visual-explainer .github/skills/visual-explainer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "visual-explainer" agent skill from https://github.com/NikiforovAll/claude-code-rules/tree/main/plugins/handbook-visual-explainer/skills/visual-explainer into .github/skills/visual-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-explainer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install NikiforovAll/claude-code-rules visual-explainer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NikiforovAll/claude-code-rules.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/handbook-visual-explainer/skills/visual-explainer .opencode/skills/visual-explainer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "visual-explainer" agent skill from https://github.com/NikiforovAll/claude-code-rules/tree/main/plugins/handbook-visual-explainer/skills/visual-explainer into .opencode/skills/visual-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-explainer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
visual-explainerGenerate self-contained HTML pages that visually explain technical material — systems, code changes, plans, data.
Visual Explainer is an agent skill from NikiforovAll/claude-code-rules. Generate self-contained HTML pages that visually explain technical material — systems, code changes, plans, data. Use when the user asks for any diagram or visual explanation, when they want a slide deck or a longform document (user guide, how-to, reference page), when another skill needs one rendered, or proactively in place of a terminal ASCII table (4+ rows or 3+ columns).
Its SKILL.md is about 7.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 15 other files, including reference files and assets (for example `references/css-patterns.md`, `references/diagram-types.md` and `references/libraries.md`). Compatibility notes: Requires a browser to view generated HTML files.
It sits in Documents & Office, covering Infographics, Slides and decks and HTML artifacts. The repository describes itself as: Learn practical techniques to enhance your AI-assisted development workflow with Claude Code. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 281c063. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are css).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires a browser to view generated HTML files.
From compatibility in the SKILL.md frontmatter.
Visual Explainer loads about 7.5k tokens when it runs, and up to ~44k if it reads all its reference files. Until then it costs about 99 tokens; SKILL.md has 4,008 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from NikiforovAll/claude-code-rules at commit 281c063, republished under its MIT licence (© NikiforovAll). 4,008 words, ~7,479 tokens.
.claude/skills/visual-explainer/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.Generate self-contained HTML files for technical diagrams, visualizations, and data tables. Never fall back to ASCII art when this skill is loaded.
Proactive table rendering. When you're about to present tabular data as an ASCII box-drawing table in the terminal (comparisons, audits, feature matrices, status reports, any structured rows/columns), generate an HTML page instead. The threshold: if the table has 4+ rows or 3+ columns, it belongs in the browser. Don't wait for the user to ask — render it as HTML automatically and tell them the file path. You can still include a brief text summary in the chat, but the table itself should be the HTML page.
| Command | What it does |
|---|---|
web-diagram | Generate an HTML diagram for any topic |
visual-plan | Generate a visual implementation plan for a feature |
slides | Generate a magazine-quality slide deck |
diff-review | Visual diff review with architecture comparison and code review |
plan-review | Compare a plan against the codebase with risk assessment |
project-recap | Mental model snapshot for context-switching back to a project |
fact-check | Verify accuracy of a document against actual code |
| Flag | Values | Effect |
|---|---|---|
--style <name> | see the table below | Locks the aesthetic direction. Skips the "pick one and vary it" step in Workflow §1 — the choice is made, honor it exactly. |
--picker | — | Selects a style instead of generating a page. Short-circuits everything below — see Style Picker. |
--theme <light|dark> | — | Forces the page's initial mode. With no flag the page follows the OS. The toggle is always present regardless — this flag only sets the starting state. |
--slides | — | Slide-deck output instead of a scrollable page. See Slide Deck Mode. |
--handbook | — | Document output instead of a freeform visual page. See Handbook Mode. Mutually exclusive with --slides. |
--palette <hint> | e.g. terracotta+sage, deep-blue+gold, or explicit hexes | Overrides accent selection. Forbidden colors are still forbidden — if the hint contains one, use the nearest allowed hue and say so. |
--font <hint> | e.g. crimson-pro+noto-sans-mono | Overrides the font pairing. Forbidden --font-body values still rejected. |
--style values. One flat namespace — the five design directions and the borrowed editor schemes are interchangeable values, no prefix:
| Value | Direction |
|---|---|
blueprint | Technical drawing — subtle grid background, deep slate/blue, monospace labels, precise borders |
editorial | Crimson Pro throughout — 600 headlines, 400 body, so the contrast is weight, not a second face. Set headings at 600 or a text serif goes limp at display size. Generous whitespace, muted earth tones or deep navy + gold |
paper | Warm cream #faf7f5, terracotta/sage accents, informal |
terminal | Monochrome — green/amber on near-black, monospace everything |
data-dense | Small type, tight spacing, maximum information, muted colors |
dracula nord catppuccin-mocha catppuccin-latte solarized-dark solarized-light gruvbox one-dark rose-pine | The real editor scheme, committed to exactly. Its hex values are in ./assets/style-catalog.html — read the card, don't approximate from memory of the vibe |
An editor scheme sets the palette; it doesn't excuse skipping typography and layout decisions. --style nord still needs a font pairing and a considered structure.
--style never sets layout. Structure is the job of --slides and --handbook, and the two axes compose freely: --handbook --style nord is a document in the Nord palette. --style handbook is not a value — read it as --handbook, apply it as the mode, and say so.
Unknown --style value: don't silently fall back. Name the closest supported value, use it, and tell the user. neon and gradient-mesh are rejected outright (see Anti-Patterns) — substitute a constrained direction and say which.
With no flags, infer the aesthetic from audience and content, and vary it from the previous generation.
--picker selects a style; it does not generate a page. It short-circuits everything below — no reference files read, no HTML written.
Open ./assets/style-catalog.html, the prebuilt catalog that ships with the skill: one specimen card per --style value showing the palette at real hex values, the font pairing, and the flag to copy. Three tabs — Styles, Commands, Formats — landing on Styles, so name the other two when you hand it over or the user won't know they exist. Never regenerate or edit it to serve a picker request; open it where it lives. Its command cards mirror the Available Commands table above, and their section lists mirror each command's own "Diagram structure" block — so adding a command, or renumbering one's sections, means editing the catalog too.
Then print one line telling the user to reply with a style name or paste the copied flag. Done when the catalog is open and that line is printed — nothing else. A picker run ends at the selection: if a topic came with it, say it was ignored rather than generating once they answer.
The catalog is also the hex authority for the editor schemes. When honoring --style gruvbox and the rest, read its card rather than recalling the palette — that is a read of one file, not a picker run, and the Workflow proceeds normally.
Before writing HTML, commit to a direction. Don't default to "dark theme with blue accents" every time.
Visual is always default. Even essays, blog posts, and articles get visual treatment — extract structure into cards, diagrams, grids, tables.
Prose patterns (lead paragraphs, pull quotes, callout boxes) are accent elements within visual pages, not a separate mode. Use them to highlight key points or provide breathing room, but the page structure remains visual.
For prose accents, read both halves: "Prose Accent Elements" in ./references/diagram-types.md for which accent a page has earned and when, and "Prose Page Elements" in ./references/css-patterns.md for the CSS that builds it. For everything else, use the standard freeform approach with aesthetic directions below.
Who is looking? A developer understanding a system? A PM seeing the big picture? A team reviewing a proposal? This shapes information density and visual complexity.
What type of content? Architecture, flowchart, sequence, data flow, schema/ER, state machine, mind map, class diagram, C4 architecture, data table, timeline, dashboard, implementation plan, longform documentation, or prose-first page. Each has distinct layout needs and rendering approaches — route via the table in §2, then read its section in ./references/diagram-types.md.
What aesthetic? Pick one value from the --style table in Arguments and commit. The constrained directions (blueprint, editorial, paper, terminal) carry visual requirements that crowd out generic output, so prefer them; the editor schemes are flexible and need more discipline to stay distinctive.
If --style / --palette / --font were passed, the choice is already made — honor the flags and skip this selection.
Neon dashboard and gradient mesh are slop — see Anti-Patterns for the full list before you commit.
Vary the choice each time. If the last diagram was dark and technical, make the next one light and editorial. The swap test: if you replaced your styling with a generic dark theme and nobody would notice the difference, you haven't designed anything.
Read the reference material before generating — each time, not from memory. Name the files you read before you write any HTML; if you can't, you haven't done this step.
./templates/architecture.html./templates/mermaid-flowchart.html./templates/data-table.html--slides flag is present or /slides is invoked): read ./templates/slide-deck.html and ./references/slide-patterns.md./references/css-patterns.md and "Typography by Content Voice" in ./references/libraries.md--handbook): read ./templates/handbook.html — see Handbook ModeFor CSS/layout patterns and SVG connectors, read ./references/css-patterns.md.
For pages with 4+ sections (reviews, recaps, dashboards), also read ./references/responsive-nav.md for section navigation with sticky sidebar TOC on desktop and horizontal scrollable bar on mobile.
Choosing a rendering approach:
Is it even a chart? Ask before reaching for one. One to three numbers are KPI cards, not a bar chart with three bars. A two-point change is a sentence carrying the delta. A ranking of five things is a table with an inline bar column. A chart earns its space when the shape of the data — trend, distribution, part-to-whole, correlation — is the point.
| Content type | Approach | Why |
|---|---|---|
| 1–3 standalone numbers | KPI cards / stat band | A chart with three bars is chrome around three numbers |
| Architecture (text-heavy) | CSS Grid cards + flow arrows | Rich card content (descriptions, code, tool lists) needs CSS control |
| Architecture (topology-focused) | Mermaid | Visible connections between components need automatic edge routing |
| Flowchart / pipeline | Mermaid | Automatic node positioning and edge routing |
| Sequence diagram | Mermaid | Lifelines, messages, and activation boxes need automatic layout |
| Data flow | Mermaid with edge labels | Connections and data descriptions need automatic edge routing |
| ER / schema diagram | Mermaid | Relationship lines between many entities need auto-routing |
| State machine | Mermaid | State transitions with labeled edges need automatic layout |
| Mind map | Mermaid | Hierarchical branching needs automatic positioning |
| Class diagram | Mermaid | Inheritance, composition, aggregation lines with automatic routing |
| C4 architecture | Mermaid | Use graph TD + subgraph for C4 (not native C4Context — it ignores themes) |
| Data table | HTML <table> | Semantic markup, accessibility, copy-paste behavior |
| Timeline | CSS (central line + cards) | Simple linear layout doesn't need a layout engine |
| Dashboard | CSS Grid + Chart.js | Card grid with embedded charts |
| Implementation plan / feature spec | CSS cards + a Mermaid flow, code as excerpts | Understanding the approach is the goal, so file structure and 5–10 line snippets carry it — never full source |
| Documentation / longform guide | Handbook Mode | Navigable, scannable prose is the payload — no diagram required |
| Any of the Mermaid rows, past 12 nodes or taller than 2:1 | HTML/CSS figure | Mermaid fits its canvas to the column, so a tall graph shrinks its labels below reading size. A hand-built figure sets its own type scale |
Once you've picked the approach, read the matching section of ./references/diagram-types.md for the syntax, caveats, and CSS override classes for that type.
If the page contains any Mermaid diagram, read ./references/mermaid-rules.md first. It covers the two failures — the blow-up that renders a diagram unreadably small, and the drift that paints labels outside their own boxes — plus the container, config, theming, labels, and the .node collision.
The forbidden half of every rule below lives in one place: Anti-Patterns. Read it before you write CSS.
Typography is the diagram. Pick a distinctive font pairing from the list in ./references/libraries.md. Every page should use a different pairing from recent generations.
Good pairings (use these):
These five mirror the Rec rows of the pairing table in ./references/libraries.md, which holds eight more for when none of them fits the content. Its unmarked display faces — Instrument Serif, Playfair Display — earn a masthead, a pull quote, or a slide, where the type is large enough to carry them. Below roughly 16px they go limp, so a display face as --font-body on a scrollable page is the wrong call even though the pairing is listed.
Load via <link> in <head>. Include a system font fallback in the font-family stack for offline resilience.
Color tells a story. Use CSS custom properties for the full palette. Define at minimum: --bg, --surface, --border, --text, --text-dim, and 3-5 accent colors. Each accent should have a full and a dim variant (for backgrounds). Name variables semantically when possible (--pipeline-step not --blue-3). Support both themes.
Good accent palettes (use these):
#c2410c, #65a30d) — warm, earthy#0891b2, #0369a1) — technical, precise#be123c, #881337) — editorial, refined#d97706, #059669) — data-focused#1e3a5f, #d4a73a) — premium, sophisticatedColor has a ceiling: eight categories, three when marks sit apart. Past eight distinguishable hues the reader stops decoding color and starts hunting the legend, so fold the tail into "Other" or facet into small multiples instead of minting a ninth. Scatter, bubble, and choropleth cap at three — their marks are separated in space, which is far less forgiving than the adjacent bars and stacked bands the eight are chosen for. The cap governs Mermaid node colors and diagram accents too, not just charts: a graph coloring nine kinds of node has no color story left.
Every page ships a theme toggle. This is not optional. Both modes are attribute-driven so the user can override the OS choice, and the choice persists across reloads. @media (prefers-color-scheme: ...) alone is not sufficient — it gives the viewer no control.
/* Light-first (editorial, paper/ink, blueprint): */
:root, :root[data-theme="light"] { /* light values */ }
:root[data-theme="dark"] { /* dark values */ }
/* Dark-first (IDE-inspired, terminal): */
:root, :root[data-theme="dark"] { /* dark values */ }
:root[data-theme="light"] { /* light values */ }One palette per mode, declared once — no media-query duplicate. A blocking inline script in <head> resolves the initial mode (localStorage → --theme flag → OS) and stamps data-theme before first paint, so there is no flash. Copy the "Theme Toggle" section from ./references/css-patterns.md wholesale: boot script, button markup, CSS, and the themechange event that Mermaid pages listen to in order to re-render with the new themeVariables.
Surfaces whisper, they don't shout. Build depth through subtle lightness shifts (2-4% between levels), not dramatic color changes. Borders should be low-opacity rgba (rgba(255,255,255,0.08) in dark mode, rgba(0,0,0,0.08) in light) — visible when you look, invisible when you don't.
Backgrounds create atmosphere. Don't use flat solid colors for the page background. Subtle gradients, faint grid patterns via CSS, or gentle radial glows behind focal areas. The background should feel like a space, not a void.
Visual weight signals importance. Not every section deserves equal visual treatment, and depth is how you say so. Executive summaries and key metrics dominate the viewport on load — larger type, more padding, elevated shadow, accent-tinted background (ve-card--hero). Body content stays flat (default .ve-card). Code blocks and secondary content feel recessed (ve-card--recessed). Reference sections (file maps, dependency lists, decision logs) stay compact and out of the way; use <details>/<summary> for what's useful but not primary. See the depth tiers and the collapsible pattern in ./references/css-patterns.md. When everything pops, nothing does.
Animation earns its place. Staggered fade-ins on page load are almost always worth it — they guide the eye through the diagram's hierarchy. Mix animation types by role: fadeUp for cards, fadeScale for KPIs and badges, drawIn for SVG connectors, countUp for hero numbers. Hover transitions on interactive-feeling elements make the diagram feel alive. Always respect prefers-reduced-motion. CSS transitions and keyframes handle most cases. For orchestrated multi-element sequences, anime.js via CDN is available (see ./references/libraries.md).
Keep animations purposeful: entrance reveals, hover feedback, and user-initiated interactions. Nothing should glow or pulse on its own.
Output location: Write to ~/.agent/diagrams/. Use a descriptive filename based on content: modem-architecture.html, pipeline-flow.html, schema-overview.html. The directory persists across sessions.
Tell the user the file path so they can open or share it. Whether to launch a browser is not this skill's call — decide it from the situation like any other action.
Run every Quality Check below before you say it's done. When iterating on a file, hard-refresh (Ctrl+F5): browsers cache file:// pages and CDN assets aggressively, which makes stale versions look like failed fixes.
A magazine-quality slide presentation instead of a scrollable page. Opt-in only — never auto-select slide format.
Before generating slides, read ./references/slide-patterns.md (engine CSS, slide types, transitions, nav chrome, presets) and ./templates/slide-deck.html (which demonstrates 10 of them — CSS Pipeline is reference-only). Also read ./references/css-patterns.md for shared patterns and ./references/libraries.md for Mermaid/Chart.js theming.
Slides are not pages reformatted. They're a different medium. Each slide is exactly one viewport tall (100dvh) with no scrolling. Typography is 2–3× larger. Compositions are bolder. The agent composes a narrative arc (impact → context → deep dive → resolution) rather than mechanically paginating the source.
Content completeness. Changing the medium does not mean dropping content — the Quality Checks coverage enumeration applies unchanged. Follow the "Planning a Deck from a Source Document" process in slide-patterns.md before writing any HTML. Collapsible details in the source become their own slides. Add more slides rather than cutting content: a 22-slide deck that covers everything beats a 13-slide deck that looks polished but is missing 40% of the source. Content that exceeds a slide's density limit splits across slides — it never scrolls within one.
Compositional variety: Consecutive slides must vary spatial approach — centered, left-heavy, right-heavy, split, edge-aligned, full-bleed. Three centered slides in a row means push one off-axis. Visual-first, text-second: SVG accents, per-slide background gradients, inline sparklines, small Mermaid diagrams.
slide-patterns.md holds the 11 slide types and the four curated presets (Midnight Editorial, Warm Signal, Terminal Mono, Swiss Clean); the --style values also adapt to slides. Pick one and commit.
A document — read top to bottom, then returned to — instead of a freeform visual page. Unlike slides, auto-select this for longform documentation: user guides, how-tos, reference pages, anything with 4+ ordered sections a reader comes back to.
Before generating, read ./templates/handbook.html — contents rail, counter-numbered chapters, stat band, marginalia, annotated output blocks, <dl> Q&A. It is the layout, not the palette: --handbook fixes structure and leaves color and type open, so choose a --style as on any other page. The template's own clay/teal palette illustrates the mode; it isn't part of it.
The payload is the structure of the prose. The template contains no diagram at all, which is normal here — a document earns its keep by making sections navigable and scannable, not by adding a graphic. Per-content treatments are in the Documentation section of ./references/diagram-types.md; don't just format the prose, transform it.
If both --slides and --handbook are passed, honor --slides and say why — a deck isn't a document.
Every diagram is a single self-contained .html file. No external assets except CDN links (fonts, optional libraries) — CSS and JS inline.
Order in <head> is load-bearing: the theme boot script must run before the <style> block and before any body content, or the page flashes the wrong palette. Font <link>, then boot script, then styles.
Before delivering, verify:
grep finds both a :root[data-theme="light"] and a :root[data-theme="dark"] palette, the boot script stamps data-theme before paint, and clicking the button flips every surface — including Mermaid SVGs, which must re-render via the themechange listener. A data-theme ruleset with nothing setting the attribute is a bug, not a feature.[data-theme] block has a counterpart in the other. A variable defined only in the dark palette inherits the light value and breaks one direction silently. Check the two blocks against each other key by key.<details> table twin (.data-table inside details.collapsible — both patterns are in ./references/css-patterns.md), labelled so the reader knows what it opens. Sparklines and progress bars are exempt when the number they annotate is already in the text beside them..active. Scrolling by hand passes even with a broken scroll-spy; only the jump separates them. Track scroll position, never IntersectionObserver — see "JavaScript — Scroll Spy" in ./references/responsive-nav.md.min-width: 0 — grep the child selectors and confirm it, since one missing declaration is what clips content at narrow widths. Side-by-side panels need overflow-wrap: break-word. Never use display: flex on <li> for marker characters — it creates anonymous flex items that can't shrink, causing lines with many inline <code> badges to overflow. Use absolute positioning for markers instead. See the Overflow Protection section in ./references/css-patterns.md.htmlLabels: false is set; no CSS rule targets .nodeLabel or .edgeLabel; every <br/> and --> inside a <pre class="mermaid"> is written <br/> and -->; the render calls getBBox to re-derive the viewBox. Each one closes a drift source, and drift only reproduces on the reader's machine — you will not see it locally. Then measure the rendered diagram: taller than 2:1 or more than 12 nodes means rebuild the figure in HTML. See ./references/mermaid-rules.md.file://: no absolute-path or root-relative asset references (src="/...", href="/...") — they resolve against the filesystem root and fail. No fetch/XHR either: file:// is not a secure context, so anything gated on one needs a fallback. Note: Mermaid/Chart.js pages need the CDN reachable on first load; CSS-only pages (tables, architecture cards) work fully offline.These patterns are explicitly forbidden. They signal "AI-generated template" and undermine the skill's purpose of producing distinctive, high-quality diagrams. Review every generated page against this list.
Forbidden fonts as primary --font-body:
Required: Pick from the font pairings in ./references/libraries.md. Every generation should use a different pairing from the last.
Forbidden accent colors:
#8b5cf6, #7c3aed, #a78bfa) — Tailwind's default purple range#06b6d4 → #d946ef → #f472b6)Forbidden color effects:
background: linear-gradient(...); background-clip: text;) — this screams AI-generatedbox-shadow: 0 0 20px var(--glow); animation: glow 2s...)Required: Build palettes from the reference templates (terracotta/sage, teal/cyan, rose/cranberry, slate/blue) or derive from real IDE themes (Dracula, Nord, Solarized, Gruvbox, Catppuccin). Accents should feel intentional, not default.
Forbidden:
Required: Entrance reveals, hover feedback, and user-initiated interactions only. Respect prefers-reduced-motion.
Forbidden:
Required: Use styled monospace labels with colored dot indicators (see .section-label in templates), numbered badges (section__num pattern), or asymmetric section dividers. If an icon is genuinely needed, use an inline SVG that matches the palette — not emoji.
Forbidden:
Required: Vary visual weight. Hero sections should dominate (larger type, more padding, accent-tinted background). Reference sections should feel compact. Use the depth tiers (hero → elevated → default → recessed). Asymmetric layouts create interest.
Forbidden:
Required: Code blocks use a simple header with filename or language label. KPI cards vary by importance — hero numbers for the primary metric, subdued treatment for supporting metrics. Pick aesthetics with natural constraints: Blueprint (must feel technical/precise), Editorial (must have generous whitespace and serif typography), Paper/ink (must feel warm and informal).
Before delivering, apply this test: Would a developer looking at this page immediately think "AI generated this"? Count the forbidden items above that are present. Two or more and the page is slop — regenerate with a different --style. The constrained directions (editorial, blueprint, paper) and the real editor schemes are harder to mess up, because their specific visual requirements crowd out the generic defaults.
© NikiforovAll, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 12 other files (references, assets) in plugins/handbook-visual-explainer/skills/visual-explainer of NikiforovAll/claude-code-rules.
Open the folder on GitHubat commit 281c063
Visual Explainer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Visual Explainer this skillNikiforovAll/claude-code-rules | 141 | — | ~7.5k | Automated safety check: Pass | MIT | |
| Threads Carouselitchernetski/threads-carousel-claude-skill | 107 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Social Media Carouseldanielmeppiel/agentic-sdlc-handbook | 157 | 1 repos | ~2.2k | Automated safety check: Pass | Custom licence | |
| Linkedin Carousel Generatordmccreary/ibook-skills | 105 | — | ~3.7k | Automated safety check: Pass | CC-BY-NC-4.0 | |
| Visual Explainerjamditis/claude-skills-journalism | 416 | — | ~11k | Automated safety check: Pass | MIT | |
| Linkedin Carouselsericrisco/rsc-harness | 167 | — | ~3.1k | Automated safety check: Pass | MIT |
itchernetski/threads-carousel-claude-skill
Convert text posts into visual carousel images or presentations for Threads, Instagram, LinkedIn, TikTok, YouTube.
danielmeppiel/agentic-sdlc-handbook
Multi-slide carousel design for Instagram, LinkedIn, and Twitter/X with layout rules and hooks.
dmccreary/ibook-skills
Generates a 13-slide LinkedIn carousel (a "document post" — PPTX/PDF) that showcases an intelligent textbook's key features, with real screenshots, mascot art, and metrics pulled from the project.
jamditis/claude-skills-journalism
HTML explainers, diagrams, architecture, timelines, source maps, slide decks, comparison tables, recaps, plan and diff reviews.
ericrisco/rsc-harness
A skill your agent uses when building a LinkedIn carousel / document post — the swipeable multi-page PDF — slide by slide: cover hook, narrative arc, one idea per slide, CTA closer, PDF export spec.
ericrisco/rsc-harness
A skill your agent uses when writing the actual words of one LinkedIn feed post — turning a raw idea, story or asset into ready-to-paste copy: a text post, a document/carousel cover with slide copy…
NikiforovAll/claude-code-rules
Summarize WHAT WAS SHIPPED in a Claude Code session as a self-contained HTML slide deck — the elevator pitch (problem, solution, decisions, artifacts, verification, gaps), not a play-by-play of tool…
NikiforovAll/claude-code-rules
Run dotnet format to fix code style and analyzer diagnostics (IDE0005, CA, SA).
NikiforovAll/claude-code-rules
Understand implementation details of .NET code by decompiling assemblies.
NikiforovAll/claude-code-rules
Visualize a Claude Code session as a quest/skill tree — a navigable SVG graph where nodes are turns and edges show flow, with distinct visual encoding for normal flow, dead-ends, corrections…
NikiforovAll/claude-code-rules
This skill should be used when planning and tracking complex feature implementations that require systematic task decomposition.
NikiforovAll/claude-code-rules
Expert guidance for using the GitLab CLI (glab) to manage GitLab issues, merge requests, CI/CD pipelines, repositories, and other GitLab operations from the command line.
Categories
Generate self-contained HTML pages that visually explain technical material — systems, code changes, plans, data. Visual Explainer is an agent skill from NikiforovAll/claude-code-rules. Generate self-contained HTML pages that visually explain technical material — systems, code changes, plans, data.
Visual Explainer fits situations like: the user asks for any diagram; visual explanation; they want a slide deck; A longform document (user guide.
Run `npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a claude-code`. Or copy the skill folder (plugins/handbook-visual-explainer/skills/visual-explainer in NikiforovAll/claude-code-rules) into .claude/skills/visual-explainer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a codex`. Or copy the skill folder (plugins/handbook-visual-explainer/skills/visual-explainer in NikiforovAll/claude-code-rules) into .agents/skills/visual-explainer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add NikiforovAll/claude-code-rules --skill visual-explainer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/visual-explainer, .gemini/skills/visual-explainer, .github/skills/visual-explainer and .opencode/skills/visual-explainer in your project.
SKILL.md names no scripts, command-line tools or credentials: Visual Explainer is instructions for the agent only. Compatibility (from SKILL.md): Requires a browser to view generated HTML files..
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Visual Explainer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.5k tokens (SKILL.md is roughly 30k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 36k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Visual Explainer: Threads Carousel (itchernetski/threads-carousel-claude-skill, 107 stars), Social Media Carousel (danielmeppiel/agentic-sdlc-handbook, 157 stars), Linkedin Carousel Generator (dmccreary/ibook-skills, 105 stars) and Visual Explainer (jamditis/claude-skills-journalism, 416 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
NikiforovAll (a GitHub user) maintains it in NikiforovAll/claude-code-rules, which has 141 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 2, 2026.
Source: NikiforovAll/claude-code-rules on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.