
Drawio Academic Skills
- 621 installs
- 271 repo stars
- Updated July 28, 2026
- bahayonghang/drawio-skills
drawio-academic-skills is an agent skill that produces publication-ready academic diagrams and methodology figures in draw.io for developers and researchers preparing papers, theses, and conference submissions.
About
drawio-academic-skills is a bahayonghang/drawio-skills overlay (version 2.3.0) for publication-ready draw.io figures in papers, theses, dissertations, and IEEE or ACM submissions. It applies academic policy on top of the sibling ../drawio base skill, keeping authoring YAML-first and offline-first with Node 20+ and optional draw.io Desktop for PNG, PDF, or embedded SVG exports. Seven task routes cover academic-create, math-formula, edit, replicate, stencil-heavy network diagrams, style presets, and direct XML exceptions. Default deliverables are .drawio and .svg files with .spec.yaml sidecars, supporting three figure types—architecture, roadmap, and workflow—and academic or academic-color themes. Quality gates enforce node budgets, caption-ready legends, formula delimiters, and exported-artifact self-checks without requiring MCP. Developers reach for drawio-academic-skills when camera-ready figures must meet venue readability rules.
- Academic figure layouts with consistent labeling
- Experiment and methodology diagram templates
- System architecture sketches for papers
- Export guidance for print and slide formats
- Citation-friendly annotation conventions
Drawio Academic Skills by the numbers
- 621 all-time installs (skills.sh)
- Ranked #354 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/bahayonghang/drawio-skills --skill drawio-academic-skillsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 621 |
|---|---|
| repo stars | ★ 271 |
| Last updated | July 28, 2026 |
| Repository | bahayonghang/drawio-skills ↗ |
How do you make publication-ready draw.io figures?
Produce publication-ready academic diagrams, system figures, and methodology charts in draw.io for papers, theses, lab reports, and conference submissions.
Who is it for?
Researchers and engineers preparing IEEE, ACM, thesis, or manuscript figures who need offline YAML-first draw.io workflows with academic quality gates.
Skip if: Casual whiteboard sketches or general UI mockups that do not need venue-specific academic caption, legend, and readability gates.
When should I use this skill?
Creating paper figures, replicating reference diagrams, exporting thesis architecture charts, or validating academic draw.io YAML specs.
What you get
.drawio and .svg deliverables, .spec.yaml sidecars, academic-themed diagrams, and optional PNG or PDF Desktop exports.
- .drawio figure
- .svg export
- .spec.yaml sidecar
By the numbers
- Skill version 2.3.0 with 7 documented task routing paths
- Supports 3 academic figure types: architecture, roadmap, and workflow
- Requires Node 20+ and sibling ../drawio base skill for CLI validation
Files
Draw.io Academic Overlay
Create, edit, replicate, validate, and export publication-ready draw.io figures by applying academic policy on top of the sibling Draw.io Base Skill.
This overlay is intentionally thin. It owns academic policy, academic docs, and paper examples; it does not copy base scripts, themes, schemas, official references, or workflow docs. It calls the sibling base package at ../drawio for all shared execution.
Boundary
- Base (`../drawio`): shared execution primitives — CLI, schema, renderer, themes (including
academic/academic-color), general references, general examples, style presets, Desktop export. - This overlay: academic policy/gates, the publication overlay doc, the academic figure playbook + checklist, and paper/pipeline examples.
Themes are a base rendering primitive and stay in the base; academic policy, docs, and examples stay here.
Required Sibling Base
Resolve shared resources relative to this overlay directory:
| Capability | Use this sibling base path |
|---|---|
| CLI | ../drawio/scripts/cli.js |
| diagrams.net URL fallback | ../drawio/scripts/runtime/diagrams-net-url.js |
| YAML schema | ../drawio/assets/schemas/spec.schema.json |
| Themes | ../drawio/assets/themes/ |
| Shared examples | ../drawio/references/examples/ |
| Shared references | ../drawio/references/docs/ and ../drawio/references/official/ |
| Workflow guides | ../drawio/references/workflows/ |
| Built-in style presets | ../drawio/styles/built-in/ |
Overlay-local academic assets: references/docs/publication-overlay.md, references/docs/academic-figure-playbook.md, references/docs/academic-export-checklist.md, and references/examples/.
If ../drawio/scripts/cli.js is missing, stop and report that the sibling base skill must be installed next to this overlay. Do not silently recreate or vendor-copy base resources into the overlay.
Non-Negotiable Contract
- Keep academic authoring YAML-first and offline-first.
- Never create, require, or route through
.mcp.json, MCP, or a live backend. - Treat
.drawioand.svgas the default academic final deliverables. - Keep
.spec.yaml,.arch.json, raw YAML, and diagnostics in a project-local work directory such as.drawio-tmp/<name>/, unless the user explicitly asks for a reproducible sidecar bundle beside the final output. - Use draw.io Desktop only as an optional export enhancer for PNG/PDF/JPG or embedded
.drawio.svg. - If a requested Desktop export cannot be produced locally, still deliver the editable
.drawioand SVG, then report the unavailable export clearly. - Perform paper-readability and visual self-checks on exported SVG first, or on Desktop-exported PNG/PDF/JPG/embedded SVG when available. Do not substitute browser or Playwright screenshots when an exported artifact exists.
- Treat external image-generation previews as optional concept previews only. They never replace YAML,
.drawio, SVG, sidecars, or exported-artifact verification. - Keep academic-specific policy in this overlay; keep shared execution in
../drawio. - Do not create or modify scratch JS scripts under a user's project-local
.agents/skills/drawio; port durable fixes to the sibling base skill source instead.
Academic Preflight
Before generating or editing, determine and state: venue/audience; figure type (architecture, roadmap, or workflow); color policy; caption/legend/title needs; formula and text-fidelity needs; export expectations.
Also estimate the node budget. The single authoritative budget guidance (targets, warning thresholds, node-efficient patterns, split strategies) lives in references/docs/academic-figure-playbook.md § Node Budget Management. If the estimate exceeds the playbook's recommended target, confirm a split/simplify strategy with the user before generating, and use compact patterns from references/templates/.
Full decision detail: references/docs/publication-overlay.md § Required Academic Decisions.
Source Understanding
Extract only what the figure needs from papers, reference images, or text-only prompts, and keep uncertainties explicit. See references/docs/publication-overlay.md § Source Understanding (source-type table) and references/docs/academic-figure-playbook.md § Scientific Figure Patterns.
Diagram Plan Gate
For complex paper-derived figures or academic image-replication work, present a concise diagram plan and wait for confirmation before rendering. Simple, clear academic diagrams may skip the gate and proceed to YAML/SVG. Plan template and field list: references/docs/publication-overlay.md § Diagram Plan Gate.
Optional Image Preview
Use an external image-generation tool only as an optional concept preview, only after the diagram plan is confirmed, and only with privacy approval before sending unpublished or sensitive content. Treat generated text as approximate and correct final labels/formulas/geometry in YAML. Full rules: references/docs/publication-overlay.md § Optional Image Preview.
Task Routing
Choose one route first, then load only the referenced files.
| Route | Trigger | Load |
|---|---|---|
academic-create | paper, thesis, IEEE, manuscript, journal, publication-ready figure | this overlay references/docs/publication-overlay.md; this overlay references/docs/academic-figure-playbook.md; this overlay references/docs/academic-export-checklist.md; base ../drawio/references/workflows/create.md |
math-formula | formula, equation, LaTeX, AsciiMath, MathJax, 公式 | base ../drawio/references/docs/math-typesetting.md; base ../drawio/references/docs/design-system/formulas.md |
edit | modify an existing academic bundle or imported .drawio | base ../drawio/references/workflows/edit.md; base ../drawio/references/docs/migration-readiness.md |
replicate | redraw screenshot, image, SVG, or reference paper figure | this overlay references/docs/publication-overlay.md; base ../drawio/references/workflows/replicate.md; base ../drawio/references/docs/design-system/specification.md; base ../drawio/references/docs/design-system/color-guide.md |
stencil-heavy | academic cloud, network, AWS, Azure, GCP, Cisco, Kubernetes figure | base ../drawio/references/docs/stencil-library-guide.md; base ../drawio/references/docs/ieee-network-diagrams.md; base ../drawio/references/official/xml-reference.md |
style-preset | learn/use/list/delete/rename visual style presets | base ../drawio/references/docs/style-extraction.md; base ../drawio/references/docs/style-presets.md; base ../drawio/styles/built-in/ |
direct-xml-exception | tiny handoff-only XML or exact mxGraph control | base ../drawio/references/upstream/pure-drawio-skill.md; base ../drawio/references/official/xml-reference.md |
Academic Defaults
For academic-paper requests, set these before rendering:
meta:
profile: academic-paper
figureType: architecture # architecture | roadmap | workflow
theme: academic # or academic-color when color is acceptable
title: Caption-ready title
description: One sentence explaining the figure intent
legend: Required when symbols, colors, line styles, or icons need explanationThis section defines the default academic final deliverables.
Default deliverables:
<name>.drawio<name>.svg
Intermediate work directory:
<name>.spec.yaml<name>.arch.json- raw or normalized YAML and diagnostics
Add <name>.png / .pdf / .jpg only when requested or needed for Word/A4/thesis/raster workflows, and only when draw.io Desktop export is available.
Create Flow
1. Classify the figure as architecture, roadmap, or workflow. 2. For complex paper-derived requests, extract the research evidence chain and confirm the diagram plan before rendering. 3. When the optional image-preview trigger applies, generate a concept preview after confirmation, then revise the plan if needed. 4. Draft or normalize the YAML spec as the canonical source; use concise labels (shorten labels before shrinking fonts). 5. Validate through the sibling base CLI, then render the editable .drawio and standalone SVG with sidecars in the work directory. 6. Run an exported-artifact self-check before reporting completion.
node ../drawio/scripts/cli.js input.yaml figure.drawio --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warnings
node ../drawio/scripts/cli.js input.yaml figure.svg --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warningsUse paths relative to the overlay directory, or absolute paths when running from another working directory. Detailed figure-type patterns: references/docs/academic-figure-playbook.md.
Edit and Replicate Flow
- If a
.spec.yamlsidecar exists, edit the YAML spec first. If only.drawioexists, import it through the base CLI (--input-format drawio --export-spec). - For image/SVG replication, preserve text boxes, captions, legends, formulas, edge labels, baseline/offset, font family/size/italic state, alignment, and spacing when visible. Use explicit
boundsfor standalone text/formula blocks andlabelOffsetfor connector labels off the line. - Keep all regenerated files on the same basename so final artifacts and work-dir sidecars stay round-trippable.
Export Policy
Use the sibling base CLI for deterministic exports.
# Editable .drawio + offline SVG with work-dir sidecars
node ../drawio/scripts/cli.js input.yaml figure.drawio --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warnings
node ../drawio/scripts/cli.js input.yaml figure.svg --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warnings
# Desktop-enhanced exports
node ../drawio/scripts/cli.js input.yaml figure.drawio.svg --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --use-desktop
node ../drawio/scripts/cli.js input.yaml figure.png --validate --use-desktop
node ../drawio/scripts/cli.js input.yaml figure.pdf --validate --use-desktopIf Desktop is unavailable, generate a diagrams.net URL from the .drawio artifact and report the missing export honestly:
node ../drawio/scripts/runtime/diagrams-net-url.js figure.drawioDo not claim PNG/PDF/JPG files exist when Desktop export was unavailable.
Style Presets
Use overlay-specific user presets first (~/.drawio-academic-skills/styles/), then sibling base bundled presets (../drawio/styles/built-in/). Never mutate bundled base presets; copy a bundled preset into the user preset directory before editing or making it a default.
Quality Gate
Do not claim completion until:
- final
.drawioand.svgare aligned with work-dir.spec.yamland.arch.json meta.profileisacademic-paperandmeta.figureTypeisarchitecture,roadmap, orworkflow- node count satisfies the playbook budget (
references/docs/academic-figure-playbook.md § Node Budget Management); split or simplify when it is exceeded - labels are readable at paper/A4 scale; formulas use official delimiters (
$$...$$,\(...\), or AsciiMath backticks) - captions, legends, callouts, formulas, and edge labels are not clipped or placed on connector lines
- legends use compact form (single multi-line text node, not many separate nodes)
- colors are not the only carrier of meaning
- visual self-check used the exported SVG or Desktop-exported artifact before any live/browser preview, checking overlap, clipped text, connector-label clearance, arrows crossing text/nodes, missing modules, and mismatch from the confirmed plan/source
- if a visible defect was found, the YAML spec was corrected and rerendered once before final reporting
- requested Desktop exports were attempted 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
- intermediate work directory, when sidecars or diagnostics were generated
- sibling base CLI commands run for validation/export
- unavailable Desktop exports and fallback provided
- remaining visual or venue-specific manual checks, if any
# macOS
.DS_Store
# Tooling artifacts
.playwright-mcp/
logs/
# Auto-update timestamp (written by SKILL.md step 0)
.last_update
# Superpowers skill files (local-only)
docs/superpowers
interface:
display_name: 'Draw.io Academic Figures'
short_description: 'Create publication-ready draw.io figures with YAML sidecars, academic checks, Desktop export, and base-backed style presets'
brand_color: '#2563EB'
policy:
allow_implicit_invocation: true
capabilities:
- Create academic-paper draw.io figures from natural language or YAML specs
- Generate .drawio, .spec.yaml, .arch.json, and SVG as the default offline bundle
- Export PNG, SVG, PDF, and JPG through draw.io Desktop when available
- Generate diagrams.net browser URLs when Desktop export is unavailable
- Apply user style presets and sibling base bundled presets
- Self-check exported images and support targeted refinement loops
- Work without MCP through the sibling base CLI exports and diagrams.net URL fallback
prerequisites:
- Node 20+
- Sibling base skill installed at ../drawio
- draw.io Desktop app for PNG/PDF/JPG and embedded SVG exports
interface:
display_name: "Draw.io Academic Figures"
short_description: "Create publication-ready draw.io figures with YAML sidecars, academic checks, Desktop export, and base-backed style presets"
brand_color: "#2563EB"
policy:
allow_implicit_invocation: true
capabilities:
- Create academic-paper draw.io figures from natural language or YAML specs
- Generate .drawio, .spec.yaml, .arch.json, and SVG as the default offline bundle
- Export PNG, SVG, PDF, and JPG through draw.io Desktop when available
- Generate diagrams.net browser URLs when Desktop export is unavailable
- Apply user style presets and sibling base bundled presets
- Self-check exported images and support targeted refinement loops
- Work without MCP through the sibling base CLI exports and diagrams.net URL fallback
prerequisites:
- Node 20+
- draw.io Desktop app for PNG/PDF/JPG and embedded SVG exports
[
{
"id": "academic-ieee-campus-network",
"profile": "academic-paper",
"prompt": "Create an IEEE-style campus network paper figure with core, distribution, and access layers in grayscale. Return final .drawio and .svg, with sidecars in a work directory."
},
{
"id": "academic-research-workflow-paper",
"profile": "academic-paper",
"prompt": "Create a research workflow figure for a manuscript showing data collection, preprocessing, modeling, validation, and reporting."
},
{
"id": "academic-system-architecture-paper",
"profile": "academic-paper",
"prompt": "Create a system architecture paper figure with client, API, worker, and storage layers. Make it readable in a two-column paper."
},
{
"id": "academic-ablation-pipeline",
"profile": "academic-paper",
"prompt": "Create an ablation-study figure comparing a baseline and two variants before a shared evaluation block for a conference paper."
},
{
"id": "academic-paper-evidence-chain-preview",
"profile": "academic-paper",
"prompt": "I have a draft optimization paper about traffic-signal control. Build a publication figure from the paper logic, not just a list of sections: problem gap, sensor data, assumptions, multi-agent controller, simulation scenarios, metrics, results, and contribution. Use an image-generation concept preview if appropriate, but don't send raw unpublished text externally without asking."
},
{
"id": "academic-thesis-word-a4-bundle",
"profile": "academic-paper",
"prompt": "Create an A4-safe thesis figure for Word export. Deliver the editable bundle plus SVG, and include PNG only if draw.io Desktop is available."
},
{
"id": "academic-formula-publication-figure",
"profile": "academic-paper",
"prompt": "Create a publication-ready training pipeline figure with a visible loss formula $$L = -\\sum y_i \\log(\\hat{y}_i)$$ and an inline metric note \\(F_1\\)."
},
{
"id": "academic-replication-text-formula-edge-labels",
"profile": "academic-paper",
"prompt": "Replicate the uploaded academic figure into an editable bundle. Preserve caption, legend, formula block, standalone text boxes, and edge labels with their relative positions."
},
{
"id": "academic-image-improvement-preview-gate",
"profile": "academic-paper",
"prompt": "Redraw the uploaded framework screenshot as a cleaner journal figure. Improve the hierarchy and academic tone, but preserve the visible caption, legend, callouts, and edge labels. Use a visual concept preview before final draw.io if that helps, then deliver editable .drawio and .svg with sidecars in a work directory."
},
{
"id": "academic-desktop-png-pdf-unavailable-fallback",
"profile": "academic-paper",
"prompt": "Export the final paper figure as PNG and PDF for submission, but draw.io Desktop might not be installed."
}
]
timestamp commit skill old_score new_score status dimension note eval_mode
2026-04-27T11:15:25+08:00 baseline-agent drawio-academic-skills - 82.8 baseline - Independent verifier baseline; weakest dimensions were checkpoint design, boundary coverage, and Desktop fallback clarity dry_run
2026-04-27T11:15:25+08:00 working-tree drawio-academic-skills 82.8 89.2 keep boundary-coverage Added non-negotiable offline/MCP-free contract, preflight, edit round-trip, Desktop fallback, failure recovery, completion report, and regression assertions dry_run
{
"skill_name": "drawio-academic-skills",
"version": "0.1.0",
"evals": [
{
"id": "academic-ieee-campus-network",
"prompt": "Create an IEEE-style campus network paper figure with core, distribution, and access layers in grayscale. Return the final .drawio and .svg, with sidecars in a work directory.",
"expected_output": "A grayscale-safe IEEE campus network figure generated through the sibling base CLI with clean final outputs.",
"files": [],
"assertions": [
"Uses drawio-academic-skills overlay policy",
"Calls or references sibling ../drawio for CLI execution",
"Sets meta.profile to academic-paper",
"Sets meta.figureType to architecture",
"Includes caption or legend guidance for IEEE-style symbols"
]
},
{
"id": "academic-research-workflow-paper",
"prompt": "Create a research workflow figure for a manuscript showing data collection, preprocessing, modeling, validation, and reporting.",
"expected_output": "A publication-ready workflow figure with default final .drawio and .svg outputs.",
"files": [],
"assertions": [
"Sets meta.figureType to workflow",
"Uses academic or academic-color theme based on color policy",
"Default final deliverables are .drawio and .svg, with .spec.yaml and .arch.json in a work directory",
"Does not require MCP or live backend"
]
},
{
"id": "academic-system-architecture-paper",
"prompt": "Create a system architecture paper figure with client, API, worker, and storage layers. Make it readable in a two-column paper.",
"expected_output": "A paper-facing architecture diagram with compact labels and publication checks.",
"files": ["skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml"],
"assertions": [
"Sets meta.figureType to architecture",
"Uses concise labels before shrinking fonts",
"Preserves caption-ready title and one-sentence description",
"Runs sibling base CLI validation with strict warnings or equivalent"
]
},
{
"id": "academic-yolo-model-architecture",
"prompt": "Create a paper-ready YOLO-style object detection architecture figure. Show input image, backbone, neck/fusion, detection heads, and loss/output. Use editable draw.io primitives, compact labels, and deliver .drawio plus .svg with sidecars in a work directory.",
"expected_output": "An academic model-architecture figure using modules and deep-learning semantic types rather than generic boxes.",
"files": ["skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml"],
"assertions": [
"Uses drawio-academic-skills overlay policy for the publication-facing request",
"Sets meta.profile to academic-paper and meta.figureType to architecture",
"Uses modules for stages such as input, backbone, fusion or neck, head, and loss/output",
"Uses deep-learning semantic node types such as input, conv, pool, attention, tensor3d, loss, and output",
"Keeps labels compact and uses a legend or caption instead of long prose inside layer blocks",
"Delivers final .drawio and .svg, with .spec.yaml and .arch.json in .drawio-tmp/<name>/"
]
},
{
"id": "academic-max-pooling-operation-figure",
"prompt": "Create a publication-ready max-pooling operation figure using native draw.io cells. Show a 2 x 2 input window, the max operation, the output value, a short formula, and arrow labels that do not overlap connector lines.",
"expected_output": "A compact academic operation figure built from native grid cells, formula/text nodes, and offset connector labels.",
"files": ["skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml"],
"assertions": [
"Sets meta.profile to academic-paper and maps the operation to an existing meta.figureType value",
"Builds the grid from native editable draw.io cells instead of embedding a raster image",
"Uses explicit bounds for grid cells, formula, and callout or label placement",
"Uses supported math delimiters for the formula",
"Uses labelOffset or equivalent placement so edge labels sit off connector lines",
"Verifies exported SVG or Desktop-exported artifacts before any browser screenshot"
]
},
{
"id": "academic-ablation-pipeline",
"prompt": "Create an ablation-study figure comparing a baseline and two variants before a shared evaluation block for a conference paper.",
"expected_output": "A workflow-style ablation pipeline suitable for publication.",
"files": [],
"assertions": [
"Sets meta.figureType to workflow",
"Shows baseline and at least two variant branches",
"Branches converge at shared evaluation",
"Includes legend or caption guidance when line styles or colors encode meaning"
]
},
{
"id": "academic-paper-evidence-chain-preview",
"prompt": "I have a draft optimization paper about traffic-signal control. Build a publication figure from the paper logic, not just a list of sections: problem gap, sensor data, assumptions, multi-agent controller, simulation scenarios, metrics, results, and contribution. Use an image-generation concept preview if appropriate, but don't send raw unpublished text externally without asking.",
"expected_output": "A paper-derived academic figure workflow that extracts the research evidence chain, confirms a diagram plan, optionally uses privacy-gated image preview, then renders editable draw.io artifacts.",
"files": [],
"assertions": [
"Identifies the source as a paper-derived figure and extracts a research evidence chain",
"Maps the figure to an existing meta.figureType value rather than inventing a new schema field",
"Presents a diagram plan for confirmation before rendering",
"Uses optional image-generation preview only after plan confirmation and privacy approval",
"Keeps YAML as the canonical source and final .drawio/.svg as the authoritative artifacts"
]
},
{
"id": "academic-thesis-word-a4-bundle",
"prompt": "Create an A4-safe thesis figure for Word export. Deliver the editable bundle plus SVG, and include PNG only if draw.io Desktop is available.",
"expected_output": "An academic bundle with Word/A4 export policy and honest Desktop fallback.",
"files": [],
"assertions": [
"Performs venue/audience preflight for thesis or Word",
"Default final deliverables include .drawio and .svg, with sidecars in a work directory",
"Treats PNG as optional Desktop-enhanced export",
"Reports missing PNG clearly if Desktop is unavailable"
]
},
{
"id": "academic-formula-publication-figure",
"prompt": "Create a publication-ready training pipeline figure with a visible loss formula $$L = -\\sum y_i \\log(\\hat{y}_i)$$ and an inline metric note \\(F_1\\).",
"expected_output": "A formula-bearing academic workflow figure with formula and text fidelity checks.",
"files": [],
"assertions": [
"Loads or follows math-typesetting guidance from sibling base",
"Uses only official math delimiters",
"Keeps formulas readable and unclipped",
"Sets meta.profile to academic-paper and meta.figureType to workflow"
]
},
{
"id": "academic-replication-text-formula-edge-labels",
"prompt": "Replicate the uploaded academic figure into an editable bundle. Preserve caption, legend, formula block, standalone text boxes, and edge labels with their relative positions.",
"expected_output": "An academic replication bundle with explicit text placement and label offsets.",
"files": ["skills/drawio/evals/fixtures/replicate-academic-highlight.svg"],
"assertions": [
"Sets meta.source to replicated",
"Sets meta.profile to academic-paper",
"Uses explicit bounds for standalone text, captions, formulas, or callouts when placement matters",
"Uses labelOffset for connector labels that would otherwise sit on lines",
"Records a visual/text-position self-check before completion",
"Uses exported SVG or Desktop-exported artifacts for visual verification before any browser screenshot"
]
},
{
"id": "academic-reference-redraw-native-scientific",
"prompt": "Redraw the uploaded research framework screenshot as an editable scientific draw.io figure. Preserve section labels, caption, legend, formulas, callouts, and connector labels, but rebuild the main diagram as native cells rather than pasting the screenshot as the page.",
"expected_output": "A scientific reference redraw workflow with source inventory, native editable cells, explicit text placement, and exported-artifact verification.",
"files": ["skills/drawio/evals/fixtures/replicate-academic-highlight.svg"],
"assertions": [
"Sets meta.source to replicated and meta.profile to academic-paper",
"Creates or presents a source inventory for canvas, regions, shapes, text, formulas, connectors, palette, and uncertainties",
"Uses native draw.io shapes, text/formula nodes, modules, waypoints, and labelOffset for the main figure",
"Does not embed the uploaded reference image as the final full-page draw.io content",
"Preserves captions, legends, formulas, callouts, and connector labels as first-class elements",
"Uses exported SVG or Desktop-exported artifacts for visual verification before any browser screenshot"
]
},
{
"id": "academic-image-improvement-preview-gate",
"prompt": "Redraw the uploaded framework screenshot as a cleaner journal figure. Improve the hierarchy and academic tone, but preserve the visible caption, legend, callouts, and edge labels. Use a visual concept preview before final draw.io if that helps, then deliver editable .drawio and .svg with sidecars in a work directory.",
"expected_output": "An academic image-improvement workflow that confirms extracted structure, uses optional image preview for layout approval, then verifies exported draw.io artifacts.",
"files": ["skills/drawio/evals/fixtures/replicate-academic-highlight.svg"],
"assertions": [
"Confirms ambiguous source text or extracted structure before final rendering",
"Uses optional image-generation preview for academic improvement or layout exploration when available",
"Falls back to local YAML/SVG preview when image generation is unavailable or declined",
"Uses explicit bounds or labelOffset for captions, callouts, formulas, or connector labels when placement matters",
"Performs one exported-artifact QA pass and rerenders once if visible defects are found"
]
},
{
"id": "academic-desktop-png-pdf-unavailable-fallback",
"prompt": "Export the final paper figure as PNG and PDF for submission, but draw.io Desktop might not be installed.",
"expected_output": "A publication workflow that tries Desktop exports when needed and falls back honestly.",
"files": [],
"assertions": [
"Attempts PNG/PDF only through sibling base Desktop-enhanced export",
"Does not require MCP or a live backend",
"Does not claim PNG/PDF files exist when Desktop is unavailable",
"Still delivers final .drawio and .svg, with sidecars in a work directory",
"Provides a diagrams.net URL or exact Desktop command fallback",
"Does not substitute Playwright screenshots for unavailable Desktop exports"
]
}
]
}
[
{
"id": "overlay-sibling-base-required",
"prompt": "Use drawio-academic-skills to create a journal figure when ../drawio is installed beside it.",
"expected": "Routes through overlay policy and executes shared CLI from ../drawio/scripts/cli.js."
},
{
"id": "overlay-no-mcp",
"prompt": "Create a publication-ready figure without configuring MCP.",
"expected": "Does not create .mcp.json or require any live backend."
},
{
"id": "overlay-desktop-fallback",
"prompt": "Export PDF/PNG if possible, but Desktop may be missing.",
"expected": "Delivers final .drawio/.svg, keeps .spec.yaml/.arch.json in a work directory, and reports unavailable Desktop exports honestly."
}
]
Draw.io Academic Overlay
面向出版级 draw.io 图表的 Academic Overlay:论文、学位论文、IEEE 图、manuscript、journal figure、公式图、科研流程图、roadmap,以及 A4/Word/LaTeX 交付。
这个目录刻意保持轻量。它依赖 sibling Draw.io Base Skill:../drawio,不再复制 base runtime 文件。
版本说明:本 overlay 被有意重置为0.1.0,是「瘦身重生」后的薄层,不是旧学术版的降级——共享的作图能力已全部归入 sibling Draw.io Base Skill(仓库版本2.2.0),本 overlay 只保留出版策略。
必需的 sibling base
请把两个目录并排安装或复制:
skills/
├── drawio/
└── drawio-academic-skills/Overlay 使用这些 base 路径:
../drawio/scripts/cli.js../drawio/scripts/runtime/diagrams-net-url.js../drawio/references/docs/../drawio/references/workflows/../drawio/references/examples/(共享通用示例)../drawio/assets/themes/../drawio/styles/built-in/
学术策略文档与 paper 示例为 overlay 本地资产:
references/docs/academic-figure-playbook.mdreferences/docs/academic-export-checklist.mdreferences/examples/(paper/pipeline 示例)
如果 ../drawio 缺失,请先把 base skill 安装到 overlay 旁边。不要把 base 文件重新复制进 overlay。
默认链路
学术需求 -> preflight -> YAML spec -> sibling base CLI 校验 -> 最终 .drawio + .svg,sidecars 保存在 .drawio-tmp/<name>/PNG、PDF、JPG 和 embedded .drawio.svg 在 draw.io Desktop 可用时,通过 sibling base CLI 导出。
Academic preflight
渲染前先确定:
- venue / audience:paper、thesis、IEEE、journal、manuscript、Word/A4、LaTeX、slides 或 draft
- figure type:
architecture、roadmap或workflow - 黑白 / 灰度安全 / 彩色策略
- caption、legend、title 需求
- 公式和文字位置保真要求
- 请求的导出格式以及 Desktop 是否可用
快速导出
从 overlay 目录内运行:
node ../drawio/scripts/cli.js references/examples/system-architecture-paper.yaml figure.svg --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warnings
node ../drawio/scripts/cli.js references/examples/system-architecture-paper.yaml figure.png --validate --use-desktop从仓库根目录运行:
node skills/drawio/scripts/cli.js skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml figure.svg --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warnings如果没有 draw.io Desktop,可以从 .drawio 产物生成 diagrams.net URL:
node ../drawio/scripts/runtime/diagrams-net-url.js figure.drawioMCP 定位
这个 overlay 不包含 .mcp.json。Academic create、edit、replicate、export 都保持本地、可重复。Live backend refinement 只属于 base skill,不是 academic 默认路径。
样式预设
用户预设目录:
~/.drawio-academic-skills/styles/内置预设在 sibling base:
../drawio/styles/built-in/不要修改 base 内置 presets。需要默认或编辑时,先复制到用户预设目录。
Overlay 自有文件
SKILL.md:学术策略与 sibling-base contract。references/docs/publication-overlay.md:overlay-only 出版说明。evals/:academic evaluation set 和 prompt fixtures。
共享 CLI、schemas、themes、examples、workflows、official references、style-extraction 指南和 vendored direct-XML 参考都在 ../drawio。
Draw.io Academic Overlay
Academic overlay for publication-ready draw.io figures: papers, theses, IEEE diagrams, manuscripts, journal figures, formula-heavy visuals, research workflows, roadmaps, and A4/Word/LaTeX deliverables.
This folder is intentionally thin. It depends on the sibling Draw.io Base Skill at ../drawio instead of copying base runtime files.
Versioning note: this overlay is intentionally re-versioned to0.1.0as a reborn thin overlay. It is not a regression of the previously bundled academic skill — all shared diagram-production capability now lives in the sibling Draw.io Base Skill (repo version2.2.0), and this overlay carries only publication policy.
Required sibling base
Install or copy both folders side by side:
skills/
├── drawio/
└── drawio-academic-skills/The overlay uses these base paths:
../drawio/scripts/cli.js../drawio/scripts/runtime/diagrams-net-url.js../drawio/references/docs/../drawio/references/workflows/../drawio/references/examples/(shared general examples)../drawio/assets/themes/../drawio/styles/built-in/
Academic policy docs and paper examples are overlay-local:
references/docs/academic-figure-playbook.mdreferences/docs/academic-export-checklist.mdreferences/examples/(paper/pipeline examples)
If ../drawio is missing, install the base skill next to this overlay. Do not vendor-copy base files into the overlay.
Default workflow
academic request -> preflight -> YAML spec -> sibling base CLI validation -> final .drawio + .svg, sidecars in .drawio-tmp/<name>/PNG, PDF, JPG, and embedded .drawio.svg use draw.io Desktop through the sibling base CLI when Desktop is available.
Academic preflight
Before rendering, decide:
- venue or audience: paper, thesis, IEEE, journal, manuscript, Word/A4, LaTeX, slides, or draft
- figure type:
architecture,roadmap, orworkflow - monochrome vs color policy
- caption, legend, and title needs
- formula and text-position fidelity
- requested export formats and Desktop availability
Quick export
From inside this overlay directory:
node ../drawio/scripts/cli.js references/examples/system-architecture-paper.yaml figure.svg --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warnings
node ../drawio/scripts/cli.js references/examples/system-architecture-paper.yaml figure.png --validate --use-desktopFrom the repository root:
node skills/drawio/scripts/cli.js skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml figure.svg --validate --write-sidecars --sidecar-dir .drawio-tmp/figure --strict-warningsIf draw.io Desktop is unavailable, generate a diagrams.net browser URL from the .drawio artifact:
node ../drawio/scripts/runtime/diagrams-net-url.js figure.drawioMCP position
This overlay intentionally does not include .mcp.json. Academic create, edit, replicate, and export tasks stay local and repeatable. Live backend refinement belongs to the base skill only and is not part of the academic default path.
Style presets
User presets live under:
~/.drawio-academic-skills/styles/Bundled presets live in the sibling base:
../drawio/styles/built-in/Never mutate bundled base presets. Copy a bundled preset into the user preset directory before making it default or editing it.
Overlay-owned files
SKILL.md: academic policy and sibling-base contract.references/docs/publication-overlay.md: overlay-only publication notes.evals/: academic evaluation set and prompt fixtures.
Shared CLI, schemas, themes, examples, workflows, official references, style-extraction guidance, and the vendored direct-XML reference all live in ../drawio.
Academic Export Checklist
Use this checklist for meta.profile: academic-paper.
Required
meta.figureTypeis present and isarchitecture,roadmap, orworkflow.meta.titleis present and suitable for figure captioning.- Theme is
academicoracademic-color. - Output bundle includes
.drawio,.spec.yaml,.arch.json, and.svg. - All formulas use the math typesetting guidance.
- Colors are not the only carrier of meaning.
- Visual checks use the exported SVG or Desktop-exported final artifact before any browser/live screenshot.
Recommended
meta.descriptionexplains the figure intent or context.meta.legendis present when icons or mixed connector styles are used.- Label font sizes stay in the 8-10pt range when overridden manually.
- Extra whitespace is cropped before final export.
- Line styles, node sizes, and stroke widths are consistent across the figure.
- A matching
.pngis included for thesis, A4, Word, raster-first, screenshot rebuild, or explicit PNG requests when Desktop export is available.
Review Questions
- Is the figure still readable when inserted into an A4 thesis or paper page at normal zoom?
- Would this still be readable when printed in grayscale?
- Does the figure still make sense if the reader cannot distinguish red vs green?
- Are caption, legend, and abbreviations clear without the surrounding paragraph?
- Is the final export vector-based and suitable for journal submission?
Academic Figure Playbook
Use this playbook whenever meta.profile = academic-paper or the user asks for a paper, thesis, journal, IEEE, manuscript, or research figure.
Step 1: Classify the Figure
Before drafting nodes, answer one question:
What is this figure mainly explaining?
- Structure ->
meta.figureType: architecture - Progression ->
meta.figureType: roadmap - Execution ->
meta.figureType: workflow
If the answer is mixed, pick the dominant purpose. If the diagram tries to explain structure, progression, and branching control logic at the same time, split it into two figures.
Figure Types
Architecture
Use for:
- system composition
- module boundaries
- data movement between tiers
- runtime responsibilities
- model architectures such as CNN, YOLO, Transformer, encoder-decoder, feature fusion, or multi-head prediction
Quality cues:
- group subsystems clearly
- emphasize layers or boundaries
- avoid turning the diagram into a chronological pipeline
- use modules for stages and semantic node types for layers, tensors, operators, and outputs
- keep layer labels compact; move tensor sizes, assumptions, or metrics into callouts or legends when needed
Roadmap
Use for:
- study phases
- milestone progression
- delivery stages
- stage outputs
Quality cues:
- make progression directional
- show only major stages
- surface the output or decision at the end of each stage
Workflow
Use for:
- ordered steps
- decisions and branching
- loops and fallback paths
- procedural execution
- method pipelines, ablation studies, experiment procedures, and validation loops
Quality cues:
- keep the step order obvious
- label ambiguous decisions
- keep back-edges and loops sparse and readable
Scientific Figure Patterns
Model Architecture
Use this pattern for CNN, YOLO, Transformer, encoder-decoder, and feature-fusion figures.
- Set
meta.figureType: architecture. - Use 3-5 modules for major stages such as Input, Backbone, Fusion/Neck, Prediction Head, Loss, or Output.
- Prefer semantic types:
input,tensor3d,conv,pool,attention,feature,operator,loss, andoutput. - Keep tensors and operators visually small. Use a legend for repeated layer notation instead of repeating long descriptions in every box.
- Show only the architectural relationships needed for the paper argument; detailed implementation hyperparameters belong in the caption or body text.
Operation Or Mechanism
Use this pattern for max pooling, attention scoring, gating, residual add, normalization, or algorithm-step illustrations.
- Pick
workflowwhen the figure explains an ordered operation, andarchitecturewhen it explains a static mechanism inside a model. - Use explicit
boundsfor small grids, matrices, formula boxes, callouts, and operator nodes. - Use native rectangles/text cells for grids or matrices. Do not use a screenshot of the operation as the final draw.io page.
- Keep formulas short and use supported math delimiters from
math-typesetting.md. - Offset arrows and edge labels with
labelOffsetso labels do not sit on connector lines.
Experiment Pipeline
Use this pattern for datasets, treatments, ablations, simulations, or evaluation workflows.
- Set
meta.figureType: workflow. - Separate setup/data, variants or methods, shared evaluation, metrics, and reporting.
- Draw ablation branches in parallel and converge them before validation or metrics.
- Label branches with short method names. Use the legend for line styles, color encodings, or metric abbreviations.
Reference-Image Redraw
Use this pattern when a paper screenshot or existing figure must become editable.
- Use
meta.source: replicated. - Preserve captions, legends, formulas, callouts, section headers, and connector labels as first-class elements.
- Use
meta.canvas: WIDTHxHEIGHTand top-leftboundswhen matching the source coordinate system matters. - Rebuild the main diagram with native draw.io cells and verify the exported SVG or Desktop artifact before any browser screenshot.
Visual Defaults
- prefer white or very light backgrounds
- use low-saturation colors unless the user explicitly wants a color paper figure
- keep one dominant reading direction
- align nodes to the grid instead of hand-placing them loosely
- shorten labels before shrinking fonts
- use consistent line weights, arrowheads, and corner radii
Academic Delivery Matrix
Default output for paper-mode requests:
.drawio.svg
Keep reproducibility sidecars in the work directory by default, not in the final delivery directory:
.spec.yaml.arch.json
Add .png only when one of these is true:
- the request is thesis or A4 focused
- the figure is for Word or another raster-first workflow
- the task is a screenshot or image rebuild that needs a matching raster companion
- the user explicitly asks for PNG
If draw.io Desktop export is unavailable, keep the offline bundle plus SVG as the completed baseline and note that PNG is optional follow-up.
Node Budget Management
Academic figures should be clear and focused. Keep node count under 40 for optimal readability.
Budget Guidelines
Recommended targets by figure type:
| Figure Type | Target Nodes | Maximum Nodes | Typical Distribution |
|---|---|---|---|
| Architecture | 30-35 | 60 | 4-6 modules × 5-7 nodes + legend (1-2) |
| Workflow | 25-30 | 50 | 15-20 steps + 5-8 decisions + legend (1) |
| Roadmap | 15-20 | 40 | 10-15 stages + 3-5 outputs + legend (1) |
System warnings:
- 0-40 nodes: no warning (ideal range)
- 41-60 nodes: warning (conversion succeeds, but consider simplification)
- 61-100 nodes: error (blocked in strict mode, split strongly recommended)
- > 100 nodes: fatal (always blocked, hard limit)
Node-Efficient Patterns
Example 1: Legend
❌ Expanded Legend (wastes 12 nodes):
- id: legend_container
label: "Legend"
bounds: { x: 1000, y: 400, width: 200, height: 160 }
style: { shape: box, fillColor: "#FAFAFA" }
- id: legend_arrow_solid
label: ""
bounds: { x: 1010, y: 430, width: 40, height: 2 }
style: { strokeColor: "#1E3A5F", strokeWidth: 2 }
- id: legend_arrow_label
label: "Data flow"
bounds: { x: 1060, y: 426, width: 120, height: 16 }
style: { shape: text, fontSize: 11 }
# ... 10 more nodes for each legend item✅ Compact Legend (1 node):
- id: legend
label: |
Legend
→ Data flow
⇢ Conditional flow
⊙ Hadamard product
∥ Concatenation
■ Zone A: Feature extraction
■ Zone B: Conditional embedding
bounds: { x: 1000, y: 400, width: 280, height: 140 }
style:
shape: text
align: left
fontSize: 11Savings: 12 nodes → 1 node (11 nodes saved)
Example 2: Decorative Elements
❌ Detailed Bar Chart (wastes 8 nodes):
- id: bar_1
label: ""
bounds: { x: 100, y: 512, width: 18, height: 36 }
style: { shape: box, fillColor: "#22C55E" }
- id: bar_2
label: ""
bounds: { x: 122, y: 524, width: 18, height: 24 }
style: { shape: box, fillColor: "#4ADE80" }
# ... 6 more bars✅ Simplified Representation (1 node):
- id: attention_weights
label: "ωₜ weight visualization (bar chart, t=1..L)"
bounds: { x: 100, y: 512, width: 180, height: 40 }
style:
shape: box
fillColor: "#E8F5E9"
strokeColor: "#16A34A"
fontSize: 9Savings: 8 nodes → 1 node (7 nodes saved)
When to Split
Split into multiple figures when:
- Node count approaches 50 and simplification is not practical
- The diagram explains 3+ distinct mechanisms or stages
- Readers would need to zoom in to read labels at normal page size
- The figure serves multiple purposes (e.g., architecture + training procedure)
Split Strategies
By data path (for multi-input or multi-branch systems):
- Figure 3a: High-frequency processing path
- Figure 3b: Low-frequency conditioning path
- Both figures share the same fusion/output stage context in captions
By hierarchy level (for deep architectures):
- Figure 3a: System overview (4-6 major modules)
- Figure 3b: Detailed view of the fusion module
- Figure 3c: Attention mechanism internals
By mechanism (for multi-stage methods):
- Figure 3a: Feature extraction stage
- Figure 3b: Conditional fusion mechanism
- Figure 3c: Temporal attention and regression
Real-world example from IEEE papers:
- Typical neural network figures: 25-35 nodes
- Complex architectures often split into 2-3 sub-figures
- Main figure shows 4-6 modules; detail figures zoom into 1-2 modules
Final Quality Gate
Do not consider the figure complete until all of these are true:
meta.figureTypeis set correctly- the diagram reads clearly at normal A4 page zoom
- colors are not the only carrier of meaning
- labels are concise and readable
- connector routing is clean enough that the reading order is obvious
- the offline bundle and SVG are aligned
- any visual self-check used the exported SVG or Desktop-exported final artifact before any browser/live screenshot
- any requested PNG companion matches the final diagram state
Academic Publication Overlay
This file contains overlay-only policy for drawio-academic-skills. Shared schemas, CLI commands, design-system references, official XML/style mirrors, examples, themes, and workflow guides live in the sibling base skill at ../drawio.
Overlay Responsibility
Use this overlay when the request is publication-facing:
- paper, thesis, journal, IEEE, manuscript, camera-ready, or publication-ready figure
- A4 or Word/LaTeX export expectations
- academic formula figure or paper diagram replication
- research workflow, system architecture paper figure, or scholarly roadmap
Required Academic Decisions
Before rendering, decide:
1. Venue or audience. 2. meta.figureType: architecture, roadmap, or workflow. 3. Color policy: monochrome, grayscale-safe accent, or color PDF. 4. Caption and legend requirements. 5. Formula/text placement fidelity. 6. Requested exports and whether draw.io Desktop is required.
Source Understanding
Use the source mode before drafting YAML:
- Document or paper: extract the research problem, gap, objective, theory or assumptions, data, method, mechanism, validation, metrics, findings, and contribution.
- Reference image: extract visible containers, swimlanes, section labels, nodes, arrows, captions, legends, formulas, colors, line styles, and ambiguous text.
- Text-only request: infer a compact academic figure plan and keep assumptions explicit.
For paper-derived figures, classify the source first:
| Source type | Figure pattern |
|---|---|
| Algorithm or optimization paper | inputs -> assumptions -> model stages -> execution -> feedback -> scenarios -> metrics |
| Empirical study | question -> hypotheses/constructs -> data/sample -> variables -> method -> checks -> findings |
| Mechanism study | antecedents -> mediators -> moderators/boundaries -> outcomes -> evidence |
| System architecture paper | data/sensing -> processing modules -> decision/control -> outputs -> evaluation |
| Experimental study | problem -> setup -> treatment/control -> measurement -> analysis -> findings |
| Review or policy paper | problem space -> classification -> evidence groups -> synthesis -> gaps/recommendations |
| Deep-learning model paper | input -> backbone/encoder -> fusion/attention -> head/decoder -> loss/output -> metrics |
| Algorithm mechanism figure | local inputs -> operation window -> formula/operator -> output -> interpretation |
Map the result to the existing meta.figureType contract:
architecture: structure, layers, modules, systems, actors, or static relationships.roadmap: study stages, milestones, phases, or progressive deliverables.workflow: ordered execution, branching, iterative methods, experiments, or pipelines.
Scientific Figure Planning
When the source is a research model, mechanism, or experiment, turn the evidence chain into a compact figure plan before drafting YAML. The figure-type pattern library (model architecture, operation/mechanism, experiment pipeline, scholarly framework redraw — each with its YAML emphasis) lives in academic-figure-playbook.md § Scientific Figure Patterns; use it rather than re-deriving patterns here.
Prefer an architecture figure for static relationships and a workflow figure for ordered operations. Do not invent a new meta.figureType when the existing three values can express the paper role.
Research Evidence Chain
Extract a compact evidence chain before proposing the figure:
1. Research problem and gap. 2. Objective or research question. 3. Inputs, data sources, sample, variables, or operating conditions. 4. Theory, assumptions, hypotheses, constructs, or constraints. 5. Core method, model, algorithm, mechanism, or framework. 6. Actors, system components, scenarios, or process stages. 7. Outputs, experiments, validation methods, metrics, and results. 8. Main contribution, implications, limitations, or future-work hook. 9. Feedback loops, uncertainty, or boundary conditions when they affect interpretation.
Do not force every item into the figure. Include the items that explain the paper's argument and distinguish the proposed approach.
Diagram Plan Gate
For complex paper-derived figures, ambiguous diagrams, or academic image-improvement work, confirm a diagram plan before rendering. Use this template:
Source type:
Figure type:
Primary research chain:
Major sections:
Supporting nodes:
Key arrows and feedback:
Formula/callout placement:
Validation and contribution:
Preview path:
Terms needing confirmation:Skip this gate only for simple academic diagrams where the user already gave the figure type, labels, layout, and export expectations clearly.
Content Compression
Academic figures should not copy paragraphs into boxes. Compress source text into:
- noun phrases for modules,
- verb phrases for arrows,
- short method labels for algorithm or experiment steps,
- short result labels for validation or findings,
- one-line notes for assumptions, constraints, or limitations.
Prefer 4-8 major modules and 2-5 supporting nodes per major section. Use one dominant reading path and only 1-2 feedback loops unless the source genuinely requires more.
For model-architecture and mechanism figures, compress repeated layers into stage labels such as CSP block x3, Feature fusion, or Detect head instead of drawing every internal layer. Use a legend or caption to explain notation that repeats across the figure.
Optional Image Preview
Use external image-generation preview by default for:
- complex paper-derived figures with non-obvious layout or hierarchy,
- reference-image redraws where the user wants academic improvement rather than literal replication,
- proposal/thesis/manuscript figures where visual composition needs approval before YAML work.
Skip external image-generation preview for simple, straightforward academic diagrams and proceed directly to YAML/SVG.
Privacy rules:
- Ask before sending unpublished papers, confidential reports, proprietary data, or sensitive research content to an external model.
- Prefer sending the confirmed diagram plan, short labels, layout intent, and visual style constraints instead of raw source documents.
- If the user declines external processing, no image tool is available, or generation fails, fall back to local YAML/SVG preview.
Prompt constraints:
- Request academic diagram style, not a poster or marketing graphic.
- Use white or very light background, restrained colors, thin borders, clear hierarchy, and short labels.
- Ask for boxes, containers, swimlanes, callouts, feedback loops, and orthogonal arrows only when supported by the plan.
- Avoid decorative gradients, stock imagery, icons used as decoration, heavy shadows, and diagonal connector arrows.
- Treat generated text as approximate. Correct exact labels, formulas, and captions in YAML.
Bundle Contract
Default academic final delivery is:
.drawio.svg
Work-dir sidecars are still part of the reproducible bundle, but should live in a project-local work directory by default:
.spec.yaml.arch.json
PNG/PDF/JPG are optional Desktop-enhanced exports. If Desktop is unavailable, report the missing export and provide the editable .drawio, SVG, work-dir sidecars, and fallback command or URL.
Visual Verification
Use exported artifacts for paper-readability checks before any browser path:
1. Inspect the generated SVG when the current environment can view it. 2. If a raster or final-fidelity check is needed and draw.io Desktop is available, inspect the Desktop-exported PNG/PDF/JPG or embedded .drawio.svg. 3. Do not substitute browser or Playwright screenshots when an exported artifact exists. 4. Use live/browser screenshots only as a last-resort review aid when the user explicitly requested live review and no exported artifact can be inspected.
For the first exported artifact, check:
- overlap between modules, labels, captions, legends, or formula blocks;
- clipped text or formula rendering issues;
- connector labels sitting on top of lines;
- arrows crossing text or node interiors;
- missing modules, wrong grouping, or visual mismatch from the confirmed plan/source;
- colors being the only carrier of meaning.
If a visible defect is found, adjust the YAML spec and rerender once. After that correction pass, report the result instead of starting an open-ended polish loop.
References
Load these overlay-local academic references for detailed rules:
academic-figure-playbook.md(figure-type pattern library and node budget)academic-export-checklist.md
Load the sibling base references for shared execution detail:
../drawio/references/docs/math-typesetting.md../drawio/references/docs/design-system/specification.md../drawio/references/workflows/create.md../drawio/references/workflows/edit.md../drawio/references/workflows/replicate.md
meta:
profile: academic-paper
figureType: workflow
theme: academic-color
layout: vertical
title: "Ablation Study Pipeline"
description: "Compare baseline, variant, and evaluation stages."
legend: "Each branch is an ablation configuration. Shared evaluation is shown with dashed input aggregation."
nodes:
- id: baseline
label: Baseline
type: service
- id: variantA
label: Variant A
type: service
- id: variantB
label: Variant B
type: service
- id: eval
label: Evaluation
type: process
- id: report
label: Report
type: document
edges:
- from: baseline
to: eval
type: data
- from: variantA
to: eval
type: data
- from: variantB
to: eval
type: data
- from: eval
to: report
type: primary
meta:
profile: academic-paper
figureType: architecture
theme: academic
layout: vertical
title: "Fig. 1. Campus Network Topology"
description: "Core, distribution, and access layers for an IEEE-style paper figure."
legend: "Solid lines are physical links. Dashed lines are management or control links."
nodes:
- id: core
label: Core Router
type: service
- id: distA
label: Distribution A
type: service
- id: distB
label: Distribution B
type: service
- id: access
label: Access Switch
type: service
- id: users
label: User Segment
type: user
edges:
- from: core
to: distA
type: primary
- from: core
to: distB
type: primary
- from: distA
to: access
type: primary
- from: distB
to: access
type: data
label: Control
- from: access
to: users
type: primary
meta:
profile: academic-paper
figureType: workflow
theme: academic-color
layout: horizontal
title: "Max-Pooling Operation"
description: "Native-cell operation figure for a single pooling window."
legend: "Four input cells form one pooling window. The output cell stores the maximum value."
nodes:
- id: in11
label: "1"
type: service
bounds: { x: 48, y: 96, width: 40, height: 40 }
style: { fillColor: "#EFF6FF", strokeColor: "#2563EB", fontSize: 10 }
- id: in12
label: "5"
type: service
bounds: { x: 88, y: 96, width: 40, height: 40 }
style: { fillColor: "#DBEAFE", strokeColor: "#2563EB", fontSize: 10 }
- id: in21
label: "2"
type: service
bounds: { x: 48, y: 136, width: 40, height: 40 }
style: { fillColor: "#EFF6FF", strokeColor: "#2563EB", fontSize: 10 }
- id: in22
label: "3"
type: service
bounds: { x: 88, y: 136, width: 40, height: 40 }
style: { fillColor: "#EFF6FF", strokeColor: "#2563EB", fontSize: 10 }
- id: inputLabel
label: "2 x 2 window"
type: text
bounds: { x: 44, y: 56, width: 112, height: 28 }
style: { fontSize: 10, align: center }
- id: operator
label: "max"
type: operator
bounds: { x: 208, y: 116, width: 48, height: 48 }
style: { fillColor: "#F8FAFC", strokeColor: "#475569", fontSize: 10 }
- id: outputCell
label: "5"
type: output
bounds: { x: 336, y: 116, width: 56, height: 56 }
style: { fillColor: "#DCFCE7", strokeColor: "#16A34A", fontSize: 10 }
- id: outputLabel
label: "pooled output"
type: text
bounds: { x: 320, y: 56, width: 104, height: 28 }
style: { fontSize: 10, align: center }
- id: formula
label: "$$y = max(x)$$"
type: formula
bounds: { x: 176, y: 200, width: 128, height: 48 }
style: { fontSize: 10, align: center }
edges:
- from: in12
to: operator
type: primary
label: window
labelOffset: { x: 0, y: -16 }
- from: operator
to: outputCell
type: primary
label: max value
labelOffset: { x: 0, y: -16 }
- from: formula
to: operator
type: optional
label: rule
labelOffset: { x: 16, y: 0 }
meta:
profile: academic-paper
figureType: workflow
theme: academic-color
layout: horizontal
title: "Research Workflow"
description: "Dataset to evaluation pipeline for a manuscript figure."
legend: "Primary arrows denote workflow stages. Dashed arrows denote validation or data transfer."
nodes:
- id: data
label: Dataset
type: document
position:
x: 40
y: 96
- id: preprocess
label: Preprocess
type: process
position:
x: 232
y: 96
- id: train
label: Train Model
type: service
position:
x: 424
y: 96
- id: validate
label: Validation
type: decision
position:
x: 616
y: 96
- id: result
label: Results
type: document
position:
x: 808
y: 96
edges:
- from: data
to: preprocess
type: primary
- from: preprocess
to: train
type: primary
- from: train
to: validate
type: data
- from: validate
to: result
type: primary
meta:
profile: academic-paper
figureType: architecture
theme: academic
layout: horizontal
title: "System Architecture"
description: "Paper-ready overview of client, service, and data tiers."
legend: "Rounded boxes are services. Cylinders are persistent storage."
modules:
- id: client
label: Client Layer
- id: compute
label: Compute Layer
- id: data
label: Data Layer
nodes:
- id: ui
label: Web Client
type: user
module: client
- id: api
label: API Service
type: service
module: compute
- id: worker
label: Worker
type: service
module: compute
- id: db
label: PostgreSQL
type: database
module: data
edges:
- from: ui
to: api
type: primary
- from: api
to: worker
type: data
- from: worker
to: db
type: primary
meta:
profile: academic-paper
figureType: roadmap
theme: academic-color
layout: horizontal
title: "Technical Roadmap"
description: "Major study stages from problem framing to submission-ready results."
legend: "Primary arrows show stage progression. Document nodes mark major outputs."
nodes:
- id: framing
label: Framing
type: process
position:
x: 40
y: 96
- id: prototype
label: Prototype
type: service
position:
x: 240
y: 96
- id: ablation
label: Ablation Study
type: process
position:
x: 440
y: 96
- id: scale
label: Scale-Up
type: process
position:
x: 640
y: 96
- id: submission
label: Submission
type: document
position:
x: 840
y: 96
edges:
- from: framing
to: prototype
type: primary
- from: prototype
to: ablation
type: primary
- from: ablation
to: scale
type: primary
- from: scale
to: submission
type: primary
meta:
profile: academic-paper
figureType: architecture
theme: academic-color
layout: horizontal
title: "YOLO-Style Detector"
description: "Compact paper figure for backbone, fusion neck, detection heads, and loss."
legend: "Cubes are feature maps. Rounded blocks are learned stages. Dashed links carry multi-scale features."
modules:
- id: inputStage
label: Input
- id: backbone
label: Backbone
- id: neck
label: Neck / Fusion
- id: head
label: Head and Loss
nodes:
- id: image
label: Image batch
type: input
module: inputStage
bounds: { x: 64, y: 96, width: 120, height: 48 }
- id: tensor0
label: H x W x 3
type: tensor3d
module: inputStage
bounds: { x: 96, y: 208, width: 72, height: 80 }
- id: stem
label: Stem Conv
type: conv
module: backbone
bounds: { x: 256, y: 80, width: 112, height: 48 }
- id: csp
label: CSP blocks
type: conv
module: backbone
bounds: { x: 256, y: 184, width: 112, height: 56 }
- id: spp
label: SPPF
type: pool
module: backbone
bounds: { x: 256, y: 304, width: 112, height: 48 }
- id: p3
label: P3 feature
type: tensor3d
module: neck
bounds: { x: 448, y: 72, width: 64, height: 72 }
- id: fuse
label: PAN fusion
type: attention
module: neck
bounds: { x: 424, y: 184, width: 120, height: 56 }
- id: p5
label: P5 feature
type: tensor3d
module: neck
bounds: { x: 448, y: 312, width: 64, height: 72 }
- id: detectSmall
label: Small head
type: output
module: head
bounds: { x: 624, y: 96, width: 112, height: 48 }
- id: detectLarge
label: Large head
type: output
module: head
bounds: { x: 624, y: 232, width: 112, height: 48 }
- id: loss
label: Box + cls loss
type: loss
module: head
bounds: { x: 624, y: 344, width: 112, height: 48 }
edges:
- from: image
to: tensor0
type: primary
- from: tensor0
to: stem
type: primary
- from: stem
to: csp
type: primary
- from: csp
to: spp
type: primary
- from: spp
to: p3
type: data
label: multi-scale
labelOffset: { x: 0, y: -16 }
- from: p3
to: fuse
type: primary
- from: fuse
to: p5
type: primary
- from: fuse
to: detectSmall
type: data
label: P3/P4
labelOffset: { x: 0, y: -16 }
- from: p5
to: detectLarge
type: data
label: P5
labelOffset: { x: 0, y: -16 }
- from: detectSmall
to: loss
type: optional
- from: detectLarge
to: loss
type: optional
# Template: Multi-Module System Architecture (Compact)
# Version: 1.0
# Node Budget: 28 nodes (target < 40)
#
# This template demonstrates node-efficient patterns for multi-module system diagrams:
# - 5 modules with 3-4 nodes each
# - Color coding for module types
# - Compact legend
# - Different connector styles for different relationships
#
# Usage:
# 1. Copy this file to your work directory
# 2. Modify module labels and node contents
# 3. Adjust for your system's architecture
# 4. Keep node count < 40
meta:
profile: academic-paper
figureType: architecture
theme: academic-color
title: 'Multi-Module System Architecture (Compact Template)'
description: 'Demonstrates efficient representation of distributed systems with 5 modules and varied connector styles'
canvasSize: { width: 1100, height: 600 }
gridSize: 8
legend: true
template:
name: 'multi-module-system-compact'
version: '1.0'
author: 'drawio-academic-skills'
nodeCountTarget: 28
nodeCountActual: 28
useCases:
- 'Microservice architectures'
- 'Distributed systems'
- 'Multi-tier applications'
modules:
- id: frontend
label: 'Frontend Layer'
bounds: { x: 50, y: 80, width: 180, height: 140 }
color: '#E0F2FE'
- id: api_gateway
label: 'API Gateway'
bounds: { x: 280, y: 80, width: 180, height: 140 }
color: '#DBEAFE'
- id: services
label: 'Service Layer'
bounds: { x: 510, y: 80, width: 180, height: 140 }
color: '#FEF3C7'
- id: data
label: 'Data Layer'
bounds: { x: 740, y: 80, width: 180, height: 140 }
color: '#D1FAE5'
- id: monitoring
label: 'Monitoring'
bounds: { x: 970, y: 80, width: 100, height: 140 }
color: '#F3E8FF'
nodes:
# Frontend Layer
- id: f1_web
module: frontend
label: 'Web App'
bounds: { x: 70, y: 100, width: 140, height: 30 }
type: user
- id: f2_mobile
module: frontend
label: 'Mobile App'
bounds: { x: 70, y: 145, width: 140, height: 30 }
type: user
- id: f3_cli
module: frontend
label: 'CLI Tool'
bounds: { x: 70, y: 175, width: 140, height: 30 }
type: terminal
# API Gateway
- id: g1_router
module: api_gateway
label: 'Router'
bounds: { x: 300, y: 100, width: 140, height: 25 }
type: service
- id: g2_auth
module: api_gateway
label: 'Auth Service'
bounds: { x: 300, y: 135, width: 140, height: 25 }
type: service
- id: g3_cache
module: api_gateway
label: 'Cache Layer'
bounds: { x: 300, y: 170, width: 140, height: 25 }
type: queue
# Service Layer
- id: s1_user
module: services
label: 'User Service'
bounds: { x: 530, y: 100, width: 140, height: 25 }
type: service
- id: s2_order
module: services
label: 'Order Service'
bounds: { x: 530, y: 135, width: 140, height: 25 }
type: service
- id: s3_payment
module: services
label: 'Payment Service'
bounds: { x: 530, y: 170, width: 140, height: 25 }
type: service
- id: s4_notify
module: services
label: 'Notification'
bounds: { x: 530, y: 190, width: 140, height: 20 }
type: service
# Data Layer
- id: d1_postgres
module: data
label: 'PostgreSQL'
bounds: { x: 760, y: 100, width: 140, height: 25 }
type: database
- id: d2_redis
module: data
label: 'Redis Cache'
bounds: { x: 760, y: 135, width: 140, height: 25 }
type: database
- id: d3_s3
module: data
label: 'Object Storage'
bounds: { x: 760, y: 170, width: 140, height: 25 }
type: cloud
# Monitoring
- id: m1_metrics
module: monitoring
label: 'Metrics'
bounds: { x: 980, y: 100, width: 80, height: 25 }
type: service
- id: m2_logs
module: monitoring
label: 'Logs'
bounds: { x: 980, y: 135, width: 80, height: 25 }
type: service
- id: m3_traces
module: monitoring
label: 'Traces'
bounds: { x: 980, y: 170, width: 80, height: 25 }
type: service
# Legend (compact, 1 node)
- id: legend
label: |
Legend
→ API call | ⇢ Event stream
⋯ Monitoring | = Database query
Layer colors: Frontend | Gateway | Services | Data | Monitor
bounds: { x: 50, y: 260, width: 350, height: 100 }
style:
shape: text
align: left
fontSize: 10
fontColor: '#1E293B'
edges:
# Frontend → Gateway
- from: f1_web
to: g1_router
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: f2_mobile
to: g1_router
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: f3_cli
to: g1_router
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
# Gateway → Services
- from: g1_router
to: s1_user
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: g1_router
to: s2_order
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: g2_auth
to: s1_user
style: { strokeColor: '#1E3A5F', strokeWidth: 1.5, dashed: true }
# Services → Data
- from: s1_user
to: d1_postgres
style: { strokeColor: '#059669', strokeWidth: 1.5 }
- from: s2_order
to: d1_postgres
style: { strokeColor: '#059669', strokeWidth: 1.5 }
- from: s3_payment
to: d1_postgres
style: { strokeColor: '#059669', strokeWidth: 1.5 }
- from: g3_cache
to: d2_redis
style: { strokeColor: '#059669', strokeWidth: 1.5 }
# Event stream
- from: s2_order
to: s4_notify
style:
strokeColor: '#D97706'
strokeWidth: 1.5
dashed: true
dashPattern: '6 4'
# Monitoring connections
- from: g1_router
to: m1_metrics
style:
strokeColor: '#9333EA'
strokeWidth: 1
dashed: true
dashPattern: '2 2'
- from: s1_user
to: m2_logs
style:
strokeColor: '#9333EA'
strokeWidth: 1
dashed: true
dashPattern: '2 2'
- from: s2_order
to: m3_traces
style:
strokeColor: '#9333EA'
strokeWidth: 1
dashed: true
dashPattern: '2 2'
# Template: Neural Network Architecture (Compact)
# Version: 1.0
# Node Budget: 35 nodes (target < 40)
#
# This template demonstrates node-efficient patterns for academic neural network figures:
# - Compact legend (1 node with multi-line text)
# - Formulas embedded in node labels
# - Module grouping to reduce top-level nodes
#
# Usage:
# 1. Copy this file to your work directory
# 2. Modify meta.title and meta.description
# 3. Adjust module bounds and node positions
# 4. Keep node count < 40 for readability
meta:
profile: academic-paper
figureType: architecture
theme: academic-color
title: 'Multi-Module Neural Network Architecture (Compact Template)'
description: 'Demonstrates node-efficient patterns for complex neural network figures with 4 modules, embedded formulas, and compact legend'
canvasSize: { width: 1200, height: 700 }
gridSize: 8
legend: true
# Template metadata
template:
name: 'neural-network-architecture-compact'
version: '1.0'
author: 'drawio-academic-skills'
nodeCountTarget: 35
nodeCountActual: 35
useCases:
- 'Multi-module neural network architectures'
- 'CNN, Transformer, or encoder-decoder models'
- 'Feature fusion architectures'
# ============================================================================
# MODULES: 4 major stages (Input, Feature Extraction, Fusion, Output)
# ============================================================================
modules:
- id: input_module
label: 'A. Input Processing'
bounds: { x: 50, y: 100, width: 200, height: 180 }
color: '#DBEAFE'
- id: feature_module
label: 'B. Feature Extraction'
bounds: { x: 300, y: 100, width: 200, height: 180 }
color: '#FEF3C7'
- id: fusion_module
label: 'C. Feature Fusion'
bounds: { x: 550, y: 100, width: 200, height: 180 }
color: '#F3E8FF'
- id: output_module
label: 'D. Output & Loss'
bounds: { x: 800, y: 100, width: 200, height: 180 }
color: '#DCFCE7'
# ============================================================================
# NODES: Core processing nodes (grouped by module)
# ============================================================================
nodes:
# --- Module A: Input Processing ---
- id: a1_input
module: input_module
label: "$$\\mathbf{X} \\in \\mathbb{R}^{B \\times D \\times L}$$"
bounds: { x: 70, y: 130, width: 160, height: 30 }
style:
shape: box
fillColor: '#DBEAFE'
strokeColor: '#2563EB'
strokeWidth: 1.5
rounded: 4
fontSize: 11
- id: a2_norm
module: input_module
label: 'Layer Norm'
bounds: { x: 90, y: 175, width: 120, height: 30 }
type: norm
- id: a3_embed
module: input_module
label: "Embedding\n$$d_{model}=256$$"
bounds: { x: 90, y: 220, width: 120, height: 35 }
type: embed
# --- Module B: Feature Extraction ---
- id: b1_conv1
module: feature_module
label: "Conv1D\n$$k=3, c=128$$"
bounds: { x: 320, y: 130, width: 80, height: 35 }
type: conv
- id: b2_pool
module: feature_module
label: "MaxPool\n$$k=2$$"
bounds: { x: 420, y: 130, width: 60, height: 35 }
type: pool
- id: b3_conv2
module: feature_module
label: "Conv1D\n$$k=3, c=256$$"
bounds: { x: 320, y: 180, width: 80, height: 35 }
type: conv
- id: b4_attn
module: feature_module
label: "Self-Attention\n$$h=4$$"
bounds: { x: 420, y: 180, width: 60, height: 35 }
type: attention
- id: b5_output
module: feature_module
label: "$$\\mathbf{F} \\in \\mathbb{R}^{B \\times 256 \\times L'}$$"
bounds: { x: 320, y: 230, width: 160, height: 30 }
style:
shape: box
fillColor: '#FEF3C7'
strokeColor: '#D97706'
strokeWidth: 1.5
rounded: 4
fontSize: 10
# --- Module C: Feature Fusion ---
- id: c1_concat
module: fusion_module
label: "Concat\n$$\\text{dim}=1$$"
bounds: { x: 590, y: 130, width: 120, height: 30 }
type: operator
- id: c2_film
module: fusion_module
label: "FiLM Layer\n$$\\gamma, \\beta$$"
bounds: { x: 590, y: 175, width: 120, height: 35 }
type: gate
- id: c3_residual
module: fusion_module
label: 'Residual Add'
bounds: { x: 590, y: 225, width: 120, height: 25 }
type: operator
# --- Module D: Output & Loss ---
- id: d1_global_pool
module: output_module
label: 'Global Pool'
bounds: { x: 820, y: 130, width: 160, height: 25 }
type: pool
- id: d2_fc
module: output_module
label: "Fully Connected\n$$d_{out}=1$$"
bounds: { x: 840, y: 170, width: 120, height: 30 }
type: operator
- id: d3_output
module: output_module
label: "$$\\hat{y} \\in \\mathbb{R}^{B}$$"
bounds: { x: 840, y: 215, width: 120, height: 25 }
type: output
- id: d4_loss
module: output_module
label: 'MSE Loss'
bounds: { x: 840, y: 250, width: 120, height: 20 }
type: loss
# Additional helper nodes outside modules
- id: condition_input
label: "Condition\n$$\\mathbf{C} \\in \\mathbb{R}^{B \\times d_c}$$"
bounds: { x: 550, y: 50, width: 150, height: 30 }
style:
shape: box
fillColor: '#FEF3C7'
strokeColor: '#D97706'
strokeWidth: 1.5
rounded: 4
fontSize: 10
# ============================================================================
# LEGEND: Single-node compact legend
# ============================================================================
- id: legend
label: |
Legend
→ Data flow | ⇢ Conditional
⊙ Element-wise | ∥ Concat
■ A: Input ■ B: Features
■ C: Fusion ■ D: Output
bounds: { x: 50, y: 350, width: 280, height: 120 }
style:
shape: text
align: left
fontSize: 10
fontColor: '#1E293B'
# Note: No fillColor means transparent background
# ============================================================================
# EDGES: Data flow connections
# ============================================================================
edges:
# Module A flow
- from: a1_input
to: a2_norm
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: a2_norm
to: a3_embed
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: a3_embed
to: b1_conv1
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
# Module B flow
- from: b1_conv1
to: b2_pool
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: b2_pool
to: b3_conv2
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: b3_conv2
to: b4_attn
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: b4_attn
to: b5_output
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: b5_output
to: c1_concat
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
# Conditional flow
- from: condition_input
to: c2_film
style:
strokeColor: '#D97706'
strokeWidth: 2
dashed: true
dashPattern: '6 4'
# Module C flow
- from: c1_concat
to: c2_film
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: c2_film
to: c3_residual
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: c3_residual
to: d1_global_pool
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
# Module D flow
- from: d1_global_pool
to: d2_fc
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: d2_fc
to: d3_output
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
- from: d3_output
to: d4_loss
style: { strokeColor: '#1E3A5F', strokeWidth: 2 }
Related skills
How it compares
Use drawio-academic-skills for venue-gated thesis and paper figures; use the general drawio base skill for non-academic diagrams without publication overlay rules.
FAQ
Does drawio-academic-skills require an MCP server?
drawio-academic-skills explicitly never requires MCP or a live backend. Academic authoring stays YAML-first and offline-first through the sibling ../drawio base CLI, with draw.io Desktop optional for PNG, PDF, or embedded SVG exports.
What are the default deliverables for academic figures?
drawio-academic-skills defaults to .drawio and .svg final deliverables with .spec.yaml and .arch.json sidecars in a work directory. PNG, PDF, and JPG exports are added only when requested and when draw.io Desktop is available locally.