Skill2.7k estrellas del repoactualizado 9d ago
drawio-skill
The drawio-skill generates editable diagram files in draw.io XML format and exports them to PNG, SVG, PDF, or JPG using the native draw.io desktop CLI. Use it when users request flowcharts, architecture diagrams, ER diagrams, UML diagrams, network topologies, or other visualizations requiring polished styling, rich shape libraries, swimlanes, or exportable formats with embedded diagram recovery.
Instalar en Claude Code
Copiargit clone --depth 1 https://github.com/Agents365-ai/drawio-skill /tmp/drawio-skill && cp -r /tmp/drawio-skill/skills/drawio-skill ~/.claude/skills/drawio-skillDespués abre una sesión nueva de Claude Code; el skill carga automáticamente.
Definición
SKILL.md
# Draw.io Diagrams ## Overview Generate `.drawio` XML files and export to PNG/SVG/PDF/JPG locally using the native draw.io desktop app CLI. **Supported formats:** PNG, SVG, PDF, JPG — no browser automation needed. PNG, SVG, and PDF exports support `--embed-diagram` (`-e`) — the exported file contains the full diagram XML, so opening it in draw.io recovers the editable diagram. Use double extensions (`name.drawio.png`) to signal embedded XML. ## When to use / when NOT to use **Use this skill for:** polished, precise diagrams (architecture, network, strict UML, ERD), anything needing solid opaque fills, 10,000+ stock/branded shapes, swimlanes, or custom geometry, exported as editable PNG/SVG/PDF. **Do NOT use it — route elsewhere — for:** - A casual hand-drawn / whiteboard look → **excalidraw** or **tldraw**. - Diagrams-as-code that live in git / render in Markdown → **mermaid** (general) or **plantuml** (UML). - Freeform infinite-canvas sketching or freehand strokes → **tldraw**. ## Bundled resources When the workflow references one of these, read it on demand — none of them need to be in context up front. | File | Read it when | |---|---| | `references/diagram-types.md` | The user names a specific diagram type (ERD, UML class, sequence, architecture, ML/DL, flowchart) | | `references/shapes.md` + `scripts/shapesearch.py` | The diagram needs a **specific shape** — a cloud icon (AWS/Azure/GCP), Cisco/Kubernetes/network symbol, UML/BPMN/ER/electrical/P&ID element — or any time you'd otherwise guess a `style=` string. `shapesearch.py "<keywords>"` returns the exact official style for 10k+ shapes | | `scripts/aiicons.py` | The diagram involves an **AI/LLM brand** (OpenAI, Claude, Gemini, Mistral, Llama, HuggingFace, Ollama, LangChain, …) — `aiicons.py "<brand>"` returns a draw.io `image` style for the brand logo (lobe-icons via CDN; `--embed` to inline). draw.io has no built-in AI logos. See `references/shapes.md` → "AI / LLM brand logos" | | `references/style-presets.md` | The user asks to learn / save / list / set-default / delete a style preset, or you've resolved an active preset and need the application rules | | `references/style-extraction.md` | You're inside the Learn flow and need the extraction procedure (called from `style-presets.md`) | | `references/troubleshooting.md` | An export fails, vision rejects a PNG, or a rendering looks wrong | | `scripts/repair_png.py` | After every `-e` PNG export — fixes draw.io's truncated IEND chunk (issue #8) | | `scripts/encode_drawio_url.py` | The CLI is unavailable and you need a browser-fallback diagrams.net URL (`--edit` for an editable editor URL) | | `references/autolayout.md` | The diagram is large or layout-heavy (dependency/call graph, code structure, >~15 nodes) and you want Graphviz to place nodes + route edges instead of hand-placing coordinates | | `scripts/pyimports.py` · `jsimports.py` · `goimports.py` · `rustimports.py` | The user wants to visualize a **Python, JS/TS, Go, or Rust project** structure — extracts the import graph (transitive-reduced, optional `--group` containers, nested by sub-package) for autolayout | | `scripts/pyclasses.py` | The user wants a **Python class hierarchy / class diagram** — extracts classes + inheritance edges (boxed by module with `--group`) for autolayout | | `scripts/validate.py` | You generated a `.drawio` (especially via autolayout or for a large hand-placed diagram) and want a fast deterministic structural lint (dangling edges, dup/reserved ids, broken parents, overlaps) before the vision self-check | ## Prerequisites The draw.io desktop app must be installed and the CLI accessible: **macOS sandbox / sandbox isolation note (e.g., codex.app):** In some sandboxed macOS environments, invoking the draw.io desktop CLI (even `drawio --version`) can crash the draw.io process or produce no output. If that happens, treat the CLI as **unavailable in this sandbox isolation** — do not keep retrying inside the sandbox. Prefer a **non-sandboxed host environment** (outside sandbox isolation) for any CLI export work, or use the browser fallback / XML-only outputs. ```bash # macOS (Homebrew — recommended; CLI binary is `drawio`, not `draw.io`) brew install --cask drawio drawio --version # macOS (full path if not in PATH) /Applications/draw.io.app/Contents/MacOS/draw.io --version # Windows "C:\Program Files\draw.io\draw.io.exe" --version # Linux drawio --version ``` Install draw.io desktop if missing: - macOS: `brew install --cask drawio` or download from https://github.com/jgraph/drawio-desktop/releases - Windows: download installer from https://github.com/jgraph/drawio-desktop/releases - Linux: download `.deb`/`.rpm` from https://github.com/jgraph/drawio-desktop/releases — **do not use snap** (AppArmor sandbox denies secrets/keyring on servers, causes crash) ## Workflow Before starting the workflow, assess whether the user's request is specific enough. If key details are missing, ask 1-3 focused questions: - **Diagram type** — which preset? (ERD, UML, Sequence, Architecture, ML/DL, Flowchart, or general) - **Output format** — PNG (default), SVG, PDF, or JPG? - **Output location** — default is the user's working dir; honor any explicit path the user gives (e.g. "put it in `./artifacts/`"). Don't ask if they didn't mention one. - **Scope/fidelity** — how many components? Any specific technologies or labels? Skip clarification if the request already specifies these details or is clearly simple (e.g., "draw a flowchart of X"). **Step 0 — Resolve active preset.** Determine which (if any) user-defined style preset applies to this generation. - Scan the user's message for a phrase that clearly names a style preset: "use my `<name>` style", "with my `<name>` style", "in `<name>` mode", "in the style of `<name>`". A bare `with <name>` does **not** count — "draw a diagram with redis" names a component, not a style. If a clear match is found → active preset = `<name>`. - Else, check `~/.drawio-ski
Del mismo repositorio