Not in the top 1,000 by GitHub stars

M1n-n9/academic-figures-drawer

Create camera-ready, editable academic figures from papers and method descriptions.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2661ea9092f → b2661ea9092f

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2661ea9092f

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit b2661ea9092f833dce93fb84ddbc2a90027eb610

226GitHub stars
3stars in 7 days
1skill in this repository
0commits in 30 days

Heat

4.5
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026226

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

academic-figures-drawer

When your agent uses it

Create camera-ready, editable draw.io figures from papers, method descriptions, code, or reference images. Use for ICML, NeurIPS/NIPS, ICLR, and similar ML/AI research figures: concise framework overviews, module-detail diagrams, tensor and attention flows, ablations, training/inference pipelines, and downstream-task panels. Optionally use image generation for a non-semantic visual concept or input/context asset, then translate the approved semantics into vector draw.io XML with preview, static validation, and screenshot-driven refinement.

What it loads into context

Frontmatter

119 tokens

Always available to the agent

SKILL.md

2,955 tokens

When the skill is activated

Reference documents

34,735 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Operating contract
  2. Fast decision tree
  3. End-to-end workflow
  4. Input-specific notes
  5. Bundled resources

Scripts executed separately

  • scripts/aiicons.py
  • scripts/autolayout.py
  • scripts/edgeports.py
  • scripts/encode_drawio_url.py
  • scripts/init_figure_workspace.py
  • scripts/make_drawio_preview.py
  • scripts/repair_png.py
  • scripts/serve_drawio_preview.py
  • scripts/shapesearch.py
  • scripts/validate.py
  • scripts/validate_drawio.py
  • scripts/validate_replication_artifacts.py
  • scripts/validate_visual_quality.py

Files

  • README.mddoc10,872 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • SKILL.mdcore13,391 bytes
  • agents/openai.yamlasset256 bytes
  • data/SHAPE-INDEX-NOTICE.mddoc880 bytes
  • data/lobe-icons.jsonasset12,919 bytes
  • data/shape-index.json.gzasset436,148 bytes
  • references/THIRD_PARTY_NOTICES.mddoc2,408 bytes
  • references/diagram-types.mddoc16,699 bytes
  • references/drawio-workflow.mddoc18,636 bytes
  • references/figure-contract.mddoc2,945 bytes
  • references/general-quality-contract.mddoc5,545 bytes
  • references/primitive-icons.mddoc5,114 bytes
  • references/reference-replication-protocol.mddoc11,095 bytes
  • references/self-supervision-and-intake.mddoc24,911 bytes
  • references/shapes.mddoc7,155 bytes
  • references/style-extraction.mddoc9,237 bytes
  • references/topconf-paper-style.mddoc7,520 bytes
  • references/troubleshooting.mddoc5,280 bytes
  • references/xml-authoring.mddoc7,928 bytes
  • references/xml-preflight.mddoc8,299 bytes
  • scripts/aiicons.pyruns7,983 bytes
  • scripts/autolayout.pyruns18,286 bytes
  • scripts/edgeports.pyruns6,856 bytes
  • scripts/encode_drawio_url.pyruns2,250 bytes
  • scripts/init_figure_workspace.pyruns4,034 bytes
  • scripts/make_drawio_preview.pyruns3,400 bytes
  • scripts/repair_png.pyruns1,097 bytes
  • scripts/serve_drawio_preview.pyruns2,450 bytes
  • scripts/shapesearch.pyruns5,967 bytes
  • scripts/validate.pyruns13,337 bytes
  • scripts/validate_drawio.pyruns12,561 bytes
  • scripts/validate_replication_artifacts.pyruns12,404 bytes
  • scripts/validate_visual_quality.pyruns49,753 bytes

No excerpt is shown for this license. Read the source on GitHub.

View the complete source on GitHub

Skills included

  • academic-figures-drawer

Repository facts

License
No license detected
Created
Aug 13, 2026
Last pushed
Aug 21, 2026
Forks
4
Open issues
0
Project activity
Slowing

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 8 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 57 signals by file

