viz/skills/viz-render/SKILL.md
Render markdown or Mermaid content as formatted HTML in the browser. Triggers when the user asks to view, render, or preview a document as HTML; when the user asks to visualize, diagram, chart, or draw architecture, flows, sequence/class/state/ER diagrams; when resolving plan files from ~/.claude/plans/; or proactively when about to output a table with 4+ rows or 3+ columns, a structured comparison, an audit, a feature matrix, or any formatted content exceeding ~50 lines in the terminal.
npx skillsauth add musingfox/cc-plugins viz-renderInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Render markdown documents, Mermaid diagrams, or plan files as formatted HTML with syntax highlighting, math formulas, Mermaid, scroll animations, and dark mode. One skill, one script, three input shapes.
~/.claude/plans/)User gave an absolute/relative path to a markdown file.
bash "${CLAUDE_PLUGIN_ROOT}/lib/render.sh" "{file_path}" "doc-{name}"
.md)List available plans or resolve by name against ~/.claude/plans/:
INPUT="$ARGUMENTS"
PLANS_DIR="$HOME/.claude/plans"
if [ -z "$INPUT" ]; then
echo "Available plans in $PLANS_DIR:"
ls -t "$PLANS_DIR"/*.md 2>/dev/null | head -20 | xargs -n1 basename | sed 's/\.md$//' | sed 's/^/ - /'
elif [ -f "$INPUT" ]; then
DOC_FILE="$INPUT"; DOC_NAME=$(basename "$DOC_FILE" .md)
bash "${CLAUDE_PLUGIN_ROOT}/lib/render.sh" "$DOC_FILE" "doc-$DOC_NAME"
else
DOC_FILE="$PLANS_DIR/$INPUT.md"
[ -f "$DOC_FILE" ] && bash "${CLAUDE_PLUGIN_ROOT}/lib/render.sh" "$DOC_FILE" "doc-$INPUT" \
|| { echo "Plan not found: $INPUT.md"; ls -t "$PLANS_DIR"/*.md 2>/dev/null | head -10 | xargs -n1 basename | sed 's/\.md$//' | sed 's/^/ - /'; }
fi
Write the content (or Mermaid wrapped in a ```mermaid fence) to a
temp markdown file, then render.
For inline markdown, write to /tmp/viz-doc-{timestamp}.md.
For bare Mermaid code, wrap as:
# {Diagram Title}
```mermaid
{mermaid code}
```
…write to /tmp/viz-diagram-{name}.md, then:
bash "${CLAUDE_PLUGIN_ROOT}/lib/render.sh" "/tmp/viz-diagram-{name}.md" "diagram-{name}"
When the user requests a diagram without providing the code:
references/diagram-types.md for syntax)The render script prints the output HTML path (under /tmp/viz/{project}/)
and opens it in the default browser. Report the path to the user.
If the markdown file starts with frontmatter viz: <recipe>, the render
script swaps the generic viewer for a recipe-specific interactive template.
Recipes treat markdown as the canonical source: the HTML reads from it on
load and exports a roundtrippable markdown back to the clipboard on Export.
Use a recipe when the user wants an output they will iterate on (mark items as done/wontfix, filter, edit fields), not just read.
Available recipes:
references/recipes/pr-review.md for the markdown structure spec.Workflow:
bash "${CLAUDE_PLUGIN_ROOT}/lib/render.sh" <file.md> <output-name>.md → re-render.Markdown without viz: frontmatter falls through to the generic viewer
unchanged.
The recipe Save endpoint listens on port 18090 by default. If that port
is taken (e.g. by another local service), set VIZ_PORT=<port> in the
environment before invoking render.sh.
references/diagram-types.mdreferences/recipes/data-ai
Unified entry point for Obsidian daily-note captures and long-form notes. Triggers on "記一下 / log / 紀錄 / capture this / 寫到 journal" (→ cap mode) and "建立筆記 / new note / 寫一份筆記 / create a note on" (→ note mode). Also via `/obw:cap` and `/obw:note`. Requires `.obsidian.yaml`.
tools
Use the `gog` CLI to operate Google Workspace — Gmail (read/search/send/labels/drafts), Calendar (events/RSVP/freebusy/focus-time/out-of-office), and Drive (list/search/upload/ download/share/move). Triggers on any Gmail, inbox, email, calendar, agenda, meeting, schedule, RSVP, Drive, Google Doc/Sheet/Slides, file share, or upload/download request.
documentation
Interactively create .obsidian.yaml for a project and install starter templates (task / doc / adr) into the vault's Templates folder. Skips templates that already exist; never overwrites.
tools
Manage project hook-guard installation — set up, diagnose, or update Claude Code hooks, git pre-commit, and commit-msg scripts with security checks, code-quality gates, and CLAUDECODE skip logic. Triggers on "set up hooks", "configure pre-commit", "add linting hooks", "initialize hook-guard", "check hooks", "hook doctor", "verify hook setup", "troubleshoot hooks", "update hooks", "regenerate hooks", "sync hooks with current tools", or similar requests.