{"id":51215856,"url":"https://github.com/Jaderson-bit/mindmap-markmap-viewer","last_synced_at":"2026-07-16T14:01:16.321Z","repository":{"id":363572417,"uuid":"1262338410","full_name":"Jaderson-bit/mindmap-markmap-viewer","owner":"Jaderson-bit","description":"A Claude Code skill that turns Markdown outlines into interactive, offline mind maps with markmap.js — white-on-dark, searchable (match + ancestors), with a zoom / expand / export toolbar.","archived":false,"fork":false,"pushed_at":"2026-06-09T12:04:59.000Z","size":602,"stargazers_count":44,"open_issues_count":0,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-09T14:06:36.291Z","etag":null,"topics":["claude-code","claude-skill","markdown","markmap","mindmap","skill"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jaderson-bit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-07T21:54:42.000Z","updated_at":"2026-06-09T12:22:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Jaderson-bit/mindmap-markmap-viewer","commit_stats":null,"previous_names":["jaderson-bit/mindmap-markmap-viewer"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Jaderson-bit/mindmap-markmap-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaderson-bit%2Fmindmap-markmap-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaderson-bit%2Fmindmap-markmap-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaderson-bit%2Fmindmap-markmap-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaderson-bit%2Fmindmap-markmap-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jaderson-bit","download_url":"https://codeload.github.com/Jaderson-bit/mindmap-markmap-viewer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaderson-bit%2Fmindmap-markmap-viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35546267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-skill","markdown","markmap","mindmap","skill"],"created_at":"2026-06-28T04:01:00.196Z","updated_at":"2026-07-16T14:01:16.315Z","avatar_url":"https://github.com/Jaderson-bit.png","language":"Python","funding_links":[],"categories":["⭐ 精选第三方技能"],"sub_categories":["🎨 内容创作"],"readme":"# mindmap-markmap-viewer\n\nA Claude Code skill that turns hierarchical Markdown into an **interactive SVG mind map** with [markmap.js](https://markmap.js.org/) — readable white-on-dark by default, with expand-by-level control and a search that filters the tree to matches **plus their ancestors and descendants** (so a hit always shows up in context, not floating alone). Works standalone or embedded in Streamlit.\n\n![Install the skill, ask Claude to turn an outline into a mind map, and open the interactive result](assets/demo.gif)\n\n**[▶ Live demo](https://jaderson-bit.github.io/mindmap-markmap-viewer/)** — an actual generated map, in your browser: pan, zoom, fold branches, export SVG/PNG. The page is one self-contained HTML file, exactly what the skill produces.\n\n## Try it in one line\n\nNo install needed — paste this into Claude (Claude Code or the app):\n\n\u003e Using this skill https://github.com/Jaderson-bit/mindmap-markmap-viewer, create a mindmap of Product Management.\n\nClaude clones the skill on the fly, follows its authoring rules (balanced branches, short labels), and hands back an interactive `.html` that opens offline plus the editable `.md` source of truth. Swap \"Product Management\" for anything you want mapped.\n\n![One-line prompt in the Claude app producing an interactive Product Management mind map](assets/one-line-demo.png)\n\n## Why this exists\n\nmarkmap renders a Markdown outline as a zoomable mind map, but three things need a layer on top to be genuinely usable:\n\n- **Visibility** — a white font is invisible on the white default surface; the renderer paints its own dark backdrop so the map is readable everywhere, not just in a dark host.\n- **Expand control** — collapse to N levels or expand everything, without rebuilding the map.\n- **Search that keeps context** — filtering to just the matching nodes loses the path that explains *where* a hit lives; this keeps ancestors and the matched subtree.\n\n## Features\n\n- One call to a **single self-contained HTML file** (`build_html` / `write_mindmap`) — the markmap stack (vendored locally and pinned exact) is **inlined into the page**, so the one `.html` **opens offline anywhere** with no CDN, no network, and no sibling files to keep alongside it.\n- Built-in **navigation toolbar**: zoom in/out, fit-to-window, expand-all / collapse-all, and **export to SVG / PNG** (2× raster, current fold state).\n- Expand-by-level (`set_expand_level`), including expand-all (`-1`).\n- Accent-insensitive, context-preserving search (`filter_markmap`).\n- HTML-safe: `\u003c`, `\u003e`, `\u0026` in node text (`List\u003cString\u003e`, `a \u003c b`) round-trip correctly instead of breaking the page.\n- **Zero runtime dependencies** for the core — Python standard library only. Streamlit is an optional import, used only when you embed.\n\n## Install\n\nAsk Claude Code to install it from this repo:\n\n\u003e Install this skill from https://github.com/Jaderson-bit/mindmap-markmap-viewer\n\nOr, as a developer, clone it into your skills directory:\n\n```bash\ngit clone https://github.com/Jaderson-bit/mindmap-markmap-viewer.git ~/.claude/skills/mindmap-markmap-viewer\n```\n\nOr copy a folder you already have:\n\n```bash\ncp -r mindmap-markmap-viewer ~/.claude/skills/\n```\n\n## Usage\n\n```python\nimport sys\nfrom pathlib import Path\n\nSKILL = Path.home() / \".claude\" / \"skills\" / \"mindmap-markmap-viewer\"  # wherever you cloned it\nsys.path.insert(0, str(SKILL / \"scripts\"))\nfrom render_markmap import build_html, set_expand_level, filter_markmap\n\nsrc = (SKILL / \"assets\" / \"example.md\").read_text(encoding=\"utf-8\")   # or your own outline\n# optional: src, n = filter_markmap(src, \"branch b\")   # search + keep context\n# optional: src = set_expand_level(src, -1)             # expand all\nopen(\"mindmap.html\", \"w\", encoding=\"utf-8\").write(build_html(src, height=850))\n```\n\nInside Streamlit:\n\n```python\nsys.path.insert(0, str(SKILL / \"scripts\"))             # SKILL as above\nfrom render_markmap import render_markmap, set_expand_level\nrender_markmap(set_expand_level(src, 2), height=850)\n```\n\nSee [`SKILL.md`](SKILL.md) for the source format and authoring rules.\n\n## Layout\n\n```\nmindmap-markmap-viewer/\n├── SKILL.md                     # operational guide (loads when the skill triggers)\n├── scripts/render_markmap.py    # build_html / set_expand_level / filter_markmap\n├── assets/\n│   ├── example.md               # minimal sample outline\n│   └── vendor/                  # pinned markmap + d3 libs, loaded locally (offline)\n├── evals/                       # dependency-free regression suite + eval prompts\n└── references/\n    ├── internals.md             # how the helpers work and why\n    └── lessons.md               # real-world lessons + adversarial counter-review\n```\n\n## Tests\n\n```bash\npython evals/test_render_markmap.py\n```\n\nA dependency-free suite; every check is labeled with the bug it locks down.\n\n## Battle-tested\n\nThe renderer and text transforms were hardened against a multi-agent adversarial review (12 confirmed findings, each verified by a second agent that tried to refute it). The findings — and the process — are documented in [`references/lessons.md`](references/lessons.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJaderson-bit%2Fmindmap-markmap-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJaderson-bit%2Fmindmap-markmap-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJaderson-bit%2Fmindmap-markmap-viewer/lists"}