
Wireframe Sketch
- 266 installs
- 83.7k repo stars
- Updated August 5, 2026
- nexu-io/open-design
wireframe-sketch is an Open Design skill that produces low-fidelity hand-drawn wireframe HTML sketches on graph paper for developers who need to validate information architecture before high-fidelity UI or code.
About
wireframe-sketch is an Open Design skill from nexu-io/open-design that generates lo-fi, hand-drawn wireframe artifacts emphasizing structure over polished UI. Output is a single HTML file with inline CSS, marker-style fonts, wobbly lines, hatched chart placeholders, sticky-note annotations, slight rotations, and highlighter swipes on graph-paper backgrounds so stakeholders focus on layout instead of button colors. The skill supports tabbed layouts for exploring variants side by side and responds to briefs asking for whiteboard style, sketch mockups, or early-stage thinking without production commitments. Developers reach for wireframe-sketch during discovery when validating navigation flows, dashboard IA, or mobile screen sequences before invoking higher-fidelity Open Design skills like mobile-app or saas-landing. Install via npx skills add against the open-design repository. The deliberate unfinished aesthetic signals work-in-progress status and pairs well with Open Design sandboxed preview for quick stakeholder reviews without Figma or native code.
- Low-fidelity layout
- IA exploration
- Fast iteration
- Flow mapping
- Stakeholder feedback
Wireframe Sketch by the numbers
- 266 all-time installs (skills.sh)
- +1 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #858 of 1,880 Design & UI/UX skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/nexu-io/open-design --skill wireframe-sketchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 266 |
|---|---|
| repo stars | ★ 83.7k |
| Last updated | August 5, 2026 |
| Repository | nexu-io/open-design ↗ |
How do you sketch lo-fi wireframes for IA review?
Produce low-fidelity wireframe sketches to test information architecture and flows before committing to visual design or production code.
Who is it for?
Developers and designers exploring layout variants and information architecture before committing to high-fidelity mockups or frontend implementation.
Skip if: Final marketing pages, brand-polished UI kits, or pixel-perfect device mockups that need Open Design's mobile-app or saas-landing skills instead.
When should I use this skill?
The user asks for lo-fi wireframes, whiteboard sketches, graph-paper mockups, or early IA exploration inside Open Design.
What you get
Single HTML wireframe file with inline CSS, marker fonts, hatched placeholders, and optional tabbed layout variants.
- wireframe HTML file with inline CSS
By the numbers
- Outputs a single self-contained HTML wireframe file with inline CSS
Files
Wireframe Sketch Skill
Produce a single hand-drawn wireframe page. The whole point is "this is a sketch" — looseness is the brand. Lean into pencil/marker tones, hatched fills, dashed borders, slight rotations.
Workflow
1. Skip the DESIGN.md if it pushes for finished UI. This skill explicitly wants a low-fidelity look. Only honor type tokens loosely (system serif for headlines, mono for annotations, marker font fallback). 2. Pick the screen variants from the brief — typically 3–4 tab labels like "01 · A · ORGANIZED", "02 · B · DASHBOARD", etc. One is "active", the rest are inactive sketch tabs. 3. Layout, in order:
- Page header — bold serif title with a fake "WIREFRAME v0.1" tag
pinned next to it (dashed border, slight rotation). Below: one-line subtitle in marker italic + a date / device / fidelity dateline on the right in mono.
- Tab strip — 4–5 labels with marker check-square glyphs. The active
one has a highlighter swipe behind it (yellow / orange tint + slight skew).
- Sketch canvas — a graph-paper card (background: 24px × 24px grid
drawn with linear-gradient lines), with a thick rounded border drawn to look like a sharpie line.
- Browser chrome row — three sketched circles + a fake URL bar with
a hand-written-style URL.
- Sidebar nav — sketched checkbox + label for each nav item, marker
italic. One has a highlighter line through it (active).
- KPI tiles — 3–4 boxes, each with a chunky scribbled number in a
marker-style stroke, a tiny accent stamp, and a one-line label.
- Chart placeholder — a card with a hand-drawn axis and a wobbly
polyline. Add 3–4 dot markers.
- Bar chart placeholder — a card with hatched-fill rectangles of
varying heights.
- Sticky notes — 1–2 yellow / pink notes with marker text, taped
with a slightly rotated band, pinned over key regions to call out "next step", "page-1", or "needs review". 4. Write a single HTML document:
<!doctype html>through</html>, CSS inline.- Use the system's available "Caveat", "Patrick Hand", or "Architects
Daughter" fonts via Google Fonts; otherwise fall back to italic serif.
- Slight rotations everywhere (
transform: rotate(-0.6deg)) to break
the grid and feel hand-drawn.
data-od-idon header, tabs, sidebar, KPIs, chart, bar-chart,
sticky notes. 5. Self-check:
- The page should not look pixel-perfect. If it does, you over-rendered.
- Marker / pencil + graph paper + hatched fills + sticky notes are all
present; if any is missing, add it.
- The active tab has the highlighter swipe; the others don't.
Output contract
Emit between <artifact> tags:
<artifact identifier="wireframe-slug" type="text/html" title="Wireframe — Title">
<!doctype html>
<html>...</html>
</artifact>One sentence before the artifact, nothing after.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Zentou AI Portal — Wireframe v0.1</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Caveat:wght@500;700&family=Patrick+Hand&family=DM+Serif+Display&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet" />
<style>
:root {
--paper: #fbf6ec;
--paper-tint: #f5eedf;
--ink: #2b2620;
--pencil: #4d473d;
--rule: #c8bfa9;
--grid: #e3d8b8;
--accent: #d8482b;
--highlight: #f9d27c;
--note-yellow: #fff19a;
--note-pink: #ffd5c9;
--serif: 'DM Serif Display', 'Iowan Old Style', Georgia, serif;
--hand: 'Patrick Hand', 'Caveat', cursive;
--hand-bold: 'Caveat', 'Patrick Hand', cursive;
--mono: 'IBM Plex Mono', ui-monospace, monospace;
}
* { box-sizing: border-box; }
body {
margin: 0;
color: var(--ink);
background:
radial-gradient(circle, rgba(43,38,32,0.04) 1px, transparent 1.4px) 0 0 / 22px 22px,
var(--paper);
font: 16px/1.5 var(--hand);
}
.page { padding: 32px 48px 56px; max-width: 1320px; margin: 0 auto; }
.head { display: grid; grid-template-columns: auto 1fr auto; gap: 24px; align-items: end; padding-bottom: 14px; border-bottom: 2px solid var(--ink); }
.head h1 { font: 800 56px/1 var(--serif); margin: 0; letter-spacing: -0.005em; display: flex; align-items: center; gap: 18px; }
.head h1 em { font-style: italic; }
.pin { display: inline-flex; align-items: center; gap: 8px; font: 12px/1 var(--mono); padding: 6px 10px; border: 1.5px dashed var(--accent); color: var(--accent); transform: rotate(-2.2deg); letter-spacing: 0.18em; background: var(--paper); }
.pin .x { width: 6px; height: 6px; background: var(--accent); transform: rotate(45deg); }
.head .sub { font: 18px/1.4 var(--hand); color: var(--pencil); }
.head .meta { font: 11px/1.4 var(--mono); color: var(--pencil); letter-spacing: 0.14em; text-align: right; text-transform: uppercase; }
.head .meta b { color: var(--ink); }
.tabs { display: flex; gap: 8px; padding: 18px 0 12px; flex-wrap: wrap; }
.tab { font: 16px/1 var(--hand); padding: 10px 14px; display: inline-flex; align-items: center; gap: 8px; color: var(--pencil); position: relative; transform: rotate(-0.4deg); }
.tab .num { font: 11px/1 var(--mono); color: var(--pencil); padding: 4px 6px; border: 1.5px solid var(--pencil); letter-spacing: 0.06em; }
.tab.active { color: var(--ink); }
.tab.active::before { content: ''; position: absolute; left: -2px; right: -2px; top: 4px; bottom: 6px; background: var(--highlight); transform: skew(-8deg); z-index: -1; opacity: 0.85; }
.tab.active .num { border-color: var(--ink); color: var(--ink); }
.tab .glyph { width: 14px; height: 14px; border: 1.5px solid currentColor; display: inline-block; }
.canvas {
position: relative;
background:
repeating-linear-gradient(0deg, var(--grid) 0 1px, transparent 1px 24px),
repeating-linear-gradient(90deg, var(--grid) 0 1px, transparent 1px 24px),
var(--paper-tint);
border: 3px solid var(--ink);
border-radius: 14px;
padding: 26px 26px 32px;
box-shadow: 6px 8px 0 -4px rgba(43,38,32,0.18);
}
.canvas .section-label { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.canvas h2 { font: 800 30px/1 var(--serif); margin: 0; }
.canvas .pill { font: 12px/1 var(--mono); padding: 5px 9px; border: 1.5px solid var(--pencil); border-radius: 999px; color: var(--pencil); letter-spacing: 0.12em; transform: rotate(1.2deg); }
.canvas .lede { font: 17px/1.5 var(--hand); color: var(--pencil); margin: 0 0 18px; max-width: 70ch; }
.browser { display: flex; align-items: center; gap: 10px; padding: 9px 14px; border: 2px solid var(--pencil); border-radius: 999px; background: var(--paper); margin-bottom: 16px; }
.browser .dots { display: flex; gap: 6px; }
.browser .dots span { width: 11px; height: 11px; border-radius: 50%; border: 1.5px solid var(--pencil); }
.browser .url { flex: 1; font: 14px/1 var(--hand); color: var(--pencil); }
.browser .user { font: 14px/1 var(--hand); color: var(--pencil); }
.layout { display: grid; grid-template-columns: 200px 1fr; gap: 22px; }
aside.nav { padding: 10px 0; }
aside.nav .brand { font: 800 28px/1 var(--serif); font-style: italic; padding: 4px 6px; border-bottom: 2px solid var(--ink); display: inline-block; margin-bottom: 18px; }
aside.nav ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
aside.nav li { font: 17px/1.2 var(--hand); display: flex; align-items: center; gap: 10px; padding: 6px 6px; position: relative; }
aside.nav li .square { width: 14px; height: 14px; border: 1.5px solid var(--pencil); display: inline-block; flex-shrink: 0; }
aside.nav li.active { color: var(--ink); }
aside.nav li.active::before {
content: ''; position: absolute; left: -4px; right: -8px; top: 4px; bottom: 6px;
background: var(--highlight); opacity: 0.6; transform: skew(-6deg); z-index: -1;
}
.greeting { font: 14px/1.4 var(--hand); color: var(--pencil); }
.name { font: 800 28px/1 var(--serif); font-style: italic; margin: 2px 0 4px; }
.toggle-row { display: inline-flex; gap: 6px; padding: 4px; border: 1.5px solid var(--pencil); border-radius: 999px; }
.toggle-row .tag { font: 13px/1 var(--hand); padding: 6px 10px; border-radius: 999px; color: var(--pencil); }
.toggle-row .tag.active { background: var(--highlight); color: var(--ink); }
.kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin: 16px 0; }
.kpi { border: 2px solid var(--pencil); border-radius: 10px; padding: 14px; background: var(--paper); position: relative; }
.kpi .label { font: 13px/1 var(--mono); color: var(--pencil); letter-spacing: 0.14em; text-transform: uppercase; }
.kpi .value { font: 800 44px/1 var(--serif); margin-top: 8px; color: var(--accent); }
.kpi .value.ink { color: var(--ink); }
.kpi .small { font: 12px/1.4 var(--hand); color: var(--pencil); margin-top: 6px; }
.kpi.tilt-1 { transform: rotate(-0.6deg); }
.kpi.tilt-2 { transform: rotate(0.4deg); }
.kpi.tilt-3 { transform: rotate(-0.2deg); }
.kpi.tilt-4 { transform: rotate(0.7deg); }
.panels { display: grid; grid-template-columns: 1.4fr 1fr; gap: 14px; }
.panel { border: 2px solid var(--pencil); border-radius: 10px; padding: 14px; background: var(--paper); position: relative; }
.panel h3 { font: 700 16px/1 var(--mono); letter-spacing: 0.12em; text-transform: uppercase; margin: 0 0 14px; color: var(--pencil); display: flex; align-items: center; gap: 8px; }
.panel h3 .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--accent); }
.panel svg.scribble { width: 100%; height: 160px; display: block; }
.sticky {
position: absolute;
padding: 10px 12px;
font: 16px/1.3 var(--hand);
box-shadow: 4px 6px 0 -2px rgba(43,38,32,0.18);
max-width: 220px;
}
.sticky.sn1 { top: 20px; right: 30px; background: var(--note-yellow); transform: rotate(2.4deg); }
.sticky.sn2 { top: 380px; right: 90px; background: var(--note-pink); transform: rotate(-3.2deg); }
.sticky .tape { position: absolute; top: -10px; left: 30px; width: 70px; height: 18px; background: rgba(43,38,32,0.18); transform: rotate(-4deg); }
.sticky b { font-family: var(--hand-bold); font-weight: 700; }
.events { padding: 12px 14px; border: 2px dashed var(--pencil); border-radius: 10px; margin-top: 14px; background: var(--paper); }
.events .label { font: 13px/1 var(--mono); letter-spacing: 0.14em; color: var(--accent); text-transform: uppercase; margin-bottom: 6px; }
.events .lines span { display: block; height: 8px; background: var(--pencil); opacity: 0.18; border-radius: 4px; margin: 6px 0; }
.events .lines span:nth-child(1) { width: 80%; }
.events .lines span:nth-child(2) { width: 60%; }
.events .lines span:nth-child(3) { width: 70%; }
.next-step { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px; border: 2px solid var(--accent); border-radius: 10px; background: var(--paper); margin-top: 14px; }
.next-step .head { font: 13px/1 var(--mono); letter-spacing: 0.16em; color: var(--accent); text-transform: uppercase; }
.next-step ul { padding: 0 0 0 18px; margin: 6px 0 0; font: 15px/1.4 var(--hand); color: var(--ink); }
@media (max-width: 1000px) {
.layout { grid-template-columns: 1fr; }
.kpis { grid-template-columns: 1fr 1fr; }
.panels { grid-template-columns: 1fr; }
.sticky.sn1 { display: none; }
.sticky.sn2 { display: none; }
}
</style>
</head>
<body>
<div class="page">
<div class="head" data-od-id="head">
<h1><em>Zentou AI · Portal</em>
<span class="pin"><span class="x"></span>WIREFRAME v0.1</span>
</h1>
<div class="sub">受験者画面のレイアウト探索 — 4案 + 元画面の再整理</div>
<div class="meta"><b>DATE</b> 2026-04-18 · <b>DEVICE</b> DESKTOP 1440 · <b>FIDELITY</b> LOW</div>
</div>
<div class="tabs" data-od-id="tabs">
<div class="tab"><span class="glyph"></span><span class="num">00</span>ALL</div>
<div class="tab"><span class="glyph"></span><span class="num">01</span>A · 整理型 (元画面ベース)</div>
<div class="tab active"><span class="glyph"></span><span class="num">02</span>B · ダッシュボード (KPI)</div>
<div class="tab"><span class="glyph"></span><span class="num">03</span>C · タイムライン (次の試験)</div>
<div class="tab"><span class="glyph"></span><span class="num">04</span>D · 学習体験型</div>
</div>
<div class="canvas" data-od-id="canvas">
<div class="section-label">
<h2>B · ダッシュボード</h2>
<span class="pill">DATA-FORWARD</span>
</div>
<p class="lede">KPIを最上段に。「今の自分の位置」を一目で把握 → 詳細は下へスクロール。</p>
<div class="browser" data-od-id="browser"><div class="dots"><span></span><span></span><span></span></div><div class="url">zentou-ai.jp / portal / dashboard</div><div class="user">motoki.daisuke</div></div>
<div class="layout">
<aside class="nav" data-od-id="sidebar">
<span class="brand">全統 AI</span>
<ul>
<li class="active"><span class="square"></span>ダッシュボード</li>
<li><span class="square"></span>試験日程</li>
<li><span class="square"></span>成績一覧</li>
<li><span class="square"></span>練習問題</li>
<li><span class="square"></span>学習計画</li>
</ul>
</aside>
<div data-od-id="main">
<div style="display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;">
<div>
<div class="greeting">おかえりなさい</div>
<div class="name">motoki.daisuke <span style="font-size:18px;color:var(--pencil);">さん</span></div>
</div>
<div class="toggle-row">
<span class="tag">今週</span>
<span class="tag active">今月</span>
<span class="tag">通算</span>
</div>
</div>
<div class="kpis" data-od-id="kpis">
<div class="kpi tilt-1"><div class="label">認定ランク</div><div class="value">A2</div><div class="small">基礎認定</div></div>
<div class="kpi tilt-2"><div class="label">偏差値</div><div class="value ink" style="color:#3b6e8e;">39</div><div class="small">↑ +3.2 前回比</div></div>
<div class="kpi tilt-3"><div class="label">次回まで</div><div class="value">1日</div><div class="small">04/19 10:00</div></div>
<div class="kpi tilt-4"><div class="label">練習進捗</div><div class="value ink" style="color:#3b6e8e;">62%</div><div class="small">▰▰▰▰▰▱▱▱</div></div>
</div>
<div class="panels" data-od-id="panels">
<div class="panel" data-od-id="chart">
<h3><span class="dot"></span>CHART · 偏差値推移</h3>
<svg class="scribble" viewBox="0 0 480 160" aria-hidden="true">
<path d="M 14 142 L 460 142" stroke="#4d473d" stroke-width="1.6" fill="none"/>
<path d="M 14 14 L 14 142" stroke="#4d473d" stroke-width="1.6" fill="none"/>
<path d="M 18 110 C 80 96, 130 102, 180 92 S 280 60, 340 50 S 440 32, 460 22"
stroke="#d8482b" stroke-width="2.4" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="80" cy="98" r="4" fill="#d8482b"/>
<circle cx="200" cy="86" r="4" fill="#d8482b"/>
<circle cx="320" cy="56" r="4" fill="#d8482b"/>
<circle cx="440" cy="28" r="4" fill="#d8482b"/>
</svg>
</div>
<div class="panel" data-od-id="bars">
<h3><span class="dot"></span>SUBJECTS · 科目別</h3>
<svg class="scribble" viewBox="0 0 320 160" aria-hidden="true">
<defs>
<pattern id="hatch" patternUnits="userSpaceOnUse" width="6" height="6" patternTransform="rotate(45)">
<line x1="0" y1="0" x2="0" y2="6" stroke="#2b2620" stroke-width="1.6"/>
</pattern>
</defs>
<path d="M 14 142 L 306 142" stroke="#4d473d" stroke-width="1.6" fill="none"/>
<rect x="30" y="60" width="38" height="82" fill="url(#hatch)" stroke="#2b2620" stroke-width="1.4"/>
<rect x="86" y="38" width="38" height="104" fill="url(#hatch)" stroke="#2b2620" stroke-width="1.4"/>
<rect x="142" y="78" width="38" height="64" fill="url(#hatch)" stroke="#2b2620" stroke-width="1.4"/>
<rect x="198" y="22" width="38" height="120" fill="url(#hatch)" stroke="#2b2620" stroke-width="1.4"/>
<rect x="254" y="50" width="38" height="92" fill="url(#hatch)" stroke="#2b2620" stroke-width="1.4"/>
<text x="14" y="158" font-family="IBM Plex Mono, monospace" font-size="11" fill="#4d473d">開発 / 国 / 数 / 英 / 理</text>
</svg>
</div>
</div>
<div class="events" data-od-id="events">
<div class="label">📣 お知らせ (直近 3 件)</div>
<div class="lines"><span></span><span></span><span></span></div>
</div>
<div class="next-step" data-od-id="next-step">
<div class="head">● NEXT STEP / 次にやること</div>
<ul>
<li>試験の申込を完了する</li>
<li>弱点「論理」を10問だけ解く</li>
</ul>
</div>
</div>
</div>
<div class="sticky sn1" data-od-id="sticky-1"><div class="tape"></div>一日目から触りたくなる画面に</div>
<div class="sticky sn2" data-od-id="sticky-2"><div class="tape"></div><b>page-1 / 5</b><br/>余白は気持ちよく。<br/>密度は B 案ぐらい。</div>
</div>
</div>
</body>
</html>
Related skills
How it compares
Use wireframe-sketch before mobile-app when stakeholders need structural feedback without device chrome or brand tokens.
FAQ
What file format does wireframe-sketch output?
wireframe-sketch outputs a single HTML file with inline CSS and marker-style fonts on a graph-paper background. The artifact is designed for Open Design sandboxed preview and can include tabbed sections for multiple layout variants.
When should wireframe-sketch be used instead of mobile-app?
wireframe-sketch fits early IA and flow validation with deliberately unfinished sketches. mobile-app is for pixel-accurate iPhone-framed UI mockups once structure is settled and a DESIGN.md system is active.