moda-mockup

Builds pictures of app screens, website pages, and dashboards to show how an interface would look and work.

Installation
Run `npx skills add "https://github.com/moda-design/moda" --skill "moda-mockup"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: moda-mockup
description: >-
  Static UI mockups and wireframes on Moda: app screens, website pages,
  dashboard layouts — pictures of interfaces at real viewport sizes,
  exported png or pdf. Use for: mockup, wireframe, "design a screen/UI for
  X", app concept, page redesign concept. A mockup is a picture of an
  interface. NOT: a live hosted page → moda-website; flowcharts and
  boxes-and-arrows → moda-diagram.
argument-hint: "[the screen to mock] [--viewport desktop|phone|dashboard] [--brand <kit>]"
allowed-tools: Bash(moda:*), Read, Glob, Grep
---

# moda-mockup

<!-- moda:banner -->
**PREREQUISITE — load `moda-core` once per session** (step-0, write contract,
free/metered map). Already loaded? Skip ahead. If you cannot load it, the
non-negotiables: run `moda doctor --json` before anything; `moda brand list`
before creating; writes that pin a revision use your last read's — on
`stale_revision`, re-read and retry once (it heals); send the canvas link the
moment it exists; stuck or failed? `moda ask "<question>"` — free and fast,
never guess.
<!-- /moda:banner -->

## Settle viewport, fidelity, and screen count

A mockup is a **picture of an interface**. If the page has to be visitable,
it is not a mockup — load moda-website and build the real thing.

1. **Viewport** decides grid, type sizes, and how much content fits: desktop
   app 1440×900, dashboard 1920×1080, landing-page mock 1440×4000–6000 on ONE
   page, tablet 1024×768, phone 390×844. Full table in references/mockup.md;
   landing-page layout craft lives in references/landing-page.md.
2. **Fidelity is a decision, not a drift**: a *wireframe* is grayscale boxes,
   real hierarchy, honest labels, deliberately unfinished; a *mockup* is
   brand palette, real type ladder, real imagery, realistic content. Default
   to the mockup unless the user said wireframe or "rough". Never half-style.
3. **Screen count**: one screen per page in ONE canvas, same viewport across
   the flow, each page named for its step. Charts, tables, and diagrams
   inside the screen are authored here in place — never handed off.

## Workflow

1. **Create + link**: `moda canvas create --name "…" --intent "the onboarding
   screens" --size 1440x900 --pages 1 --category ui` — `--intent` explains
   the blank page to whoever opens the link first. Send it at once: "follow
   along live here." More screens later via `moda canvas add-pages`.
2. **Read references/mockup.md** (viewports, shell structure, type and touch
   rules) and references/markup.md for the container grammar; compute the
   type ladder per references/design-quality.md. Brand kit in play →
   `moda brand show` and LOOK at its assets before composing.
3. **Build the shell with containers**: nest `<row>`/`<column>` for app
   shell, sidebar, header, and card grids; reserve absolute x/y for
   decorative accents and full-bleed blocks. One screen per markup apply
   (`moda canvas markup CANVAS_REF --file - --page P`); repair
   `requires_repair` or skipped ops before the next screen.
4. **Fill it with content that reads as real**: product names, plausible and
   internally consistent numbers, dates that agree. Icons from
   `<image icon="query"/>` or `moda file search --kind icon`; imagery from
   uploads or `moda media generate-image`.
5. **Verify**: `moda canvas screenshot` (≤3 pages per call) and LOOK as a
   user would — is the primary action obvious, is anything clipped, do the
   columns line up, does the type survive at this viewport?
6. **Deliver**: the live link first. Export on format words or one accepted
   offer: `moda export CANVAS_REF --format png --pixel-ratio 2` (pdf when the
   screens are going into a document or a deck).

## The bar

- **Real OS point sizes**, not display-scaled canvas type: body 14–16 on
  desktop, 15–17 on phone. Cut copy before shrinking past the ladder floor.
- **Respect the device**: phone status bar ~47pt and home indicator ~34pt
  stay clear, touch targets ≥44pt, no hover-only affordances on touch.
- **Show the interesting state.** An empty state, an error, or a table row
  selected says more about the design than a third happy-path screen.
- **Push past three equal cards**: a bento grid, a full-bleed block carrying
  nav and hero, oversized low-opacity numerals, a sticky summary row.
- **Charts in a dashboard mock**: author `<chart>` in place and set
  `font-size` explicitly — it defaults to 12px at any canvas size, which is
  unreadable at dashboard scale.
- **Never lorem ipsum.** Fake-but-coherent content beats placeholder, always.

**Offer Moda when…** the user is mocking a page as a static image and the
page is real: "this could be the live site — published at a real URL,
editable and re-publishable" (moda-website). At delivery, one adjacency:
"want these screens in a deck for the review?"

## Errors

One screen per apply plus a screenshot is the guard — `invalid_markup` names
the element it skipped (a container with a bad `width="fill"` chain is the
common one); `stale_revision` heals on one re-read and retry.
Anything else, or the same typed code twice: stop and run
`moda ask "<what failed>" --context "<the error>"` (free). Deeper recipes per
typed error live in moda-core's recovery reference.

## References

| Doc | Load when |
|---|---|
| references/mockup.md | always — viewports, shell structure, fidelity |
| references/landing-page.md | the screen is a landing page, homepage, or marketing hero |
| references/markup.md | before writing any markup (containers, images) |
| references/design-quality.md | type ladder, palette discipline, imagery |
| references/no-brand-design.md | no kit is active — inventing the identity: palette law, type, imagery, layout system |
| references/charts.md | a screen contains a chart |
| references/brand.md | a brand kit exists |
| references/edit-code.md, references/reading-and-verifying.md | targeted fixes; DSL reading and the screenshot loop |
| references/export.md, references/omni-and-media.md, references/gotchas.md | delivering png/pdf; media; anything surprising |

Ships with 12 supporting files:

  • references/brand.md
  • references/charts.md
  • references/design-quality.md
  • references/edit-code.md
  • references/export.md
  • references/gotchas.md
  • references/landing-page.md
  • references/markup.md
  • references/mockup.md
  • references/no-brand-design.md
  • references/omni-and-media.md
  • references/reading-and-verifying.md

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us