visualize — Claude Code skill: render an OKF bundle as a graph
Turns an OKF bundle into one self-contained HTML graph: concepts as nodes, links as edges, a panel with rendered markdown. Handy for seeing the shape of a knowledge base at a glance.
npx skills add scaccogatto/okf-skills --skill visualize -a claude-codeWhat visualize does
The skill reads an OKF bundle directory and writes a single viz.html. Concepts become nodes, coloured by type and sized by body length. Edges come from markdown links and from sources entries that point at another concept in the same bundle. There is no backend and no install, and bundle content never leaves the page.
The detail panel lists type, description, tags, status, generated, verified, stale_after and sources with their credibility signals, plus "Links to" and "Cited by" backlinks. Two badges are derived rather than read: the §5.3 trust tier and staleness. Treat them as advisory — when you report on a bundle, name a concept's tier instead of using it as a gate. A v0.1 timestamp is read as generated.at, so legacy bundles still render fully.
It runs through uv run against scripts/okf_visualize.py; without uv it installs pyyaml and calls the script with python3. The bundle directory is required, so pass .okf explicitly when no path is given. The viewer needs network access, because cytoscape, marked and dompurify load from cdn.jsdelivr.net. Past 1,000 concepts the layout switches to concentric on its own, since the force layout freezes the page; past 5,000 the skill warns about slow loading and suggests rendering a subdirectory instead.
What it helps with
- see the whole OKF bundle as one graph
- spot concepts nothing links to
- check which sources cite a given concept
- read a concept's markdown body without a separate viewer
- filter concepts by type and search across them
Example prompts for the agent
- visualize the .okf bundle
- graph docs/knowledge and write it to report/viz.html
- open the bundle graph with the circle layout
How to install visualize
1Skills CLI (Vercel)
npx skills add scaccogatto/okf-skills --skill visualize -a claude-code2Manually: put the files in place
~/.claude/skills/visualize/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/visualize/
1Skills CLI (Vercel)
npx skills add scaccogatto/okf-skills --skill visualize -a codex2Manually: put the files in place
.agents/skills/visualize/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add scaccogatto/okf-skills --skill visualize -a cursor2Manually: put the files in place
.cursor/skills/visualize/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install scaccogatto/okf-skills visualize2Manually: put the files in place
.github/skills/visualize/SKILL.md1Skills CLI (Vercel)
npx skills add scaccogatto/okf-skills --skill visualize -a gemini-cli2Platform CLI
gemini skills install https://github.com/scaccogatto/okf-skills --path skills/visualizeManually: put the files in place
.devin/skills/visualize/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add scaccogatto/okf-skills --skill visualize -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about visualize
How do I install visualize in Claude?
Run npx skills add scaccogatto/okf-skills --skill visualize -a claude-code. The skill lands in ~/.claude/skills/visualize/SKILL.md.
What does visualize do?
It renders an OKF bundle into one self-contained viz.html with an interactive graph, a detail panel, a per-type filter and search.
What does visualize need to run?
A bundle directory as the argument, and network access for the viewer — cytoscape, marked and dompurify load from cdn.jsdelivr.net. If uv is unavailable, pyyaml is installed instead.
Source text
SKILL.md · MIT
---
name: visualize
description: >-
Render an Open Knowledge Format (OKF) bundle as a single self-contained,
interactive HTML graph (viz.html) — concepts as nodes coloured by type and
sized by body length, markdown links and bundle-internal `sources` as edges,
a wiki-style detail panel with rendered markdown, v0.2 trust/lifecycle/provenance
metadata, and "Links to" / "Cited by" backlinks, layout switching, per-type
filter and search.
Use when asked to visualize, graph, preview, or explore an OKF bundle.
user-invocable: true
argument-hint: "<bundle-dir> [-o viz.html]"
allowed-tools: Bash
---
# Visualize an OKF bundle
Generate a self-contained HTML graph of the target bundle. The bundle directory
is required, so pass `.okf` explicitly when no path is given. No backend, no
install, no bundle content leaves the page. The viewer does need network
access: cytoscape, marked and dompurify load from cdn.jsdelivr.net.
```bash
uv run "${CLAUDE_SKILL_DIR}/scripts/okf_visualize.py" $ARGUMENTS
```
If `uv` is unavailable:
```bash
python3 -m pip install --quiet pyyaml && \
python3 "${CLAUDE_SKILL_DIR}/scripts/okf_visualize.py" $ARGUMENTS
```
The detail panel shows each concept's `type`, `description`, `tags`, `status`,
`generated`, `verified`, `stale_after`, `sources` (with their credibility
signals, a `usage_count` alongside the `usage_window` that frames it), and
rendered body; a `sources` entry pointing at another concept in the bundle also
becomes a graph edge. A v0.1 `timestamp` is read as `generated.at`, so legacy
bundles still render fully.
Two badges are **derived**, not read: the §5.3 trust tier
(*unverified* / *machine-confirmed* / *human-reviewed*, keyed off the `human:`
prefix in `verified[].by`) and staleness (`now >= stale_after`). They are
advisory signals — when reporting on a bundle, say which tier a concept is in
rather than treating any of them as a gate.
| Flag | Effect |
|------|--------|
| `-o <path>` | Output file (default `<bundle>/viz.html`). |
| `-t, --title` | Graph title (default `parent/bundle` dir name). |
| `-l, --link` | Source URL shown in the header. |
| `--layout` | `cose`, `concentric`, `breadthfirst`, `circle`, `grid`. |
| `--max-nodes N` | Exit 1 above N concepts (useful in CI). |
| `--og-image URL` | Absolute URL for the social preview image. |
Above 1,000 concepts the default switches to `concentric` (force freezes the
page; `--layout cose` overrides, and the in-page picker asks first). Above
5,000 it warns that the page loads slowly and reads as a hairball, and
suggests rendering a subdirectory.
Open it in any browser; `${CLAUDE_SKILL_DIR}` resolves whether this runs as part
of the `okf` plugin or as a standalone skills.sh skill. The page is
deep-linkable: `?select=<concept-id>` or `#<concept-id>` opens that concept,
`?layout=<name>` presets the layout.
© scaccogatto · MIT · scaccogatto/okf-skills