agents/interactive-storytelling/SKILL.md
Use interactivity purposefully in data visualizations and narrative content. Trigger for scrollytelling, explorable explanations, simulations, guess-then-reveal patterns, or any data story where user action shapes understanding. NOT for dashboard drill-downs or generic UI interactivity.
npx skillsauth add sanand0/scripts interactive-storytellingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Interactivity is choosing WHICH cognitive work the reader does, not avoiding it. Good interactivity replaces passive reading with active engagement that creates deeper learning.
The litmus test: If removing interactivity collapses the story, you're using it right. If it's decoration, cut it.
Use interactivity when:
Skip interactivity when:
Reader controls speed, author controls sequence. Best for complex systems requiring step-by-step reveal.
Pinned narrative (NYT/Pudding style): text changes, visual stays fixed — efficient for data-heavy stories Progressive reveal: content fades in on scroll — spatial metaphor for temporal/causal sequences Step sequence: discrete sections with transitions — clearest for educational content
Critical rules:
prefers-reduced-motion usersTech: Intersection Observer API (native, performant) or GSAP ScrollTrigger (cross-browser, powerful)
Manipulate variables, observe system response. Teaches causal relationships through experimentation.
Pattern: Overview → sandbox mode where reader explores their own questions Key insight: Quality doesn't matter (hand-drawn sketch = polished viz for learning) Hook requirement: Must work with zero prior knowledge; complexity revealed progressively Ending: Open sandbox — reader goes beyond teacher's original question
Works best for: Systems thinking, policy tradeoffs, algorithm behavior, game theory Nicky Case principle: Start with my question, end with their questions
Reader predicts/draws trend, then sees reality. The gap between guess and truth IS the story.
Why it works: Active prediction >> passive observation for retention (cognitive science proven) Drawing benefit: Motor + visual + semantic encoding = 3x memory vs. reading alone Pattern: Prompt → user input → reveal → comparison Variants: Draw line (NYT), estimate value, rank order, predict next
Critical: User must commit BEFORE seeing answer (no peeking) or testing effect fails
Watch emergent behavior under different conditions. Shows what equations cannot.
Author controls: System rules, parameter ranges Reader observes: Emergent patterns, second-order effects, tipping points Classic wins: Disease spread (WashPost flatten curve), segregation (Parable of Polygons), ecosystem dynamics
Design rule: Animation speed must match comprehension speed (too fast = missed insight)
High-level overview first, details on demand. "Overview first, zoom and filter, then details-on-demand" (Shneiderman)
Prevents: Information overload (human brain: ~7 items working memory) How: Tooltips, expandable sections, drill-down paths, tabs, accordions Golden rule: If data shows users regularly access "hidden" feature, it shouldn't be hidden Anti-pattern: Hiding frequently-used info to look minimal (form over function)
Mobile-first principle: Design for most constrained screen first, enhance for larger screens — forces prioritization
Same design, reader's data. Abstract → concrete via personal context.
Powerful variants:
Why it works: People care deeply about relative position; self-relevance drives engagement
Accessibility is not optional:
aria-live regions)prefers-reduced-motion (CSS media query) — swap animation for instant state changePerformance hierarchy:
Mobile constraints drive better design:
Clear affordances prevent confusion:
Default state tells a story:
Interaction that obscures meaning:
Performance sins:
Mobile hostility:
These patterns were HARD pre-AI, now trivially generateable at scale:
Narrative data stories (scrollytelling, annotated visualizations):
Personalized variations (1000s of custom views):
Explorable explanations (interactive simulations):
Multi-modal explanations (voice + visual + interaction):
The shift: Production is free. Judgment and taste are scarce. Use AI to generate variations, human discernment to pick what works.
Dashboard interactivity (filters, drill-downs): Tools like Tableau made this commodified. Low narrative power, high cognitive cost for casual users. Use only for analyst/expert audiences with specific exploration needs.
Scrollytelling: Intersection Observer API (native, 0 dependencies) or GSAP ScrollTrigger (most powerful, cross-browser) Animations: CSS animations >> JS libraries for simple transitions (performance + no dependencies) Simulations: Canvas for 1000+ objects (performance), SVG for <500 (accessibility via semantic elements) Reactive updates: Observable Plot, D3, or vanilla JS for data-bound interactions
Testing checklist before launch:
documentation
To write in Anand's style in blog posts, talk summaries, interview questions, emails, ...
testing
Use vitest + jsdom for fast, lightweight unit tests for front-end apps
data-ai
Vector art assets (characters, objects, scenes) sources for SVG/Canvas and how to animate them
tools
Tips on using uv and uvx (Python build tools) effectively with GitHub, Torch, etc.