Skip to content
Skills Library
Education · Learning & explanation

visualize

/visualize

Build a quick, interactive visual of a math concept for a learner studying a course (usually in a folder indexed by the `learn` skill). The default is a step-through viewer of a ManimGL derivation; alternatives are a parameter slider over a ManimGL sweep, or a live JSXGraph widget for free exploration. Each is one self-contained HTML page, with no video encode unless asked. Use for /visualize, "show me", "can I see how X changes with w", "draw the phase plane", or when a concept is geometric or parametric.

Licence
MIT
Last repository change
31.10.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
3
Scripts
1
HTML comments
0
URLs in SKILL.md
1
Deprecation

No signals detected. Repository changed on 31.10.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What to check before installing
  • 1 scripts in this package. Review them before installing, as Claude may execute them.

Scripts: scripts/viz.py

What it does and when to use it

Build a quick, interactive visual of a math concept for a learner studying a course (usually in a folder indexed by the `learn` skill). The default is a step-through viewer of a ManimGL derivation; alternatives are a parameter slider over a ManimGL sweep, or a live JSXGraph widget for free exploration. Each is one self-contained HTML page, with no video encode unless asked. Use for /visualize, "show me", "can I see how X changes with w", "draw the phase plane", or when a concept is geometric or parametric.

Triggers from the description

show mecan I see how X changes with wdraw the phase plane

Arguments

/visualize <concept or question> [beats | slider | live | video]
Original author description

Build a quick, interactive visual of a math concept for a learner studying a course (usually in a folder indexed by the `learn` skill). The default is a step-through viewer of a ManimGL derivation; alternatives are a parameter slider over a ManimGL sweep, or a live JSXGraph widget for free exploration. Each is one self-contained HTML page, with no video encode unless asked. Use for /visualize, "show me", "can I see how X changes with w", "draw the phase plane", or when a concept is geometric or parametric.

How it works

  1. 1. Choose the mode
  2. 2. Ground it in the course
  3. 3a. ManimGL scenes (beats, slider)
  4. 3b. Live widgets
  5. 4. Hand over and record
Original SKILL.md headings · 89 lines, 870 words
SKILL.md preview
---
name: visualize
description: >-
  Build a quick, interactive visual of a math concept for a learner
  studying a course (usually in a folder indexed by the `learn` skill). The
  default is a step-through viewer of a ManimGL derivation; alternatives are a
  parameter slider over a ManimGL sweep, or a live JSXGraph widget for free
  exploration. Each is one self-contained HTML page, with no video encode unless
  asked. Use for /visualize, "show me", "can I see how X changes with w",
  "draw the phase plane", or when a concept is geometric or parametric.
argument-hint: "<concept or question> [beats | slider | live | video]"
---

# Visualize

A picture is worth building when it shows the mechanism: how the geometry
changes, or why a step follows. Use the course's notation and its parameter
values. Keep each visual to one idea.

```bash
L="python -I $HOME/.claude/skills/learn/scripts/learnctl.py"
PYM="$MANIM_WORKSPACE/.venv/Scripts/python.exe"   # ManimGL 1.7.2 + Pillow (see README)
VIZ="$HOME/.claude/skills/visualize/scripts/viz.py"
```

Output goes to `<course>/.learn/viz/<slug>/`, or `./viz/<slug>/` outside a course folder.

## 1. Choose the mode

| The concept is… | Mode | Cost |
|---|---|---|
| A sequence of logical steps: a derivation, a construction, "first the nullclines, then the fixed points" | **beats**: a ManimGL scene, one frame after each `play()`, stepped through in a viewer | ~35–45 s, ~250 KB |
| One parameter whose effect on a picture matters (a bifurcation, a gain, a coupling strength) | **slider**: a ManimGL scene with a `ValueTracker` swept over a range | ~20 s for 56 frames at 720p, ~1.3 MB |
| Two or more knobs, dragging an initial condition, or open-ended exploration | **live**: a JSXGraph page computing in the browser | seconds to write; no render |
| The motion itself is the point, or it's for presenting | **video**: only on request | from the workspace root: `$PYM -m manimlib <dir>/<slug>.py <Scene> -w -l --video_dir <dir>` (`--hd` for final) |

When unsure, ask in one line. Say which mode you picked and why in one line.

## 2. Ground it in the course

- Run `$L context --query "<terms>"` and read the cited passage, so equations, parameter values and names match the lecture.
- If `context` says `CHECK PAGE IMAGE`, check the page before copying a formula.
- Before drawing any computed quantity (fixed points, eigenvalues, trajectories), check it with NumPy/SymPy. The picture must be right.

## 3a. ManimGL scenes (beats, slider)

The engine is **ManimGL** (`from manimlib import *`), **never Manim CE**.
- Read `$MANIM_WORKSPACE/.claude/skills/manimgl/SKILL.md` for the API before writing a scene.
- `from common import *` gives `txt()` (Pango text) and `tex()` (LaTeX with amsmath).

