Excalidraw Skill
yctimlin/mcp_excalidraw
Excalidraw canvas toolkit for creating, editing, and refining diagrams on a live canvas.
A skill your agent uses when the user wants to extract a Miro board's specs (documents, diagrams, prototypes, tables, frames, images) to local .miro/specs/ files for AI-assisted planning and…
$ npx skills add miroapp/miro-ai --skill miro-code-spec -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install miroapp/miro-ai miro-code-spec --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/miroapp/miro-ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/miro-code-spec .claude/skills/miro-code-spec && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "miro-code-spec" agent skill from https://github.com/miroapp/miro-ai/tree/main/skills/miro-code-spec into .claude/skills/miro-code-spec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "miro-code-spec", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/miroapp/miro-ai/tree/main/skills/miro-code-specType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add miroapp/miro-ai --skill miro-code-spec -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install miroapp/miro-ai miro-code-spec --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/miroapp/miro-ai.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/miro-code-spec .agents/skills/miro-code-spec && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "miro-code-spec" agent skill from https://github.com/miroapp/miro-ai/tree/main/skills/miro-code-spec into .agents/skills/miro-code-spec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "miro-code-spec", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add miroapp/miro-ai --skill miro-code-spec -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install miroapp/miro-ai miro-code-spec --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/miroapp/miro-ai.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/miro-code-spec .cursor/skills/miro-code-spec && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "miro-code-spec" agent skill from https://github.com/miroapp/miro-ai/tree/main/skills/miro-code-spec into .cursor/skills/miro-code-spec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "miro-code-spec", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/miroapp/miro-ai.git --path skills/miro-code-spec--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add miroapp/miro-ai --skill miro-code-spec -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install miroapp/miro-ai miro-code-spec --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/miroapp/miro-ai.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/miro-code-spec .gemini/skills/miro-code-spec && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "miro-code-spec" agent skill from https://github.com/miroapp/miro-ai/tree/main/skills/miro-code-spec into .gemini/skills/miro-code-spec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "miro-code-spec", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install miroapp/miro-ai miro-code-specInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add miroapp/miro-ai --skill miro-code-spec -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/miroapp/miro-ai.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/miro-code-spec .github/skills/miro-code-spec && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "miro-code-spec" agent skill from https://github.com/miroapp/miro-ai/tree/main/skills/miro-code-spec into .github/skills/miro-code-spec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "miro-code-spec", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add miroapp/miro-ai --skill miro-code-spec -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install miroapp/miro-ai miro-code-spec --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/miroapp/miro-ai.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/miro-code-spec .opencode/skills/miro-code-spec && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "miro-code-spec" agent skill from https://github.com/miroapp/miro-ai/tree/main/skills/miro-code-spec into .opencode/skills/miro-code-spec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "miro-code-spec", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
miro-code-specA skill your agent uses when the user wants to extract a Miro board's specs (documents, diagrams, prototypes, tables, frames, images) to local .miro/specs/ files for AI-assisted planning and…
Miro Code Spec is an agent skill from miroapp/miro-ai. Use when the user wants to extract a Miro board's specs (documents, diagrams, prototypes, tables, frames, images) to local .miro/specs/ files for AI-assisted planning and implementation — accepts a board URL or single-item URL.
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/spec-storage.md`).
It sits in Development, covering Diagrams. It works with Model Context Protocol. The repository describes itself as: Official Miro AI developer tools and integrations. Includes MCP server configuration, Claude Code skills, and resources for building AI-powered experiences with Miro boards. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b6408e1. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json and html).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
miro.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Miro Code Spec loads about 4.7k tokens when it runs, and up to ~7.8k if it reads all its reference files. Until then it costs about 61 tokens; SKILL.md has 2,197 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from miroapp/miro-ai at commit b6408e1, republished under its MIT licence (© miroapp). 2,197 words, ~4,705 tokens.
.claude/skills/miro-code-spec/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Extract specification content from a Miro board or item and save to .miro/specs/ so it can be referenced during planning and implementation without repeated API calls.
The user provides one URL: a board URL (extract all spec items) or an item URL with a moveToWidget / focusWidget parameter (extract that single item). Miro MCP must be available.
Decide whether the user gave a board URL (extract every spec item on the
board) or a single-item URL — i.e. a board URL with a moveToWidget or
focusWidget query parameter naming one item. Pass the URL through to Miro
MCP as-is — MCP handles the URL.
.miro/specs/ exists and has content..miro/specs/ directory already contains files. What should I do?".miro/specs/
├── documents/ # Markdown documents
├── diagrams/ # Diagram descriptions
├── prototypes/ # Containers (Markdown) and screens (HTML)
├── tables/ # Table JSON data
├── frames/ # Frame summaries
├── other/ # Unknown types (slides, etc.)
└── images/ # Extracted imagesFor Board URLs:
moveToWidget parameter), and title.For Item URLs:
🚨 THIS STEP IS MANDATORY — DO NOT SKIP
Create an internal checklist item for EVERY item discovered so nothing is missed.
Task structure:
Example with title:
Subject: "Extract document: Product Requirements"
Description: "Extract document item 3458764612345 from board. Save to .miro/specs/documents/3458764612345.md"
activeForm: "Extracting document: Product Requirements"Example without title:
Subject: "Extract diagram: 3458764612347"
Description: "Extract diagram item 3458764612347 from board. Save to .miro/specs/diagrams/3458764612347.md"
activeForm: "Extracting diagram: 3458764612347"⚠️ IMPORTANT: Task Count by Type
Create tasks according to this exact breakdown:
Critical: Prototype screens are NOT 1 task, they are 3 tasks. If you create only 1 task per screen, images will be missed.
Naming Convention:
This task creation step ensures: ✓ All items are tracked ✓ Nothing gets skipped ✓ Progress is visible ✓ Extraction workflow is structured
Create .miro/specs/index.json with initial structure:
{
"board_url": "original board URL",
"extracted_at": "ISO timestamp",
"items": [],
"images": [],
"summary": {
"total_items": 0,
"by_type": {},
"total_images": 0
}
}This file will be updated progressively as each item is extracted.
CRITICAL: You MUST write all content received from MCP tools to the file system immediately. Do not skip the file-writing step.
Workflow for each item (with task tracking and progressive index updates):
For most items (documents, diagrams, containers, frames, tables, other):
in_progressindex.json, add this item to the items array, then write the updated index.jsoncompletedFor prototype screens (MANDATORY subagent workflow):
Document items:
.miro/specs/documents/<board item ID>.mdindex.json with this itemDiagram items:
.miro/specs/diagrams/<board item ID>.mdindex.json with this itemPrototype container items:
.miro/specs/prototypes/<board item ID>-container.mdindex.json with this itemPrototype screen items (MANDATORY 3-task workflow via subagent):
⚠️ EACH PROTOTYPE SCREEN REQUIRES A SUBAGENT WITH 3 SEPARATE TASKS
Why subagent: the Miro MCP context tool returns large HTML for prototype screens, which bloats the main agent's context. A subagent keeps this contained — the large HTML never enters the main conversation.
For each prototype screen, launch a single subagent (with subagent_type: "general-purpose") that performs all 3 steps sequentially. Pass the subagent all necessary context:
Subagent prompt template:
Extract prototype screen and its images from Miro board.
Context:
- Miro board URL targeting the prototype screen: [url]
Execute these 3 tasks in order:
Task 1: Get and save HTML
- Call the appropriate Miro MCP item-retrieval tool with the item URL
- Save the returned raw HTML to .miro/specs/prototypes/<board item ID>-screen.html
- Read index.json, add this item to items array, Write updated index.json
Task 2: Extract images
- Read the saved HTML file
- Parse HTML for ALL image URLs in `src` attributes
- For EACH image URL found:
1. Extract resource ID from URL path
2. Call the appropriate Miro MCP image tool to obtain a download URL for the image
3. Take the download URL from response
4. Download: `curl -sL -o .miro/specs/images/<image resource ID>.png "[download_url]"`
5. Read index.json, add image entry to images array, Write updated index.json:
{"id": "<image resource ID>", "path": "images/<image resource ID>.png", "referenced_by": ["prototypes/<board item ID>-screen.html"]}
- If any download fails: log warning, continue with others
Task 3: Update image URLs in HTML
- Read the HTML file from .miro/specs/prototypes/<board item ID>-screen.html
- Replace ALL original image URLs with relative paths: src="../images/<image resource ID>.png"
- Save the updated HTML
- Verify all image src attributes now point to ../images/
Report back: number of images found, downloaded, and any failures.Main agent workflow for each screen:
in_progresscompleted⚠️ CRITICAL REQUIREMENTS FOR PROTOTYPE SCREENS:
Frame items:
.miro/specs/frames/<board item ID>.mdindex.json with this itemTable items:
.miro/specs/tables/<board item ID>.jsonindex.json with this itemUnknown/Other item types (e.g., slides, or any new types):
.miro/specs/other/<board item ID>.mdindex.json with this itemRead the current index.json and calculate the summary section:
total_items from items arrayby_type (group items by type field)total_images from images arrayUpdate index.json with the calculated summary:
{
"summary": {
"total_items": 8,
"by_type": {
"document": 2,
"diagram": 2,
"prototype": 2,
"table": 1,
"frame": 1
},
"total_images": 3
}
}MUST write the updated index.json.
Verification Checklist (MUST DO):
.miro/specs/ directories.miro/specs/images/ matches index.json total_imagesDisplay to user:
If verification fails, DO NOT report success:
🚨 These are the most common reasons extraction fails or is incomplete:
NOT CREATING TASKS
TREATING PROTOTYPE SCREENS AS 1 TASK
CALLING THE MCP CONTEXT TOOL FOR SCREENS FROM MAIN AGENT
NOT PARSING HTML FOR IMAGES
src attributes in HTMLNOT UPDATING IMAGE URLS IN HTML
../images/[id].pngNOT TRACKING IMAGE METADATA
index.jsonindex.json images arrayNOT VERIFYING COMPLETION
File Writing:
Directory Operations:
Output:
Prototype Screens:
Priority:
The miro-spec plugin extracts specification content from Miro boards and saves it to local files. This enables AI to reference specs during planning and implementation without requiring repeated API calls.
Use it when you need to:
| Type | Saves As | Contains |
|---|---|---|
| Documents | .md | Markdown content with formatting; preserved headings and structure |
| Diagrams | .md | AI-generated description; flow analysis and component relationships |
| Prototype containers | .md (suffix -container) | Markdown with navigation map |
| Prototype screens | .html (suffix -screen) | HTML markup with UI layout |
| Tables | .json | Structured data with column definitions and all row data |
| Frames | .md | AI-generated summary of frame contents |
| Images | .png | Automatically extracted from prototypes; named by Miro item ID |
Board URLs — extract complete specifications. Best for comprehensive spec extraction across all related documents and diagrams. Lists all items on the board, filters for spec-related types, extracts each individually.
Item URLs — extract a single document, diagram, or prototype screen. Best for targeted extraction or updating one item. Faster for single items; uses moveToWidget parameter.
src attributesOriginal HTML:
<img src="https://miro.com/api/v2/boards/uXjVK123abc=/images/3458764612345"/>After extraction:
<img src="../images/3458764612345.png"/>Benefits: images work offline, no API calls needed to view documents, faster local loading, and the extracted folder can be committed to version control.
Once specs are extracted, the user can ask their AI assistant to plan or implement against them. Example prompts:
.miro/specs/documents/ and create a technical implementation plan".miro/specs/diagrams/3458764612345.md and implement the database schema".miro/specs/prototypes/3458764612346-screen.html"The AI assistant reads the relevant files automatically during planning. Always check .miro/specs/index.json first to see what was extracted.
Extraction strategy:
Directory management:
.miro/specs/ in .gitignore if specs are temporaryWorking with specs:
index.json first to understand what's availablePerformance tips:
No items extracted from board:
Images not downloading:
Files not found after extraction:
.miro/specs/index.json for actual pathsLarge boards taking too long:
© miroapp, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/miro-code-spec of miroapp/miro-ai.
Open the folder on GitHubat commit b6408e1
Miro Code Spec next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Miro Code Spec this skillmiroapp/miro-ai | 160 | — | ~4.7k | Automated safety check: Pass | MIT | |
| Excalidraw Skillyctimlin/mcp_excalidraw | 2.5k | — | ~4.6k | Automated safety check: Pass | MIT | |
| GitDiagram Repository Overviewahmedkhaleel2004/gitdiagram | 18k | — | ~427 | Automated safety check: Pass | MIT | |
| Drawio Diagram BuilderWill-hxw/drawio-diagram-builder | 412 | — | ~5.9k | Automated safety check: Pass | MIT | |
| Drawiobahayonghang/drawio-skills | 286 | — | ~4.1k | Automated safety check: Notes | MIT | |
| Mermaid Diagramsveelenga/claude-mermaid | 214 | — | ~1.3k | Automated safety check: Pass | MIT |
yctimlin/mcp_excalidraw
Excalidraw canvas toolkit for creating, editing, and refining diagrams on a live canvas.
ahmedkhaleel2004/gitdiagram
Explains the architecture of a public GitHub repository through GitDiagram: how the code is organized, the main components with paths, and a Mermaid diagram.
Will-hxw/drawio-diagram-builder
Create, edit, replicate, and iteratively refine editable research and technical diagrams in diagrams.net/draw.io (.drawio XML) from prompts, papers, repositories, screenshots, or existing diagrams.
bahayonghang/drawio-skills
Create, edit, replicate, import, and export draw.io diagrams with an offline YAML-first workflow: architecture, network topologies, flowcharts, UML/ER, org charts, Mermaid/CSV conversion, existing…
veelenga/claude-mermaid
Creating and refining Mermaid diagrams with live reload. An agent skill from veelenga/claude-mermaid.
Snailclimb/AIGuide
Draw.io 配图专家:用于生成和导出 .drawio 图表。在用户要求 draw.io、diagrams.net、流程图、架构图、时序图、ER 图、状态图、思维导图,或明确提到 .drawio、PNG、SVG、PDF 导出、技术文章配图时使用。默认输出专业技术风格,并遵循 floracat-architecture-diagram 的视觉规范。
miroapp/miro-ai
Documentation architecture for this repository. An agent skill from miroapp/miro-ai.
miroapp/miro-ai
A skill your agent uses when the user wants to explain or visualize a codebase on a Miro board — produces a minimal, notation-correct set of architecture / structure / behavior diagrams (flowchart…
miroapp/miro-ai
A skill your agent uses when the user wants to create a visual code review on a Miro board from a pull/merge request (GitHub, GitLab, or any forge), local uncommitted changes, or a branch comparison…
miroapp/miro-ai
A skill your agent uses when authoring or revising plugin SKILL.md files in this repo.
Works with
Categories
A skill your agent uses when the user wants to extract a Miro board's specs (documents, diagrams, prototypes, tables, frames, images) to local .miro/specs/ files for AI-assisted planning and…. Miro Code Spec is an agent skill from miroapp/miro-ai.miro/specs/ files for AI-assisted planning and implementation — accepts a board URL or single-item URL.
Miro Code Spec fits situations like: the user wants to extract a Miro boards specs (documents; images) to local .miro/specs/ files for AI-assisted planning and implementation — accepts a board URL; single-item URL.
Run `npx skills add miroapp/miro-ai --skill miro-code-spec -a claude-code`. Or copy the skill folder (skills/miro-code-spec in miroapp/miro-ai) into .claude/skills/miro-code-spec in your project. Claude Code loads it when a task matches its description.
Run `npx skills add miroapp/miro-ai --skill miro-code-spec -a codex`. Or copy the skill folder (skills/miro-code-spec in miroapp/miro-ai) into .agents/skills/miro-code-spec in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add miroapp/miro-ai --skill miro-code-spec -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/miro-code-spec, .gemini/skills/miro-code-spec, .github/skills/miro-code-spec and .opencode/skills/miro-code-spec in your project.
SKILL.md names no scripts, command-line tools or credentials: Miro Code Spec is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: miro.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Miro Code Spec is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Miro Code Spec: Excalidraw Skill (yctimlin/mcp_excalidraw, 2.5k stars), GitDiagram Repository Overview (ahmedkhaleel2004/gitdiagram, 18k stars), Drawio Diagram Builder (Will-hxw/drawio-diagram-builder, 412 stars) and Drawio (bahayonghang/drawio-skills, 286 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
miroapp (a GitHub organization) maintains it in miroapp/miro-ai, which has 160 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on September 17, 2026.
Source: miroapp/miro-ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.