Skip to content

/creating-explainers

Use when creating an interactive explainer - a single self-contained HTML page with hand-built Canvas figures. Handles source-file explainers, topic-driven research explainers, and mixed intake where files provide the spine and research adds support. Trigger phrases include

shell
$ npx -y skills add analyticalmonk/explain-this --skill creating-explainers --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/creating-explainers
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when creating an interactive explainer - a single self-contained HTML page with hand-built Canvas figures. Handles source-file explainers, topic-driven research explainers, and mixed intake where files provide the spine and research adds support. Trigger phrases include

SKILL.md

creating-explainers.SKILL.md
name: creating-explainers
description: Use when creating an interactive explainer - a single self-contained HTML page with hand-built Canvas figures. Handles source-file explainers, topic-driven research explainers, and mixed intake where files provide the spine and research adds support. Trigger phrases include "make an explainer", "turn this paper into an interactive explainer", "build a distill-style explainer", or "explain X visually". For codebases or source files, use explaining-codebases instead.

Creating Explainers

Overview

This skill produces a **single self-contained interactive explainer** in the style of distill.pub - serif typography, a sticky two-column layout, and hand-built Canvas figures the reader can interact with. The output is one `index.html` file that opens directly in a browser; no parent project, no build step, no shared infrastructure required.

**Core constraints (non-negotiable):**

  • **Zero dependencies.** No npm, no bundler, no React, no D3, no Three.js, no Tailwind. Vanilla HTML + inline CSS + vanilla JS only.
  • **One file per article.** All CSS in a single `<style>` block in `<head>`; all JS at the bottom of `<body>`. The only external network requests are Google Fonts.
  • **Hand-coded Canvas figures**, not SVG libraries or images. 3D uses custom projection + z-sorting + lighting (see `references/figure-archetypes.md`).
  • **The voice matters as much as the visuals.** Conversational, second-person, analogy-rich. Read `references/voice-and-style.md` before drafting prose.

If you find yourself reaching for a framework or asking "should I just use React for this", stop. The constraint is the point.

When to Use

Use whenever the user asks to:

  • Turn a paper, blog post, transcript, or research report into a walkthrough
  • Build a distill-style or interactive explainer on any topic
  • "Explain X" with figures the reader can interact with

Don't use for:

  • Static blog posts with no interactivity (just write HTML)
  • Slide decks or presentations
  • Documentation sites or landing pages
  • Anything that needs a build step or framework
  • Explaining a codebase or source files - use `explaining-codebases`

Intake: Gather Your Source Material

Intake is one phase: gather what the article is built from. The material can be given files, web research, or both. Pick the references that apply and read them when you reach this phase, not upfront.

| You have | Read | Source of truth | |----------|------|-----------------| | Files (paper, URL, paste, transcript, report) | `references/intake-from-files.md` | The provided document(s) | | Only a topic | `references/intake-from-research.md` | Web research, then synthesis | | Files **and** a topic that needs more | both | Files as spine, research as supporting |

**Mixed intake.** When the user provides files and the topic also needs material the files do not cover (recent developments, criticisms, corroboration), read both references and combine them via spine-vs-supporting. Synthesize across everything into one outline and one article.

If you only have a topic and web search is unavailable, ask the user to paste sources. Do not write a technical interactive explainer from training data alone.

Workflow

The interactive explainer is too rich to one-shot. Work in stages and check in with the user.

1. Intake                   -> gather material (files, research, or both)
2. Research-time fact-check -> if you researched, verify sources before drafting (REQUIRED)
3. Outline                  -> propose sections + figure list, get user approval
4. Scaffold                 -> copy template, fill metadata
5. Prose pass               -> write all sections with figure placeholders
6. Figures pass             -> implement each interactive figure
7. Post-draft fact-check    -> audit every claim against its source (REQUIRED, blocking)
8. Polish                   -> run the Quality Checklist to completion

**Pause for user approval after the outline (step 3).** This is the highest-leverage check-in - if the outline is wrong, everything after it is wasted work. Show the user: title, subtitle, section list with one-line summaries, and a numbered figure list with what each figure shows and how the reader interacts with it.

**Steps 2 and 7 are gates, not suggestions.** Use `fact-checking-explainers`. The interactive explainer is not done until the post-draft fact-check returns zero unresolved claims - every checkable claim is supported. See the Quality Checklist.

**Step 8 is complete only when every Quality Checklist item passes.** Fix any failing item before delivery.

**Don't pause** between the other steps unless something is genuinely ambiguous. Show progress, don't ask for permission to keep working.

The Article Skeleton

Every article has the same skeleton. Use `assets/article-template.html` as the starting point - copy it to the output path and fill in the marked `{{PLACEHOLDERS}}`. Don't try to rebuild this structure from scratch; it captures invariants (DPR-aware canvas init, sidebar scroll-tracking, responsive breakpoints) that are easy to get wrong.

The skeleton provides:

  • Two-column layout: 220px sticky sidebar + 720px max content column
  • Article header (overline, h1, italic subtitle, meta line, fade-in animations)
  • Section anchors and a sidebar TOC that highlights the section in view
  • A figure HTML pattern with label, canvas-wrap, controls, and caption
  • The `initCanvas()` utility (DPR-scaled, returns CSS dimensions)
  • Responsive collapse at 1060px (sidebar hides) and 600px (mobile)
  • An optional article footer for attribution / source links (delete if not needed)

See `references/template-walkthrough.md` for what every block in the template does and where to fill in your content.

Figures

Each interactive figure is a self-contained IIFE:

(function() {
  const { canvas, ctx, w, h } = initCanvas('canvas-myfig');
  let state = { /* ... */ };
  function draw() { /* render */ }
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withexplain-this

An Agent Skills package for creating distill-style interactive explainers - single self-contained index.html pages with a sticky two-column layout, hand-built Canvas figures, and conversational prose, like the explainers at distill.pub.

Get the whole plugin, auto-invoked
Stats
17
Stars
0
Views
1
Forks
Active
Maintenance
HTML
Language
MIT
License
6d ago
Last commit
3mo ago
Created

Repo: analyticalmonk/explain-this