ai4s-research/mindmap-render
Generate beautiful, high-resolution mindmaps from Markdown unordered lists. Outputs interactive HTML, HD PNG, and PDF with colorful branch themes.
npx skills add https://github.com/ai4s-research/ai4s-skills --skill mindmap-render
Use this skill when the user asks to:
Assume the runtime environment already has Python 3.10+, Playwright, and Chromium installed (they are provisioned in the container). Do not proactively run pip install or playwright install — just run the render script directly. Only if the first run fails with a clear missing-dependency error (ImportError, missing-browser error, etc.), then repair the environment:
pip install -r scripts/requirements.txt
playwright install chromium
and retry. Never install speculatively before a failure is observed.
Ask the user (or infer from context):
air (light blue glow + white cards, default), editorial (warm paper + jewel-tone branches), midnight (deep black + neon accents), or zen (soft misty background + muted pastels).Default structural targets — for synthesis work only. These do NOT apply when you are faithfully reproducing a named source (in that case, follow the source's actual shape). They also yield to any numbers the user gives explicitly.
If the user gives different numbers, use theirs; otherwise treat the defaults above as guidance with judgment — breadth/depth targets are firm, but per-branch expansion is deliberately uneven.
If the user already has a .md file, note its path and proceed to Step 3.
CRITICAL: If the user has NOT provided a .md file, you MUST perform web research BEFORE writing the outline. Do not rely solely on internal knowledge.
WebSearch to find authoritative, high-quality sources:Fail loudly if the authoritative source cannot be found. When the user names a specific artifact (a particular book, edition, course, spec) and repeated searches do not surface its real ToC / syllabus / structure, STOP and tell the user: *"I couldn't find the authoritative structure of [X]. Please paste the ToC, confirm the edition/title, or allow me to produce a synthesized overview instead."* Never invent chapter/section structure to fill the gap. This is the single most important rule of this step.
a) Faithful reproduction (user pointed to a specific named artifact and you located its real structure): copy the ToC/outline verbatim into a single-root bullet list. Preserve original labels, chapter numbering, and natural depth. Do not add layer-5 descriptions, do not force 6–10 top-level branches, do not pad to 5 layers — follow whatever shape the source actually has. The only transformations allowed are: wrapping everything under one root node, and cleaning trivial typography (e.g. converting full-width numbers consistently).
b) Synthesis (broad topic, multi-source): distill the research into a single-root unordered-list Markdown file following the Step-1 structural targets.
- bullet lists; nesting = depth.mindmap-output/<topic>.md (or the current project directory).If you wrote a faithful reproduction (Step 2b-a), skip the full audit. Just verify two things and report one line each: (1) the outline's labels and numbering match the source, (2) you did not inject any fabricated descriptions or extra layers. Then proceed to Step 3.
If you wrote a synthesis (Step 2b-b), do not skip. After saving the outline and before running the render script, verify against the structural target. Output a short audit block to the user:
Structure audit:
- Top-level branches: <N> (target 6–10)
- Max depth reached: <D> (ceiling 5)
- Pillar branches (reach layer 5 with substantive content): <X>
- Shallow branches (stop at layer 2–3 by design): <Y>
- Layer-5 leaves with ≥~200 Chinese characters description: <A> / <total layer-5 leaves>
- Shape note: <one sentence justifying which branches go deep and which stay shallow, and why>
Red flags — rework the outline before rendering if any apply:
Run the rendering script:
python scripts/generate_mindmap.py \
--md <path-to-md> \
--output-dir ./mindmap-output \
--title "<Topic Title>" \
--theme <air|editorial|midnight|zen> \
--scale 2
Arguments:
--md *(required)*: Path to the Markdown file.--output-dir: Where to place the results. Default is ./mindmap-output.--title: Used for the HTML <title> and the output base file name.--theme: air (designer-style airy blue glow + white rounded cards + soft pastel branch accents), editorial (magazine-style warm paper background + jewel-tone branches + dark serif text), midnight (pitch-dark background + neon accents + crisp light text), or zen (soft misty background + muted Morandi pastels + gentle serif text).--scale: Upscale factor for the exported image (default 2). 1 = compact (~2–3 MB), 2 = crisp readable (~3–5 MB), 3+ = poster size. Larger numbers produce physically larger, more readable text.Example (default shape from Step 1: ~9 branches, 5 layers, leaf descriptions):
python scripts/generate_mindmap.py \
--md mindmap-output/large-test.md \
--output-dir ./mindmap-output \
--title "Artificial Intelligence Panorama" \
--theme air \
--scale 3
Report the three generated files to the user:
{title}.html — interactive mindmap (open in browser to zoom/pan/collapse). Live rendering: after starting an HTTP server in the same directory (e.g. python -m http.server) and accessing it through a browser, edit the .md file and refresh the page to see the update; opening it directly as a local file uses the embedded content, behaving the same as before.{title}.png — high-resolution full-page image (suitable for slides, social media, docs).{title}.pdf — vector-like PDF export with print background.full_page=True guarantees the PNG captures everything without clipping.Take ai4s-research/mindmap-render from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.