data/SHAPE-INDEX-NOTICE.md

  • Network accessline 3
    `shape-index.json.gz` is a gzipped copy of the shape search index from [jgraph/drawio-mcp](https://github.com/jgraph/drawio-mcp) (`shape-search/search-index.json`),
  • Network accessline 4
    [jgraph/drawio-mcp](https://github.com/jgraph/drawio-mcp) (`shape-search/search-index.json`),

data/lobe-icons.json

  • Network accessline 2
    "package": "@lobehub/icons-static-svg", "version": "1.91.0", "cdn": "https://unpkg.com/@lobehub/icons-static-svg@1.91.0/icons/",
  • Network accessline 3
    "version": "1.91.0", "cdn": "https://unpkg.com/@lobehub/icons-static-svg@1.91.0/icons/", "icons": [
  • Network accessline 4
    "cdn": "https://unpkg.com/@lobehub/icons-static-svg@1.91.0/icons/",

references/drawio-workflow.md

  • Network accessline 173
    http://127.0.0.1:8765/drawio-preview.html?rev=1
  • Network accessline 178
    The preview page uses an iframe to `https://embed.diagrams.net/` and sends the XML through `postMessage`, so the browser address stays short.
  • Network accessline 218
    1. Start the preview server (see Section 5) — `serve_drawio_preview.py` or `python -m http.server`. 2. Navigate the browser to `http://127.0.0.1:8765/drawio-preview.html?rev=N` (increment N to bust cache).
  • Network accessline 219
    2. Navigate the browser to `http://127.0.0.1:8765/drawio-preview.html?rev=N` (increment N to bust cache).

references/shapes.md

  • Network accessline 52
    brand name (OpenAI, Claude, Gemini, Mistral, Llama, HuggingFace, Ollama, LangChain, …321 brands) to a draw.io `image` style backed by the [lobe-icons](https://github.com/lobehub/lobe-icons) set (MIT).
  • Network accessline 54
    [lobe-icons](https://github.com/lobehub/lobe-icons) set (MIT).
  • Network accessline 71
    - **Data stores** common in RAG/LLM apps that lobe lacks (Qdrant, Redis,   Postgres, Mongo, Elasticsearch, Milvus, Supabase, Neo4j, ClickHouse, Kafka,   Snowflake, Databricks, …) resolve via the [simple-icons](https://simpleicons.org)
  • Network accessline 72
    Postgres, Mongo, Elasticsearch, Milvus, Supabase, Neo4j, ClickHouse, Kafka,   Snowflake, Databricks, …) resolve via the [simple-icons](https://simpleicons.org)   CDN (CC0) as an automatic fallback — same command, same output shape. A brand
  • Network accessline 73
    Snowflake, Databricks, …) resolve via the [simple-icons](https://simpleicons.org)

scripts/aiicons.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 5
    "LLM app architecture" renders as generic boxes. This resolves a brand name to a draw.io `image` style that references the matching SVG from the lobe-icons set (https://github.com/lobehub/lobe-icons, MIT) on the unpkg CDN.
  • Network accessline 7
    (https://github.com/lobehub/lobe-icons, MIT) on the unpkg CDN.
  • Network accessline 38
    # Common RAG/LLM data stores that lobe-icons lacks, mapped to simple-icons # slugs (https://simpleicons.org, CC0). Served from the simple-icons CDN. Each
  • Network accessline 39
    # slugs (https://simpleicons.org, CC0). Served from the simple-icons CDN. Each
  • Network accessline 40
    # slug below is verified to return HTTP 200 at https://cdn.simpleicons.org/<slug>.
  • Network accessline 41
    _SIMPLEICONS_CDN = "https://cdn.simpleicons.org/"
  • Network accessline 159
    if args.embed:                 try:                     svg = urllib.request.urlopen(url, timeout=15).read()
  • Network accessline 160
    try:                     svg = urllib.request.urlopen(url, timeout=15).read()                 except Exception as exc:                   # noqa: BLE001 - report and skip
  • Network accessline 161
    svg = urllib.request.urlopen(url, timeout=15).read()
  • Network accessline 181
    if args.embed:                 try:                     svg = urllib.request.urlopen(url, timeout=15).read()
  • Network accessline 183
    svg = urllib.request.urlopen(url, timeout=15).read()

scripts/autolayout.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/edgeports.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/encode_drawio_url.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 8
    Two modes:   (default)  read-only viewer  -> https://viewer.diagrams.net/...#R<payload>
  • Network accessline 9
    (default)  read-only viewer  -> https://viewer.diagrams.net/...#R<payload>
  • Network accessline 10
    --edit     editable editor   -> https://app.diagrams.net/...#create=<payload>
  • Network accessline 36
    return (         "https://viewer.diagrams.net/?tags=%7B%7D&lightbox=1&edit=_blank#R"         + urllib.parse.quote(_deflate_b64(xml), safe="")
  • Network accessline 37
    "https://viewer.diagrams.net/?tags=%7B%7D&lightbox=1&edit=_blank#R"         + urllib.parse.quote(_deflate_b64(xml), safe="")     )
  • Network accessline 44
    payload = json.dumps({"type": "xml", "compressed": True, "data": _deflate_b64(xml)})     return (         "https://app.diagrams.net/?grid=0&pv=0&border=10&edit=_blank#create="
  • Network accessline 45
    return (         "https://app.diagrams.net/?grid=0&pv=0&border=10&edit=_blank#create="         + urllib.parse.quote(payload, safe="")
  • Network accessline 46
    "https://app.diagrams.net/?grid=0&pv=0&border=10&edit=_blank#create="         + urllib.parse.quote(payload, safe="")     )

scripts/init_figure_workspace.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/make_drawio_preview.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 25
    </head> <body> <iframe id="drawio" src="https://embed.diagrams.net/?embed=1&proto=json&spin=1&ui=atlas&libraries=0&grid=0&pv=0"></iframe>
  • Network accessline 26
    <body> <iframe id="drawio" src="https://embed.diagrams.net/?embed=1&proto=json&spin=1&ui=atlas&libraries=0&grid=0&pv=0"></iframe> <script>
  • Network accessline 27
    <iframe id="drawio" src="https://embed.diagrams.net/?embed=1&proto=json&spin=1&ui=atlas&libraries=0&grid=0&pv=0"></iframe>
  • Network accessline 29
    const xml = {xml_json}; const diagramTitle = {title_json}; const DRAWIO_ORIGIN = 'https://embed.diagrams.net';
  • Network accessline 30
    const diagramTitle = {title_json}; const DRAWIO_ORIGIN = 'https://embed.diagrams.net'; const iframe = document.getElementById('drawio');
  • Network accessline 31
    const DRAWIO_ORIGIN = 'https://embed.diagrams.net';

scripts/repair_png.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 17
    IEND = b"\x00\x00\x00\x00IEND\xaeB`\x82"
  • Possible obfuscationline 25
    if data.endswith(b"\x00\x00\x00\x00"):

scripts/serve_drawio_preview.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 48
    with ReusableThreadingTCPServer((args.host, args.port), handler) as httpd:             actual_port = httpd.server_address[1]             url = f"http://{args.host}:{actual_port}/{out_path.name}?rev=1"
  • Network accessline 49
    actual_port = httpd.server_address[1]             url = f"http://{args.host}:{actual_port}/{out_path.name}?rev=1"             print(f"Preview: {url}", flush=True)
  • Network accessline 50
    url = f"http://{args.host}:{actual_port}/{out_path.name}?rev=1"

scripts/shapesearch.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/validate.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/validate_drawio.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/validate_replication_artifacts.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/validate_visual_quality.py

  • Executable scriptline 1
    #!/usr/bin/env python3

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 4 facts
Signal confidence: 54 facts

and 4 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.