From show-and-tell
Turn dense technical findings, an analysis, a code/research session outcome, or a jargon-heavy document into a beautiful, genuinely PLAIN-ENGLISH self-contained HTML explainer that a non-technical or busy stakeholder can actually understand — built on a single everyday metaphor carried through the whole piece, with the REAL numbers shown honestly beside each plain claim, an "engineer's note" layer so technical readers aren't shortchanged, an honesty/limits box, and an arcade/pixel aesthetic that opens straight from file:// (no build, no server). Use this WHENEVER the user wants to explain technical work in plain English, make a pretty/shareable report, one-pager, or recap, summarize an investigation/session "so my boss/team/client can understand it," translate jargon results for a lay audience, or asks for an explainer/writeup/"make this readable" of findings — even if they don't say "HTML." Also use to turn an existing analysis doc or markdown report into a friendly visual explainer. Prefer this over a plain markdown summary when the audience is non-expert or the user says "pretty," "plain English," "for my boss," "easy to understand," or "report."
How this skill is triggered — by the user, by Claude, or both
Slash command
/show-and-tell:show-and-tellThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a single self-contained HTML page that explains something technical to a smart non-expert —
Produce a single self-contained HTML page that explains something technical to a smart non-expert —
the kind of report someone forwards to their boss and the boss actually reads. The proven recipe is in
assets/template.html (a complete, rendering reference you copy and re-bind). This file is the why,
so you don't just fill a template — you make the judgment calls that separate a real explainer from a
prettied-up jargon dump.
A dual-audience artifact. The non-expert reads the big text + the metaphor and leaves understanding the gist and the honest bottom line. The curious/technical reader can drop into the "engineer's note" asides and the real numbers and find nothing dumbed-down to the point of being wrong. The failure mode on both sides is the same: a report that's either (a) so simplified it's misleading, or (b) so technical the intended reader bounces. You're threading that needle.
When this fits: the user has just done or received something technical (a debugging session, a research finding, a measurement, an analysis doc, a migration) and wants it understandable and shareable. When it doesn't: they want the rigorous internal write-up (that's a normal analysis doc), or a live dashboard (different tool), or slides for a pitch (a deck skill).
The single biggest quality lever is a consistent everyday metaphor that maps structurally onto the real thing, and that you do not abandon halfway. It's the scaffold the non-expert hangs everything on.
A plain-English report earns trust precisely because it doesn't hide the messy parts. This is what separates it from marketing.
~51% bar. The plain words carry the meaning; the
number carries the credibility. A claim with no number reads as spin; a number with no plain words
reads as a spreadsheet. Pair them. (Component: a labelled bar or a stat tile.)After a plain-English section, an optional muted aside (.eng) gives the precise/technical version: the
real mechanism, the metric name, the exact method. The non-expert's eye skips the muted text; the
engineer drops in. This is how you serve both audiences in one document instead of writing two. Use it
where the plain version genuinely loses something a technical reader would want — not on every section.
The assets/template.html shell, top to bottom — re-bind the content, keep the bones:
Not every report needs all nine — drop what doesn't apply (a pure findings recap may skip 3 and 5). Keep the order; it's the reading rhythm.
assets/template.html to your output path and re-bind each slot. Keep the entire <style>
block + the small theme <script> as-is — it's a CSS-variable theme system: arcade (default, dark/
pixel/fairy-dust) plus paper (light, print-friendly) and midnight, reader-switchable via the
top-right 🎮/📄/🌌 toggle (print forces a clean light theme). Edit content, not CSS — and never hardcode
a colour; every colour is a --var so all three themes stay correct.open <file>.html (macOS) so they see it immediately.The skill's whole promise is "translate, don't distort." A metaphor or a rounded number drifts from the
source with frightening ease — "could reduce" becomes "will halve," a real figure binds to the wrong
metric, a vivid analogy implies a certainty the findings never had. So before you hand the report over,
dispatch a separate fact-verifier subagent (fresh eyes — not the author) given BOTH the original
technical source AND your report. The reusable prompt + the exact checks live in
references/fact-verifier.md — it checks number-binding (not just presence), magnitude/causal/metaphor
drift, and material omissions, and it fails loud when a claim has no locatable basis (an
"I-couldn't-verify" is a flag, never a silent pass). Fix every DRIFT/FABRICATED/UNVERIFIABLE before
delivering. Honest limit: an LLM checking an LLM reduces drift, it doesn't eliminate it — for
high-stakes reports a human still skims the source-vs-claim table.
The page is self-contained (inline CSS, no external fonts, no build, no server — just one tiny inline script for the theme toggle), so you don't need a browser to catch the likely bugs — and the Playwright-MCP screenshot subsystem tends to wedge anyway. Run the bundled check:
python3 ~/.claude/skills/show-and-tell/scripts/check_html.py <your-report>.html
It confirms the HTML parses with balanced tags AND that every var(--x) you reference is actually
defined in :root — the #1 cause of "I opened it and half the text is invisible" is a typo'd or
undefined CSS variable (see css-var-undefined-silent-declaration-drop). If you added or renamed CSS
classes/variables, this is what catches it before the user opens a broken page. For a true visual check,
open the file (macOS) or serve the directory on a port and use browser_evaluate (file:// is blocked
in the MCP browser) — but the static check covers the silent-failure cases.
The skill was extracted from a report that explained a retrieval-system investigation using a "robot
librarian" metaphor — recall shown as "finds it ~51%," precision as "interrupts on ~99.6%," with
engineer's notes, an honesty box, and a correction of an earlier false claim. The template carries a
different worked example (a slow nightly job, as a "kitchen") so you can see the recipe generalize.
Read assets/template.html top to bottom once before your first build — the inline comments mark each
slot and the intent behind it.
The tone is warm and a little playful (the arcade styling is part of that) — but the substance is straight. You're not spinning; you're translating. The reader should come away understanding and trusting, which only happens if the fun packaging is wrapped around genuinely honest content.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
npx claudepluginhub wan-huiyan/show-and-tell --plugin show-and-tell