plugins/drawio-diagramming/skills/wireframes-mockups/SKILL.md
UI/UX wireframe and mockup generation in draw.io at lo-fi, mid-fi, and hi-fi fidelity levels
npx skillsauth add markus41/claude plugins/drawio-diagramming/skills/wireframes-mockupsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Level | Purpose | Detail | When to Use | |-------|---------|--------|-------------| | Lo-fi | Concept exploration | Gray boxes, placeholder text, no color | Early ideation, stakeholder alignment | | Mid-fi | Layout validation | Real labels, basic styling, grayscale | Design review, developer handoff prep | | Hi-fi | Visual design | Brand colors, icons, realistic content | Client presentation, pixel-perfect handoff |
Enable wireframe shapes in draw.io: File > Open Library > wireframe or search "mockup" in shapes panel.
| Library | Prefix | Contains |
|---------|--------|----------|
| Mockup Buttons | mxgraph.mockup.buttons | Buttons, toggles, radio, checkboxes |
| Mockup Containers | mxgraph.mockup.containers | Windows, dialogs, panels, cards |
| Mockup Forms | mxgraph.mockup.forms | Input fields, dropdowns, sliders, search bars |
| Mockup Graphics | mxgraph.mockup.graphics | Icons, avatars, image placeholders |
| Mockup Markup | mxgraph.mockup.markup | Headlines, paragraphs, lists, links |
| Mockup Navigation | mxgraph.mockup.navigation | Navbars, tabs, breadcrumbs, sidebars |
| Mockup Text | mxgraph.mockup.text | Labels, tooltips, badges |
| Android | mxgraph.android | Android-native UI components |
| iOS | mxgraph.ios7 | iOS-native UI components |
| Bootstrap | mxgraph.bootstrap | Bootstrap grid, components |
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- Browser chrome -->
<mxCell id="browser" value="My App - Chrome" style="shape=mxgraph.mockup.containers.browserWindow;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#666666;mainText=;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="800" height="560" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
<mxCell id="phone" value="" style="shape=mxgraph.ios7.phone;fillColor=#FFFFFF;strokeColor=#333333;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="240" height="480" as="geometry"/>
</mxCell>
<mxCell id="android" value="" style="shape=mxgraph.android.phone2;fillColor=#FFFFFF;strokeColor=#333333;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="240" height="480" as="geometry"/>
</mxCell>
<mxCell id="tablet" value="" style="shape=mxgraph.ios7.ipad;fillColor=#FFFFFF;strokeColor=#333333;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="480" height="640" as="geometry"/>
</mxCell>
fillColor=#F5F5F5; (light gray) or fillColor=none;strokeColor=#999999; (medium gray)fontColor=#666666;fontSize=12;fontFamily=Helvetica;X pattern for image placeholders: shape=mxgraph.mockup.graphics.simpleIcon;<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- Header bar -->
<mxCell id="header" value="Logo" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E0E0E0;strokeColor=#999999;fontColor=#666666;fontSize=14;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="0" y="0" width="800" height="60" as="geometry"/>
</mxCell>
<!-- Navigation -->
<mxCell id="nav1" value="Home" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#666666;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="120" y="18" width="60" height="24" as="geometry"/>
</mxCell>
<mxCell id="nav2" value="Products" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#666666;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="200" y="18" width="80" height="24" as="geometry"/>
</mxCell>
<mxCell id="nav3" value="About" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#666666;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="300" y="18" width="60" height="24" as="geometry"/>
</mxCell>
<!-- Hero section -->
<mxCell id="hero" value="Hero Image Area" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#CCCCCC;strokeWidth=2;dashed=1;fontColor=#999999;fontSize=16;" vertex="1" parent="1">
<mxGeometry x="0" y="60" width="800" height="300" as="geometry"/>
</mxCell>
<!-- Content cards -->
<mxCell id="card1" value="<b>Card Title</b><br>Description text here" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#CCCCCC;align=left;verticalAlign=top;spacingLeft=12;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="20" y="380" width="240" height="140" as="geometry"/>
</mxCell>
<mxCell id="card2" value="<b>Card Title</b><br>Description text here" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#CCCCCC;align=left;verticalAlign=top;spacingLeft=12;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="280" y="380" width="240" height="140" as="geometry"/>
</mxCell>
<mxCell id="card3" value="<b>Card Title</b><br>Description text here" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#CCCCCC;align=left;verticalAlign=top;spacingLeft=12;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="540" y="380" width="240" height="140" as="geometry"/>
</mxCell>
<!-- Footer -->
<mxCell id="footer" value="Footer" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E0E0E0;strokeColor=#999999;fontColor=#666666;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="0" y="540" width="800" height="40" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
#FFFFFF) with light gray accents (#F5F5F5)strokeColor=#CCCCCC; or #AAAAAAfillColor=#333333;fontColor=#FFFFFF; (dark button)fontColor=#333333;fontSize=13;fontFamily=Inter;shadow=0; (still no shadows at mid-fi)<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- Form container -->
<mxCell id="form" value="Create Account" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CCCCCC;verticalAlign=top;fontStyle=1;fontSize=16;fontColor=#333333;spacingTop=12;align=center;" vertex="1" parent="1">
<mxGeometry x="200" y="40" width="400" height="420" as="geometry"/>
</mxCell>
<!-- Email field -->
<mxCell id="emailLabel" value="Email address" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#666666;fontSize=12;align=left;" vertex="1" parent="1">
<mxGeometry x="230" y="90" width="120" height="20" as="geometry"/>
</mxCell>
<mxCell id="emailInput" value="[email protected]" style="shape=mxgraph.mockup.forms.rrect;rSize=4;fillColor=#FFFFFF;strokeColor=#CCCCCC;fontColor=#AAAAAA;fontSize=13;align=left;spacingLeft=8;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="230" y="112" width="340" height="36" as="geometry"/>
</mxCell>
<!-- Password field -->
<mxCell id="passLabel" value="Password" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#666666;fontSize=12;align=left;" vertex="1" parent="1">
<mxGeometry x="230" y="164" width="120" height="20" as="geometry"/>
</mxCell>
<mxCell id="passInput" value="••••••••" style="shape=mxgraph.mockup.forms.rrect;rSize=4;fillColor=#FFFFFF;strokeColor=#CCCCCC;fontColor=#AAAAAA;fontSize=13;align=left;spacingLeft=8;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="230" y="186" width="340" height="36" as="geometry"/>
</mxCell>
<!-- Checkbox -->
<mxCell id="terms" value="I agree to Terms of Service" style="shape=mxgraph.mockup.forms.checkbox;fillColor=#FFFFFF;strokeColor=#CCCCCC;fontColor=#666666;fontSize=12;html=1;align=left;spacingLeft=6;" vertex="1" parent="1">
<mxGeometry x="230" y="240" width="200" height="20" as="geometry"/>
</mxCell>
<!-- Submit button -->
<mxCell id="submit" value="Create Account" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#333333;strokeColor=#222222;fontColor=#FFFFFF;fontSize=14;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="230" y="280" width="340" height="40" as="geometry"/>
</mxCell>
<!-- Divider -->
<mxCell id="divider" value="" style="line;strokeWidth=1;strokeColor=#EEEEEE;html=1;" vertex="1" parent="1">
<mxGeometry x="230" y="340" width="340" height="1" as="geometry"/>
</mxCell>
<!-- Secondary action -->
<mxCell id="signin" value="Already have an account? <u>Sign in</u>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#666666;fontSize=12;align=center;" vertex="1" parent="1">
<mxGeometry x="300" y="360" width="200" height="24" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
shadow=1; on cards and modalsrounded=1;arcSize=8; for modern lookfontSize=14;fontFamily=Inter; with weight hierarchymxgraph.mockup.graphics or inline SVG<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- Sidebar -->
<mxCell id="sidebar" value="" style="rounded=0;fillColor=#1A1A2E;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="0" y="0" width="220" height="640" as="geometry"/>
</mxCell>
<mxCell id="logo" value="<font color="#FFFFFF" style="font-size:18px"><b>Dashboard</b></font>" style="text;html=1;fillColor=none;strokeColor=none;align=left;spacingLeft=16;" vertex="1" parent="1">
<mxGeometry x="0" y="16" width="220" height="40" as="geometry"/>
</mxCell>
<mxCell id="navItem1" value="<font color="#FFFFFF">Overview</font>" style="rounded=1;fillColor=#16213E;strokeColor=none;html=1;align=left;spacingLeft=40;fontColor=#FFFFFF;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="12" y="80" width="196" height="36" as="geometry"/>
</mxCell>
<mxCell id="navItem2" value="<font color="#A0A0B0">Analytics</font>" style="rounded=1;fillColor=none;strokeColor=none;html=1;align=left;spacingLeft=40;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="12" y="120" width="196" height="36" as="geometry"/>
</mxCell>
<mxCell id="navItem3" value="<font color="#A0A0B0">Settings</font>" style="rounded=1;fillColor=none;strokeColor=none;html=1;align=left;spacingLeft=40;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="12" y="160" width="196" height="36" as="geometry"/>
</mxCell>
<!-- Main content area -->
<mxCell id="main" value="" style="rounded=0;fillColor=#F8F9FA;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="220" y="0" width="780" height="640" as="geometry"/>
</mxCell>
<!-- Top bar -->
<mxCell id="topbar" value="" style="rounded=0;fillColor=#FFFFFF;strokeColor=none;shadow=1;" vertex="1" parent="1">
<mxGeometry x="220" y="0" width="780" height="56" as="geometry"/>
</mxCell>
<mxCell id="pageTitle" value="<b>Overview</b>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#1A1A2E;fontSize=18;align=left;spacingLeft=24;" vertex="1" parent="1">
<mxGeometry x="220" y="12" width="200" height="32" as="geometry"/>
</mxCell>
<!-- Metric cards row -->
<mxCell id="metric1" value="<font color="#666" style="font-size:12px">Total Users</font><br><b style="font-size:28px;color:#1A1A2E">12,847</b><br><font color="#22C55E" style="font-size:12px">+12.5%</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#E5E7EB;shadow=1;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" vertex="1" parent="1">
<mxGeometry x="248" y="80" width="230" height="110" as="geometry"/>
</mxCell>
<mxCell id="metric2" value="<font color="#666" style="font-size:12px">Revenue</font><br><b style="font-size:28px;color:#1A1A2E">$48.2K</b><br><font color="#22C55E" style="font-size:12px">+8.1%</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#E5E7EB;shadow=1;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" vertex="1" parent="1">
<mxGeometry x="498" y="80" width="230" height="110" as="geometry"/>
</mxCell>
<mxCell id="metric3" value="<font color="#666" style="font-size:12px">Conversion</font><br><b style="font-size:28px;color:#1A1A2E">3.24%</b><br><font color="#EF4444" style="font-size:12px">-0.8%</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#E5E7EB;shadow=1;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" vertex="1" parent="1">
<mxGeometry x="748" y="80" width="230" height="110" as="geometry"/>
</mxCell>
<!-- Chart placeholder -->
<mxCell id="chart" value="<b>Revenue Trend</b>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#E5E7EB;shadow=1;verticalAlign=top;spacingTop=16;spacingLeft=20;align=left;fontSize=14;fontColor=#1A1A2E;" vertex="1" parent="1">
<mxGeometry x="248" y="216" width="480" height="280" as="geometry"/>
</mxCell>
<!-- Table card -->
<mxCell id="table" value="<b>Recent Activity</b>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#E5E7EB;shadow=1;verticalAlign=top;spacingTop=16;spacingLeft=20;align=left;fontSize=14;fontColor=#1A1A2E;" vertex="1" parent="1">
<mxGeometry x="248" y="520" width="730" height="100" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
<mxCell id="iosNav" value="" style="rounded=0;fillColor=#F8F8F8;strokeColor=#C8C8CC;" vertex="1" parent="1">
<mxGeometry x="0" y="0" width="375" height="44" as="geometry"/>
</mxCell>
<mxCell id="iosTitle" value="<b>Screen Title</b>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#000000;fontSize=17;fontFamily=SF Pro Display;align=center;" vertex="1" parent="1">
<mxGeometry x="100" y="10" width="175" height="24" as="geometry"/>
</mxCell>
<mxCell id="iosBack" value="<font color="#007AFF">&lt; Back</font>" style="text;html=1;fillColor=none;strokeColor=none;fontSize=17;align=left;spacingLeft=8;" vertex="1" parent="1">
<mxGeometry x="0" y="10" width="80" height="24" as="geometry"/>
</mxCell>
<mxCell id="tabBar" value="" style="rounded=0;fillColor=#F8F8F8;strokeColor=#C8C8CC;" vertex="1" parent="1">
<mxGeometry x="0" y="768" width="375" height="49" as="geometry"/>
</mxCell>
<mxCell id="tab1" value="<font style="font-size:10px">Home</font>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#007AFF;align=center;" vertex="1" parent="1">
<mxGeometry x="10" y="778" width="65" height="30" as="geometry"/>
</mxCell>
<mxCell id="tab2" value="<font style="font-size:10px">Search</font>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#8E8E93;align=center;" vertex="1" parent="1">
<mxGeometry x="85" y="778" width="65" height="30" as="geometry"/>
</mxCell>
<mxCell id="tab3" value="<font style="font-size:10px">Profile</font>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#8E8E93;align=center;" vertex="1" parent="1">
<mxGeometry x="160" y="778" width="65" height="30" as="geometry"/>
</mxCell>
<mxCell id="androidNav" value="" style="rounded=0;fillColor=#FFFFFF;strokeColor=#E0E0E0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="0" y="752" width="360" height="56" as="geometry"/>
</mxCell>
<mxCell id="anTab1" value="<font color="#6200EE" style="font-size:10px"><b>Home</b></font>" style="text;html=1;fillColor=none;strokeColor=none;align=center;" vertex="1" parent="1">
<mxGeometry x="20" y="764" width="60" height="32" as="geometry"/>
</mxCell>
<mxCell id="anTab2" value="<font color="#666" style="font-size:10px">Search</font>" style="text;html=1;fillColor=none;strokeColor=none;align=center;" vertex="1" parent="1">
<mxGeometry x="100" y="764" width="60" height="32" as="geometry"/>
</mxCell>
When designing for multiple screen sizes, create separate pages in the .drawio file:
| Breakpoint | Width | Name | Use |
|------------|-------|------|-----|
| Mobile | 375px | mobile | iPhone SE / standard phones |
| Tablet | 768px | tablet | iPad / tablets |
| Desktop | 1280px | desktop | Standard laptop/desktop |
| Wide | 1440px | wide | Large monitors |
<mxfile>
<diagram id="mobile" name="Mobile (375px)">
<mxGraphModel dx="375" dy="812" grid="1" gridSize="8">
<root><mxCell id="0"/><mxCell id="1" parent="0"/></root>
</mxGraphModel>
</diagram>
<diagram id="tablet" name="Tablet (768px)">
<mxGraphModel dx="768" dy="1024" grid="1" gridSize="8">
<root><mxCell id="0"/><mxCell id="1" parent="0"/></root>
</mxGraphModel>
</diagram>
<diagram id="desktop" name="Desktop (1280px)">
<mxGraphModel dx="1280" dy="800" grid="1" gridSize="8">
<root><mxCell id="0"/><mxCell id="1" parent="0"/></root>
</mxGraphModel>
</diagram>
</mxfile>
<!-- Table header row -->
<mxCell id="thRow" value="" style="rounded=0;fillColor=#F9FAFB;strokeColor=#E5E7EB;" vertex="1" parent="1">
<mxGeometry x="0" y="0" width="700" height="40" as="geometry"/>
</mxCell>
<mxCell id="th1" value="<b>Name</b>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#6B7280;fontSize=12;align=left;spacingLeft=16;" vertex="1" parent="1">
<mxGeometry x="0" y="8" width="200" height="24" as="geometry"/>
</mxCell>
<mxCell id="th2" value="<b>Status</b>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#6B7280;fontSize=12;align=left;spacingLeft=16;" vertex="1" parent="1">
<mxGeometry x="200" y="8" width="150" height="24" as="geometry"/>
</mxCell>
<mxCell id="th3" value="<b>Date</b>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#6B7280;fontSize=12;align=left;spacingLeft=16;" vertex="1" parent="1">
<mxGeometry x="350" y="8" width="150" height="24" as="geometry"/>
</mxCell>
<!-- Data row -->
<mxCell id="row1" value="" style="rounded=0;fillColor=#FFFFFF;strokeColor=#E5E7EB;" vertex="1" parent="1">
<mxGeometry x="0" y="40" width="700" height="44" as="geometry"/>
</mxCell>
<mxCell id="r1c1" value="John Smith" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#111827;fontSize=13;align=left;spacingLeft=16;" vertex="1" parent="1">
<mxGeometry x="0" y="50" width="200" height="24" as="geometry"/>
</mxCell>
<!-- Status badge -->
<mxCell id="r1c2" value="Active" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=none;fontColor=#166534;fontSize=11;arcSize=50;" vertex="1" parent="1">
<mxGeometry x="216" y="52" width="60" height="22" as="geometry"/>
</mxCell>
<!-- Overlay backdrop -->
<mxCell id="overlay" value="" style="rounded=0;fillColor=#000000;opacity=50;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="0" y="0" width="1000" height="640" as="geometry"/>
</mxCell>
<!-- Modal -->
<mxCell id="modal" value="" style="rounded=1;fillColor=#FFFFFF;strokeColor=#E5E7EB;shadow=1;arcSize=4;" vertex="1" parent="1">
<mxGeometry x="300" y="160" width="400" height="280" as="geometry"/>
</mxCell>
<mxCell id="modalTitle" value="<b>Confirm Action</b>" style="text;html=1;fillColor=none;strokeColor=none;fontColor=#111827;fontSize=16;align=left;spacingLeft=24;" vertex="1" parent="1">
<mxGeometry x="300" y="176" width="340" height="28" as="geometry"/>
</mxCell>
<mxCell id="modalBody" value="Are you sure you want to proceed? This action cannot be undone." style="text;html=1;fillColor=none;strokeColor=none;fontColor=#6B7280;fontSize=13;align=left;spacingLeft=24;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="300" y="216" width="360" height="60" as="geometry"/>
</mxCell>
<!-- Buttons -->
<mxCell id="cancelBtn" value="Cancel" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D1D5DB;fontColor=#374151;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="480" y="380" width="90" height="36" as="geometry"/>
</mxCell>
<mxCell id="confirmBtn" value="Confirm" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#EF4444;strokeColor=#DC2626;fontColor=#FFFFFF;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="580" y="380" width="90" height="36" as="geometry"/>
</mxCell>
<mxCell id="toast" value="<b>Success!</b> Your changes have been saved." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#BBF7D0;fontColor=#166534;fontSize=13;shadow=1;align=left;spacingLeft=40;arcSize=6;" vertex="1" parent="1">
<mxGeometry x="540" y="20" width="360" height="48" as="geometry"/>
</mxCell>
Use annotation shapes to communicate design decisions:
<!-- Annotation callout -->
<mxCell id="annotation" value="<font color="#DC2626"><b>Note:</b> This section collapses on mobile</font>" style="shape=callout;whiteSpace=wrap;html=1;fillColor=#FEF2F2;strokeColor=#FCA5A5;fontSize=11;perimeter=calloutPerimeter;position2=0.5;base=20;size=12;" vertex="1" parent="1">
<mxGeometry x="500" y="200" width="200" height="60" as="geometry"/>
</mxCell>
| Color | Hex | Meaning |
|-------|-----|---------|
| Red | #DC2626 | Critical / must-fix |
| Orange | #EA580C | Question / needs decision |
| Blue | #2563EB | Developer note / implementation detail |
| Green | #16A34A | Approved / signed-off |
| Purple | #9333EA | Accessibility note |
Connect wireframe screens to show user navigation:
<!-- Screen 1 thumbnail -->
<mxCell id="screen1" value="<b>Login</b>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D1D5DB;shadow=1;verticalAlign=bottom;spacingBottom=8;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="160" height="240" as="geometry"/>
</mxCell>
<!-- Screen 2 thumbnail -->
<mxCell id="screen2" value="<b>Dashboard</b>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D1D5DB;shadow=1;verticalAlign=bottom;spacingBottom=8;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="320" y="40" width="160" height="240" as="geometry"/>
</mxCell>
<!-- Flow arrow -->
<mxCell id="flow1" value="Login success" style="edgeStyle=orthogonalEdgeStyle;rounded=1;strokeColor=#6B7280;fontColor=#6B7280;fontSize=11;" edge="1" source="screen1" target="screen2" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
gridSize=8) for consistent spacing.drawio.svg for GitHub PRs, PNG for Slack/emaildevelopment
Enhanced plan-authoring skill with Pre-Writing context gathering, task metadata, non-TDD templates, Red Flags, telemetry, and an automated plan linter. Use when you have a spec or requirements for a multi-step task, before touching code.
tools
Documentation intelligence engine with graph-based API docs, algorithm library, and drift detection
tools
Ultraplan cloud planning — kick off a plan in the cloud from your terminal, review and revise in the browser, then execute remotely or send back to CLI
tools
--- name: mcp description: Configure MCP servers for Claude Code — stdio vs HTTP, authentication, Tools/Resources/Prompts distinction, channels (CI webhook, mobile relay, Discord bridge, fakechat), and cost of always-loaded tools. Use this skill whenever adding an MCP server, debugging connection issues, choosing between MCP Tools vs Prompts vs Resources, installing channel servers, or managing .mcp.json. Triggers on: "MCP server", "mcp config", "add Obsidian MCP", "install context7", "channels"