Atlas / Skills / opencanviz / opencanviz-skills-repo

opencanviz-skills-repoSAFE

skills/opencanviz/opencanviz-skills-repo

Agent skill and Claude Code plugin that writes openCanviz explainer video projects as JSON

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
—
Hosts
3 documented
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://opencanviz.com/blog/opencanviz-agent-skill-for-claude-code)

Agent skills for openCanviz, which turns an outline into a narrated, animated explainer video.

The opencanviz-json skill teaches an AI agent to write openCanviz project JSON that you can paste into Import on opencanviz.com/create. The agent plans scenes and steps, writes the JSON, checks it against the schema, and hands you a file that imports and plays.

openCanviz is our product. The skill is free and MIT licensed.

What is in this repository

.claude-plugin/marketplace.json          Claude Code marketplace listing
docs/demo.gif                            the demo above (not part of the plugin)
plugins/opencanviz/
.claude-plugin/plugin.json             plugin manifest
README.md                              plugin README
skills/opencanviz-json/
SKILL.md                             the skill: workflow, rules, checklist
schema.json                          JSON Schema, same as https://opencanviz.com/schema/v1.json
scripts/opencanviz.py                Python builder and validator (stdlib only, Python 3.9+)
scripts/tex2svg.js                   LaTeX to SVG for math scenes (needs node and mathjax-full)
examples/*.json                      22 complete projects that import and play
examples/*.py                        the Python script that writes each example
tests/test_examples.py               runs the examples and checks the validator refuses bad files

Agents that can run Python build the project with scripts/opencanviz.py, which lays out the nodes, fits the text, keeps captions and arrows readable, and refuses to save a file that breaks a rule. Agents that cannot run code write the JSON by hand from the rul

Read from source at commit 1f55e0b70ee8OBSERVED · 2026-10-11
02

Install

Commands as the repository documents them. They are shown, not run.

claude plugin install opencanviz@opencanviz-skills
npx skills add opencanviz/opencanviz-skills-repo
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
codexmentioned
cursormentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: opencanviz-json
description: Write valid openCanviz video/diagram JSON that imports cleanly through Create > Import > Paste JSON or Mermaid on opencanviz.com, then plays and exports correctly. Use when asked to create or edit an openCanviz project as JSON, to turn a script or outline into an openCanviz video file, or to fix an openCanviz JSON file that imports but plays wrongly.
---

# openCanviz JSON

openCanviz turns a JSON file into an animated, narrated video. The user pastes your JSON into **Import** on https://opencanviz.com/create and clicks **Import project**. Import does not validate fields, so a file that parses can still play wrongly. Follow the rules below and validate before you answer.

**If you can run Python, use `scripts/opencanviz.py` (see `examples/*.py`); otherwise write JSON by hand following the rules below.** The helper applies every rule on this page for you and refuses to save a file that breaks one.

## Pick the visual that fits the topic

Boxes and arrows are for flows, systems and processes only. Everything else has a better shape; each row names the helper call and the example that shows it.

| The topic is | Show it as | Helper (scene / step) | Example |
| --- | --- | --- | --- |
| A flow, a system, a pipeline, a cycle | Boxes and labeled arrows | `box`, `arrow` / `reveal`, `draw` | `flow`, `two_scenes`, `portrait_stack` |
| Amounts compared across categories | Bar chart, values count up | `bar_chart` / `grow` | `bar_chart` |
| A trend over time | Line chart that draws itself | `line_chart` / `extend` | `line_chart` |
| Two measures per item, clusters | Scatter chart, dots move | `scatter` / `scatter_to` | `scatter_grid` |
| Parts of a whole | Pie or donut | `pie` / `sweep` | `pie` |
| Sorting, searching, two pointers | Array with pointers | `array`, `pointer` / `swap`, `color`, `point`, `bracket` | `bubble_sort` |
| A tree, a linked list, a graph | The structure itself | `tree`, `linked_list`, `graph` / `color`, `point`, `append` | `data_structures` |
| A table, a matrix, dynamic programming | Grid | `grid` / `set_cell`, `color` | `scatter_grid` |
| Code, line by line | Code panel plus variables | `code`, `variable` / `highlight`, `assign` | `code_walkthrough` |
| Who calls whom, in order | Sequence diagram | `sequence`, `message` / `draw`, `activate` | `sequence` |
| History, dates, milestones | Timeline | `timeline` / `event` | `timeline` |
| Before and after, A versus B | Two panels | `panels` | `before_after` |
| Tips, rules, steps of advice | Bullets with check marks | `bullets` / `reveal` | `bullets` |
| One big number, a percentage done | Counter, progress bar | `counter`, `progress` / `set` | `counter_progress` |
| Something travelling a route | A node on a path, a packet on an arrow | `path` / `follow`, `packet` | `path_follow` |
| A title, a claim, a list of words | Kinetic type: written on, typed, popped, staggered | `text`, `lines` / `reveal(style=...)`, `reveal_lines` | `kinetic_text` |
| One big word as the opening beat | Letters that pop in and blow apart | `letters` / `pop`, `hide(style="scatter")` | `motion_presets` |
| Hashing, a token ring, a round-robin, a clock | A ring with dots and owned arcs; keys walk to their owner | `ring`, `ring.dot`, `ring.arc` / `walk`, `reveal(arc, "draw")` | `motion_presets` |
| Rows of facts, a lookup, before and after values | A table revealed column by column, changed cells tinted | `table` / `stagger(tbl.column(c))`, `tint` | `motion_presets` |
| Two or three headline numbers compared | Bars that wipe in with big numbers | `compare_bars` / `stagger(bars, "wipe")`, `pop(numbers)` | `motion_presets` |
| Traffic on a link, requests flowing | Dots streaming down an arrow | `arrow` / `draw`, `stream` | `motion_presets` |
| An equation, a proof, a derivation | LaTeX lines one per step; the changed term flashes | `math`, `math_row`, `derivation` / `stagger`, `emphasize(t, "flash")` | `math_plot` |
| A function, a rate of change, an area | A plot: curve draws on, area, a point and tangent that ride it | `plot`, `plot.curve/area/point/tangent/legend` / `reveal(curve, "draw")`, `ride` | `math_plot` |
| Triangles, angles, sets, matrices, numbers on a line | Geometry, Venn, matrix, number line | `poly`, `angle_mark`, `side_label`, `venn`, `matrix`, `number_line` | `math_plot` |

Do not fade everything in. A video where every node uses the same fade looks like a slide deck. Write titles on (`style="write"`), type subtitles and terminal text (`"type"`), pop a number or a key word (`"pop"`), stagger a list (`reveal_lines`), and join scenes with a transition that says what changed (see Scene transitions and Motion presets).

## Files in this skill

- `schema.json`: the JSON Schema (draft 2020-12), the same as https://opencanviz.com/schema/v1.json. Validate every file against it.
- `scripts/opencanviz.py`: a Python 3.9+ builder and validator (standard library only; also checks `schema.json` when `jsonschema` is installed).
- `scripts/tex2svg.js`: LaTeX to SVG for `scene.math()`, `math_row()` and `derivation()`. Needs `node` and `mathjax-full` (`npm i mathjax-full`, or set `MATHJAX_PATH` to a `node_modules` folder that has it). Only the math calls need it; they raise with the install line when it is missing.
- `examples/minimal.json`: two boxes, one arrow, two steps. The smallest correct project.
- `examples/flow.json`: a four-step 16:9 flow diagram with a title, captions and narration.
- `examples/two_scenes.json`: two scenes, a crossfade, a typewriter title, a skip arrow on its own lane, a removed edge and a camera zoom.
- `examples/short.json`: a 9:16 Short in the flat single-scene form, with stacked cards and a progress bar.
- `examples/science_explainer.json`: three narrated scenes with labeled arrows and a two-row comparison.
- `examples/portrait_stack.json`: a 9:16 Short with a vertical chain of cards and labeled arrows.
- `examples/kinetic_text.json`: text entrances (write-on, type, staggered lines, pop) 
05

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (4 observation(s))
Shell
declared (1 observation(s))
Dependencies
pinned
Secrets in source
none-found

Findings (1)

LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
plugins/opencanviz/skills/opencanviz-json/examples/math_plot.json:1
{"$schema":"https://opencanviz.com/schema/v1.json","title":"Math and graphs","artboard":{"x":-960,"y":-540,"width":1920,"height":1080,"background":"#0f172a"},"sceneNames":["Derivation","Plot","Shapes"

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 1f55e0b70ee8full audit observations/trust-audit/skill/opencanviz__opencanviz-skills-repo.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-111f55e0b70ee8SAFEB89first audit
07

Questions

What does the opencanviz-skills-repo skill do?

Agent skill and Claude Code plugin that writes openCanviz explainer video projects as JSON

Is opencanviz-skills-repo safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can opencanviz-skills-repo access on my machine?

The audit observed that it reaches the network and runs shell commands. Each of those is consistent with what it says it does. Secrets in the source: none found.

Which assistants does opencanviz-skills-repo work with?

Its documentation mentions claude-code, codex and cursor. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (1f55e0b70ee8), read on 2026-10-11. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement