wiremark

A text-based, markdown-embeddable wireframing format

Inspired by YAML’s simplicity and MUI’s readability — a concise, agent-friendly, easy-to-read DSL for wireframes, rendered in a hand-drawn, Balsamiq-like style. Embed it in markdown files the way Mermaid does, or write it as standalone .wiremark files.

Write this in any markdown file…
```wireframe
Wireframe mobile
  Stack column gap=2
    Typography h4 "Sign in"
    TextField "Email"
    TextField "Password"
    Button "Sign in" contained
```
…and get this
Sign inEmailPasswordSign in

That block describes a phone-sized sign-in screen: a heading, two fields, and a primary button. No coordinates, no styling, no boilerplate — just the structure.

The whole format is three ideas

Component names you already know

Stack, Card, Typography, Button, TextField, AppBar, Tabs, Drawer, Avatar, … The vocabulary is wiremark’s own, but it borrows its names from modern UI libraries like Material UI — if you’ve built with one, you can read a wireframe without a reference.

Indentation is containment

A line indented under another line is its child. That single rule replaces every wrapper, brace, and closing tag — the shape of the text is the shape of the screen.

Defaults do the work

A bare component name renders something sensible. A lone Typography is a line of placeholder text; a lone Button reads “Button”. You add detail only where it communicates something.

Built to live in your documents

Markdown-native

A wireframe is a fenced code block, so it travels with your specs, PRDs, READMEs, and design notes — and renders inline via thin host adapters (Obsidian, markdown-it, remark, …) over one pure core.

Flow for free

Frames are named with #id and linked with to=#id, so an embedded navigation graph falls out of the document automatically.

Agent-first

Intentionally low-ambiguity and low-token. An LLM can read, write, and reason about a wireframe with no reference doc, leaning on naming conventions it already knows from libraries like MUI.

Hand-drawn by default

Output is a deliberate sketch, not a polished mockup. A sketch invites feedback on structure instead of bikeshedding on colors.

Get wiremark

@wiremark/core @wiremark/core version on npm

The parser, layout engine, and hand-drawn SVG renderer behind everything. Pure JS, no host dependencies.

npm install @wiremark/core
View on npm →

@wiremark/cli @wiremark/cli version on npm

The command-line renderer — turn a .wiremark file into an SVG without writing any code.

npx @wiremark/cli in.wiremark -o out.svg
View on npm →

JetBrains IDE plugin wiremark plugin version on JetBrains Marketplace

Live split-pane preview for .wiremark files and wireframe blocks in Markdown — in IntelliJ IDEA, WebStorm, and every JetBrains IDE.

Install from inside your IDE: search for wiremark in the Plugins Marketplace.

View on the Marketplace →

MIT licensed. wiremark is young and under active development. Follow along on GitHub.

Agent quick start

Working with an AI agent?

wiremark is agent-first by design, so an LLM can usually write it with no setup at all. But for a project that will lean on wireframes heavily, give your agent a head start:

SKILL.md

Use the wiremark skill

A drop-in skill that teaches Claude the full format — and stays out of the way until a wireframe comes up.

Get the skill →
or
CLAUDE.md AGENTS.md

Point your agent at an instruction file

Ready-made guide files for any LLM — reference one by URL from your agent's instructions, or download it straight into the repo.

Browse the instruction files →