viz/skills/viz-router/SKILL.md
Routes collaborative document editing to the optimal method based on the user's environment. Activated when the user wants to EDIT content (not just view it), or when Claude wants the user to review and modify a draft. Checks terminal type and available tools to choose between browser editor, terminal split editor, or fallback.
npx skillsauth add musingfox/cc-plugins viz-routerInstall 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.
Route document visualization and editing to the best available method.
Before making any decision, run this command to collect environment signals:
echo "TERM_PROGRAM=${TERM_PROGRAM:-unknown}"
echo "GHOSTTY=$([ "${TERM_PROGRAM}" = "ghostty" ] && echo "yes" || echo "no")"
echo "SSH=$([ -n "${SSH_CLIENT:-}${SSH_CONNECTION:-}" ] && echo "yes" || echo "no")"
echo "EDITOR_MCP=$(command -v node >/dev/null 2>&1 && [ -f "${CLAUDE_PLUGIN_ROOT}/mcp-editor/dist/index.js" ] && echo "available" || echo "unavailable")"
Record the output. Do NOT skip this step.
Use the environment info to choose the editing method:
| Condition | Method | How |
|-----------|--------|-----|
| EDITOR_MCP=available | viz-editor (browser) | Call edit-document MCP tool with content. Blocks until user clicks Done. Result is the edited markdown. |
| GHOSTTY=yes and editor MCP unavailable | collab-edit (terminal split) | Write content to /tmp/viz-collab.md, run bash "${CLAUDE_PLUGIN_ROOT}/skills/collab-edit/lib/ghostty-split.sh" "nvim /tmp/viz-collab.md", wait for user completion signal. |
| Neither available | File fallback | Write content to /tmp/viz-collab.md, tell user the path, ask them to edit in their preferred editor and tell you when done. |
If the user says "open in neovim", "在 terminal 裡編輯" → use collab-edit regardless. If the user says "open in browser", "用瀏覽器" → use viz-editor regardless.
After routing, execute the chosen method. Do not explain the routing decision unless the user asks why.
User: "把這個計畫渲染出來看看" → Intent: view-only → use doc-render skill
User: "幫我產生一份草稿,我想自己改一下" → Intent: collaborative edit → check environment → route to viz-editor or collab-edit
Claude decides to show a complex comparison table: → Intent: view-only → use doc-render skill proactively
User: "我們一起改這份文件" → Intent: collaborative edit → check environment → route
User: "用 neovim 開給我改" → Intent: collaborative edit, explicit method → use collab-edit regardless of environment
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.