--- name: drawio-academic-skills version: "0.1.0" description: "Academic-first Draw.io figure skill for papers, theses, IEEE-style diagrams, architecture figures, workflows, roadmaps, formulas, and publication-ready visualizations. Use when users ask to draw, redraw, replicate, edit, or export diagrams for academic papers or technical documents. Creates offline .drawio + .spec.yaml + .arch.json bundles, exports SVG locally, uses draw.io Desktop CLI for embedded SVG/PNG/PDF/JPG, supports style presets, self-check review loops, and diagrams.net URL fallback without requiring MCP." license: MIT homepage: https://github.com/bahayonghang/drawio-skills compatibility: "Node 20+ for the YAML/CLI workflow. draw.io Desktop is optional but required for PNG/PDF/JPG and embedded .drawio.svg exports. No MCP server is required." platforms: [macos, linux, windows] metadata: category: visual-design tags: - drawio - academic - paper-figure - ieee - architecture - workflow - math - svg allowed-tools: Read, Write, Bash, AskUserQuestion --- # Draw.io Academic Skill Create, edit, replicate, validate, and export publication-ready draw.io figures. This skill merges two workflows: 1. The upstream pure `drawio-skill` workflow: direct `.drawio` XML generation, Desktop export, self-check, style presets, diagrams.net URL fallback, and diagram-type presets. 2. This repository's `skills/drawio` workflow: YAML-first authoring, offline sidecars, academic quality gates, formula handling, and SVG conversion. ## Non-Negotiable Contract - Keep this fork academic-first and offline-first. - Never create, require, or route through `.mcp.json` or an MCP backend. - Treat the YAML spec plus `.drawio`, `.arch.json`, and `.svg` outputs as the normal editable bundle. - Use draw.io Desktop only as an optional export enhancer for PNG/PDF/JPG or embedded `.drawio.svg`. - When a requested export cannot be produced locally, still deliver the editable bundle and report the unavailable export clearly. ## Runtime Decision Default to the offline academic path. | Priority | Runtime | Use for | | --- | --- | --- | | 1 | YAML/CLI offline bundle | New academic figures, paper diagrams, repeatable edits | | 2 | draw.io Desktop CLI | PNG/PDF/JPG, embedded `.drawio.svg`, final raster export | | 3 | direct XML fallback | Tiny one-off diagrams, CLI unavailable, handoff-only XML | | 4 | diagrams.net URL fallback | User cannot install Desktop but can open browser URL | This skill intentionally ships without `.mcp.json`. Use Desktop CLI or the diagrams.net URL fallback for handoff and refinement. ## Preflight Checklist Before generating or editing, decide and state: 1. Input type: new prompt, `.spec.yaml`, `.drawio`, image/SVG reference, or style preset. 2. Route from the table below, then load only the referenced files. 3. Deliverables needed: default bundle, plus any requested PNG/PDF/JPG. 4. Whether draw.io Desktop is required for the requested export. 5. Fallback plan if Desktop or validation is unavailable. ## Task Routing Choose one route first, then load only the referenced files. | Route | Trigger | Load | | --- | --- | --- | | `academic-create` | paper, thesis, IEEE, manuscript, journal figure | `references/docs/academic-figure-playbook.md`, `references/docs/academic-export-checklist.md`, `references/workflows/create.md` | | `math-formula` | formula, equation, LaTeX, AsciiMath, MathJax, 公式 | `references/docs/math-typesetting.md`, `references/docs/design-system/formulas.md` | | `edit` | modify an existing `.drawio`, YAML bundle, or previous output | `references/workflows/edit.md`, `references/docs/migration-readiness.md` | | `replicate` | redraw screenshot, image, SVG, or reference diagram | `references/workflows/replicate.md`, `references/docs/design-system/color-guide.md` | | `stencil-heavy` | cloud, network, AWS, Azure, GCP, Cisco, Kubernetes | `references/docs/stencil-library-guide.md`, `references/official/xml-reference.md` | | `style-preset` | learn/use/list/delete/rename visual style presets | `references/docs/style-presets.md`, `references/docs/upstream-pure-drawio-skill.md` | ## Academic Defaults For academic-paper requests, set these before rendering: - `meta.profile: academic-paper` - `meta.figureType`: exactly one of `architecture`, `roadmap`, or `workflow` - `meta.theme`: `academic` by default, or `academic-color` when color is useful - `meta.title`: caption-ready figure title - `meta.description`: one sentence explaining the figure intent Default deliverables: - `.drawio` - `.spec.yaml` - `.arch.json` - `.svg` Add `.png` only when the user asks for PNG, Word, thesis/A4, raster-first, or screenshot matching, and draw.io Desktop export is available. ## Create Flow 1. Classify the figure as `architecture`, `roadmap`, or `workflow`. 2. Draft the YAML spec as the canonical source. 3. Use concise labels; shorten labels before shrinking fonts. 4. Validate before rendering: ```bash node /scripts/cli.js input.yaml output.drawio --validate --write-sidecars node /scripts/cli.js input.yaml output.svg --validate --write-sidecars ``` 5. Use `--strict` or `--strict-warnings` for publication-grade checks. 6. Self-check the exported SVG/PNG when vision is available. 7. Apply targeted edits to YAML or XML, re-render, and repeat until approved. ## Edit and Replicate Flow - If a `.spec.yaml` sidecar exists, edit the YAML spec first. - If only `.drawio` exists, import it before editing: ```bash node /scripts/cli.js existing.drawio --input-format drawio --export-spec --write-sidecars ``` - After import, inspect the generated `.spec.yaml` and `.arch.json`, apply edits to the YAML spec, then regenerate the requested `.drawio` or `.svg` with `--write-sidecars`. - Keep all regenerated files on the same basename so the bundle remains round-trippable. - For image/SVG replication, extract palette intent first and preserve the source palette unless the user asks for paper-safe recoloring. - For major structural changes, show an ASCII logic draft before rendering. - Preserve `.drawio`, `.spec.yaml`, and `.arch.json` together. ## Export Policy Use the local CLI for deterministic exports. ```bash # Offline SVG and sidecars node /scripts/cli.js input.yaml figure.svg --validate --write-sidecars # Editable .drawio bundle node /scripts/cli.js input.yaml figure.drawio --validate --write-sidecars # Desktop-enhanced exports node /scripts/cli.js input.yaml figure.drawio.svg --validate --write-sidecars --use-desktop node /scripts/cli.js input.yaml figure.png --validate --use-desktop node /scripts/cli.js input.yaml figure.pdf --validate --use-desktop ``` Desktop CLI supports PNG/SVG/PDF/JPG. PNG/SVG/PDF exports can embed the editable diagram XML. If Desktop is unavailable, generate a diagrams.net URL: ```bash node /scripts/runtime/diagrams-net-url.js figure.drawio ``` The diagram XML is encoded after `#R` in the URL fragment. The fragment is client-side and is not sent to diagrams.net servers. If Desktop is unavailable for PNG/PDF/JPG, do not pretend those files exist. Deliver `.drawio`, `.spec.yaml`, `.arch.json`, and `.svg`, then include the diagrams.net URL or the exact Desktop command the user can run later. ## Style Presets Use user presets from `~/.drawio-academic-skills/styles/` first, then bundled presets from `styles/built-in/`. Supported operations: - learn a style from `.drawio`, `.xml`, `.svg`, `.png`, `.jpg`, or `.jpeg` - preview a generated sample before saving - list presets - set one user preset as default - rename or delete user presets Never mutate bundled presets. Copy a bundled preset into `~/.drawio-academic-skills/styles/` before making it a default. ## Failure Recovery Use these fallbacks before stopping: | Failure | Recovery | | --- | --- | | YAML validation fails | Fix the YAML spec first, then rerun the same CLI command with `--validate`. | | `.drawio` import is incomplete | Preserve the original file, export the partial spec, and report unsupported shapes or styles explicitly. | | Desktop export fails or Desktop is missing | Regenerate the offline bundle and SVG, then provide a diagrams.net URL fallback. | | Formula rendering is wrong | Recheck delimiters against the math reference, then simplify the label before changing layout. | | SVG/PNG self-check finds overlap | Edit labels or routing in YAML/XML and re-render; do not only describe the issue. | ## Quality Gate Do not claim completion until: - `.drawio`, `.spec.yaml`, `.arch.json`, and `.svg` are aligned - academic profile has a valid `figureType` - labels are readable at paper/A4 scale - formulas use official delimiters: `$$...$$`, `\(...\)`, or AsciiMath backticks - connector routing is readable - colors are not the only carrier of meaning - requested PNG/PDF/JPG exports were attempted through draw.io Desktop or clearly reported as unavailable - no MCP config, MCP server, or live backend is required for the result ## Completion Report End with a concise report: - Deliverables written, with paths. - Commands run for validation/export. - Any unavailable exports and the fallback provided. - Remaining manual checks, if visual inspection or Desktop export could not run. ## Reference Files - `references/docs/upstream-pure-drawio-skill.md`: preserved upstream pure SKILL.md workflow - `references/docs/academic-figure-playbook.md`: academic figure typing and delivery rules - `references/docs/academic-export-checklist.md`: paper-ready checklist - `references/docs/math-typesetting.md`: formula syntax and export guidance - `references/official/xml-reference.md`: draw.io XML mirror - `references/official/style-reference.md`: draw.io style mirror - `references/examples/`: reusable YAML examples - `styles/built-in/`: upstream pure-skill style presets - `assets/themes/`: YAML/CLI design-system themes