interactive-viz

Builds and audits full-window interactive HTML explainers for fluid mechanics chapters.

Updated Sep 13, 2026
One-click install
npx skills add https://github.com/shammun/fluidpy --skill interactive-viz-shammun
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: interactive-viz
Source: https://github.com/shammun/fluidpy/tree/main/.claude/skills/interactive-viz
Command: npx skills add https://github.com/shammun/fluidpy --skill interactive-viz-shammun

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Designing interactive HTML explainers that teach fluid mechanics concepts, fit any screen without scrolling, and stay numerically consistent with the chapter's Python code is hard to do by hand. This Skill encodes the complete design contract, the Viz.app JavaScript API, layout rules, and the lint/screenshot audit loop so every explainer meets the same quality bar. ## Core Features & Use Cases - Explainer contract and quality bar: 4–5 explainers per chapter, required tabs (Walkthrough, Explore, Explain, Derivation, Equations, Code, Check yourself), no-scroll fit at eight viewport sizes, and depth features like linked views, transport, presets, and inspectors. - Viz.app API reference: full documentation of the assets/viz_lib.js library covering linked views, plotting, field tools, particles, 3-D via three.js, live Explain and Derivation tabs, and synced Python code panels. - Build and audit loop: create files with tools/new_viz.py, validate with tools/viz_lint.py and tools/shot.py screenshots, then embed into notebooks, Colab, and the published web page via show_viz and the publish tool. - Use Case: When adding a new explainer for a chapter on gravity waves, load this Skill to storyboard the views, implement the Viz.app configuration with a dispersion-relation derivation, and iterate through the lint/shot audit until it passes at all sizes. ## Quick Start Load the interactive-viz skill and help me storyboard and build a new chapter 7 explainer on wave dispersion that passes the lint and screenshot audits.

Frequently Asked Questions about interactive-viz

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build an interactive HTML explainer for a fluid mechanics chapter?

Create the file with tools/new_viz.py, configure Viz.app with params, linked stage views, transport, presets, an Explain tab, and selftests, then run tools/viz_lint.py and tools/shot.py. Iterate on the screenshots in reports/viz until the audit passes at all eight viewport sizes.

What tabs must an interactive explainer include?

Required tabs are Walkthrough (4–8 steps), Explore, Explain with numbered sections and an interpretation, Equations, Code, and Check yourself with at least three questions. A Derivation tab is required whenever the viz:derivations meta lists derivation ids.

How do I make an HTML explainer fit the window without scrolling?

The engine picks wide, portrait, or landscape layouts, raises density, and pages long lists automatically. Authors must keep step text under 45 words, at most 3 views with hidePortrait on the least important, no fixed widths over 360 px, and no font sizes below 12 px.

Can explainers use three.js for 3-D visualizations?

Yes, Viz.three attaches a three.js scene to a view with orbit, zoom, and click picking, loaded from a CDN with fallbacks. KaTeX and three.js are the only permitted external resources, both loaded by the shared viz_lib.js library.

Why does the explainer audit fail with equation-too-wide?

Derivation lines wider than the side panel of a 1000×700 notebook iframe fail the audit. Split long equations into two steps, move definitions into the why field, or use aligned environments to keep each line to one relation.

How are explainers embedded into Jupyter notebooks and Colab?

A notebook cell calls show_viz with the chapter and slug, producing a full-window iframe: srcdoc locally and the GitHub Pages URL in Colab. The publish tool swaps outputs for full-viewport section blocks on the web page, verified by shot.py --page.