salvador
Autonomous p5.js visualization agent. It implements, inspects, critiques design/UX, fixes, and launches the result.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Autonomous p5.js visualization agent. It implements, inspects, critiques design/UX, fixes, and launches the result.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Autonomous browser game agent. Analyzes game concept, implements with KAPLAY.js (2D) or Three.js (3D), playtests in headless browser, critiques gameplay/mechanics, fixes, and launches the result.
deploys local artifacts (visuals, html) to configured remote destinations (e.g. ssh, s3). handles file transfer and permissions.
| name | salvador |
| description | Autonomous p5.js visualization agent. It implements, inspects, critiques design/UX, fixes, and launches the result. |
Use this skill to visualize concepts using p5.js with a focus on high-quality UX, aesthetics, and continuous motion.
The visual IS the explanation. Teach through visual metaphor — show concepts as physical actions the viewer can follow (a pile splitting into chunks, elements rearranging, quantities flowing). Text is annotation, not content. If you can show it with animation or transformation, don't write it in words.
Follow this strict loop when asked to visualize a concept:
package.json is missing, run bash .claude/skills/salvador/scripts/setup.sh.index.html and src/main.js exist.resources/p5-missing-knowledge.md for p5.js 2.x API changes before writing any code.resources/responsive-design.md for the scale factor pattern.resources/visual-quality.md for layout, typography, and color rules.resources/design-defaults.md for spacing values and code patterns.Before writing any code, decompose the concept:
Decide the visualization type:
This decision shapes everything below. Don't force stages on a concept that doesn't need them.
Research the Domain: Look up the actual facts (angles, counts, formulas, rules)
If staged: Read resources/storytelling.md for narrative structure, then plan the arc:
If staged — STOP — Write the Bridge Chain (do NOT proceed to coding without it):
Write out this exact structure for every stage:
stage 1: [title]
BEFORE: [what the viewer sees at the START of this stage]
AFTER: [what the viewer sees at the END — what changed and why]
teaches: [what this visual change communicates to the viewer]
analogy: [everyday thing that works like this]
→ "[question that creates pull to stage 2]"
stage 2: [title]
BEFORE: [starting visual state — must answer the bridge from stage 1]
AFTER: [ending visual state — what transformed]
teaches: [what the contrast communicates]
analogy: [...]
→ "[question that creates pull to stage 3]"
stage 3: ...
Example — BAD:
stage 2: Cooper Pairs
BEFORE: lattice with electrons
AFTER: lattice with paired electrons
teaches: Cooper pairs have zero resistance
Example — GOOD:
stage 2: Cooper Pairs
BEFORE: 12 electrons bouncing chaotically off lattice nodes, leaving short jittery trails
AFTER: temperature gauge drops, electrons slow, snap into pairs with glowing bonds, glide smoothly through lattice without deflecting
teaches: the CONTRAST between chaotic-bouncing and smooth-gliding IS the explanation of superconductivity — no text needed
Rules:
same canvas or new scene and say why. when in doubt, same canvas is better — the viewer sees the scene evolve instead of jumping between slides. this decides which transition pattern from design-defaults.md to use.If standalone/hybrid: Plan the scene and interactions:
Identify What Needs Explanation (if educational):
Living Systems: The system must breathe.
draw() to animate physics/logic continuously. noLoop() is forbidden.(Staged only) Scene Transitions: Use the scene plan from step 4.
design-defaults.md. (e.g., trigonometry builds up one diagram; sorting transforms the array in place.)design-defaults.md — shared chrome (info card, nav) lerps, scene content fades in smoothly. Never instant-cut.(Staged only) Granular Transitions: Never skip the "moment of change"
Trackability: When elements transform or move, viewers must follow them
(Educational) Data Cards: Show the underlying facts, not just the visual
Repeat this cycle until the visualization is High Quality:
Implement/Refine: Write src/main.js.
draw() runs continuously. Show micro-movements even in idle states.resources/visual-quality.md)resources/design-defaults.md.window.addEventListener('keydown'). Map 'G' to saveGif.window.stageCount = stages.length so the inspector can navigate all stages.resources/design-defaults.md.Inspect: Run node inspect.js
snapshots/stage_N.png for each).snapshots/frame_1.png, frame_2.png, frame_3.png). If the visualization has no stages, window.stageCount is not needed.Critique: Open every snapshot. Your job is to find problems — list at least 3 per screenshot. If you can't find 3, look harder — there are always problems in a first draft.
Before checking details, ask: would a viewer understand this concept if they couldn't read any text? If not, the visuals aren't carrying enough weight — rethink the approach, don't polish details.
For each snapshot, do these two things in order:
First — describe what you see: What would a first-time viewer understand from this screenshot alone? What's clear? What's confusing? What's broken? (overlaps, clipping, misalignment, text collisions, elements outside bounds, unclear processes or connections)
Then — check specifics (use resources/visual-quality.md as reference):
Verification rule: if you claim a fix, re-run node inspect.js and verify the specific area in the new screenshot before proceeding.
Decide:
Once the loop is complete and the visualization is polished:
npx vite --open.