**Conventions** (each one cost a re-render):
- **Name the file `<slug>.py`, never `scene.py`.** Caption lookup matches by file basename, and manimlib's own `scene/scene.py` would match first.
- **Captions are trailing comments** on the `self.play(...)` line: `self.play(FadeIn(m))  # Mixed state is a saddle: eigenvalues $-1\pm w$`. Use `$...$` for math; the viewer renders it with KaTeX. An uncommented `self.wait()` is skipped.
- **Axes:** use ranges aligned to the tick step (ticks start at the range minimum) and `add_coordinate_labels(num_decimal_places=1)` when ticks aren't integers. Otherwise labels round to "0, 0, 1".
- **Known ManimGL 1.7.2 footguns:**
  - `Dot(fill_color=…)`, not `color=`.
  - Pass one string to `tex()`; split strings lose relation spacing.
- **Slider scenes** declare
  `SWEEP = {"tracker": "w", "range": [a, b], "n": 56, "label": "$w$", "fmt": ".2f"}`.
  - Store the tracker as `self.w`.
  - Build the picture in `construct()` with `always_redraw` / updaters, and add no animations.
  - Keep per-frame work cheap: `always_redraw` reruns every frame.
- **Trajectories:** integrate them in NumPy and draw them with `VMobject().set_points_smoothly([...])`.

**Render:**
```bash
$PYM "$VIZ" beats  <dir>/<slug>.py <Scene> --out <dir> --hd --title "…" --description "…"
$PYM "$VIZ" sweep  <dir>/<slug>.py <Scene> --out <dir> --title "…" --description "…"   # 720p; --quality l | --hd
```

**Before handing it over, look at 2–3 frames** (Read the PNGs in `<dir>/frames/`). Check for:
- overlapping text
- labels cut off at the frame edge
- tick labels
- the computed objects in the right places

Re-render after fixing. `viz.py viewer <dir> --title …` rebuilds only the HTML.

## 3b. Live widgets

- Copy `templates/live_linear2d.html` (next to this file) to `<dir>/index.html` and adapt the model function, sliders, presets and readouts.
  - The template is a 2-D linear network with a vector field, a draggable initial condition, ‖x(t)‖, eigenvalues and a normality check.
- Keep it one file. Load libraries only from cdnjs, pinned: JSXGraph 1.11.1, KaTeX 0.16.9.
- Draw vector fields as **unit-length directions**. Raw vectors swamp the plot when coupling is strong.
- **Test it.** The browser pane only shows local files as static snapshots, so serve the folder with `python -I -m http.server 8765 --bind 127.0.0.1` in the background. Open it in a pane tab, and check the readouts with `javascript_tool` against a value you computed independently. Then stop the server.

## 4. Hand over and record

- **Show it running, not as a file link.** The app's browser pane renders local HTML as a static snapshot with no JavaScript, so the controls look dead. Instead:
  - Serve the viz folder in the background: `cd <course>/.learn/viz && python -I -m http.server 8765 --bind 127.0.0.1`. Reuse the server if it's already up.
  - Open it with `preview_start` (url `http://127.0.0.1:8765/<slug>/viewer.html`) and confirm it loaded with `javascript_tool`.
  - Also tell the learner that double-clicking the file opens it in their own browser, where everything works.
- Give the path to `viewer.html` / `index.html` as a link, in a few lines:
  - what to look at
  - which control to move
  - what should surprise them
- Link it to the course: "this is L08 p.9's saddle".
- The pages work offline except for the KaTeX/JSXGraph CDN.
- Append one line to `<course>/.learn/viz/INDEX.md`: `- <date> · <mode> · [<title>](<slug>/viewer.html) · <concepts / unit>`.
- Then run `$L log --kind viz --text "<slug>: <mode>, <concepts>"`.
Files in this package (3)
  • SKILL.md 6 KB
  • scripts/viz.py 13 KB
  • templates/live_linear2d.html 8 KB

Versions

RepositoryScoreLicence
This page · hadong1502/learning-skills100MIT
cloudgeni-ai/opengeni100Apache-2.0
asgeirtj/system_prompts_leaks100CC0-1.0
amit429/understanding-map100MIT
asgeirtj/system_prompts_leaks100CC0-1.0
nathanvale/side-quest-marketplace100MIT
clawnify/greybeard100MIT
HaizhuAI/Zkali100Apache-2.0
vellum-ai/vellum-assistant100MIT

Database snapshot: 13.11.2026 · package version 221bb9d1aabb (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100manim-video
    Create mathematical, geometric and scientific videos with Manim Community in Python. Use when animating equations, graphs, transformations or educational explanations; distinguish Manim Community from ManimGL and deliver a rendered, inspected video.
  • 100explainer-infographic
    Generate an animated, interactive HTML page that explains a complex concept through real-world analogies, visual diagrams, and progressive disclosure. Use this whenever the user says 'explainer infographic,' 'explain how X works,' 'make an explainer for,' 'visualize this…
  • 100concept-map
    Use concept maps to visualize relationships between entities in a concept, domain, or system. Use when the task involves understanding how parts connect, exposing knowledge gaps, or communicating system structure.
  • 90interactive-figure
    Build a single-file interactive HTML figure for a study concept: a diagram the student can click, break, and watch respond, with a live readout of the quantity that changes. Use when the user wants an interactive diagram, a clickable explainer, a simulation for a concept, or…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.