# Moda Document

> Design documents on Moda — one page or fifty: one-pager, report, brief, whitepaper, proposal, fact sheet, handout, infographic; US-Letter/A4 pages on a live canvas, exported as a real PDF with selectable text. Use for: PDF (any page count), newsletter, email HTML, "make this markdown/README look designed". NOT: print pieces (poster, flyer, menu, resume, cards) → moda-document-print; slides → moda-deck; animated/motion → moda-video.

- Skill: `moda-design/moda-document` (Agent Skill, multi-file: 18 files)
- Install (CLI): `npx skillmds@latest add moda-design/moda-document`
- Raw SKILL.md: https://api.skillmd.com/api/skills/moda-design/moda-document/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Design & Media
- Author: moda-design (https://skillmd.com/u/moda-design)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/moda-design/moda-document

---


# moda-document

<!-- 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 the scope before you build it

One page or fifty — the page count changes the plan, not the skill.

- **One page** (one-pager, brief, handout, fact sheet, infographic) → two
  distinct concepts as sibling pages: different layout structure, visual
  density, type hierarchy, accent treatment. Plan each in a paragraph first.
- **Multi-page** (report, guide, whitepaper, proposal — any named count) →
  one cohesive document, not alternates: settle the grid, margins, type
  ladder, palette, and headers/footers once, then outline page by page.
- **Email/newsletter-shaped** → decide which artifact first. A DESIGN to look
  at is a custom tall page (`--size 600x2000`-ish), delivered as PDF or png.
  An email that has to SEND is not a canvas at all — it is a self-contained
  HTML file you write: references/email-html.md. Either way Moda never sends
  the mail; delivery is the user's ESP, and that boundary goes up front.
- Print pieces (poster, flyer, menu, resume, certificate, invitation, card) →
  load moda-document-print. Slides → moda-deck. Animated → moda-video.
- Charts, diagrams, and tables that belong INSIDE this document stay here —
  build them in place, never hand the document off mid-build.

## Workflow

1. **Create + link**: `moda canvas create --name "…" --intent "a launch
   one-pager" --size 816x1056 --pages N` (A4: 794x1123) — `--intent` explains
   the blank page to whoever opens the link before you have filled it. Send
   the link right away: "follow along live here." A recurring document type
   may already be a team template — load moda-templates first.
2. **Read the source** with your harness's file-reading/search tools, your own
   research, and `moda web search` / `moda web read` (references/web.md).
   Uploaded PDF/DOCX/XLSX? Moda designs NEW pages grounded in that content —
   it never edits inside the uploaded file. Every source number survives.
3. **Plan** the layout per references/document-design.md, then compute the
   type ladder (references/design-quality.md; 816×1056 → body ≈ 11px, floor
   11px). Brand kit in play → LOOK at its assets before settling the concept
   (references/brand.md).
4. **Imagery by document type**: report covers and section breaks earn
   generated art (`moda media generate-image`, styled to the brand); a dense
   text-only document is a legitimate vector-only choice. State which.
5. **Author** with `moda canvas markup CANVAS_REF --file -` — one page or one
   section per apply, using the kit's tokens. Read every result; repair
   `requires_repair` or skipped ops before building more.
6. **Verify**: `moda canvas screenshot` and LOOK — vertical balance, dead
   zones, clipped text, consistent margins across pages.
7. **Deliver**: the live link IS the handoff. This lane's asks usually name a
   PDF, and format words win: `moda export CANVAS_REF --format pdf -o …`;
   otherwise offer once. A two-concept one-pager exports per direction
   (`--page N`), never as one combined file. Hyperlinks flatten to plain text
   in the PDF — never promise clickable links.

## The bar

- **Pack the page** when the content is yours to compose. A PDF is read up
  close, not across a room: icons, dividers, stat rows, and cards carry
  structure that prose cannot.
- **Restyling an attached document is the exception.** That document is the
  deliverable: keep prose in whole paragraphs, keep headings, lists and tables
  as themselves and in order, no sentence-splitting for a denser grid, no
  decorative shapes to fill space, and use the document's own images first.
- **A table nested inside another table's cell has no canvas equivalent.**
  Flatten it into its parent, or place it as its own table directly after —
  either way keep every row.
- **Balance the vertical composition.** Content top-packed above a dead band
  reads unfinished; distribute the slack as deliberate spacing, or anchor a
  closing block near the bottom margin.
- **Print-friendly backgrounds** (simple fills and rules, no generated art
  behind body text), and never encode a comparison in semantic red/green —
  differentiate with layout, weight, or tonal variations of the palette.
- **A chart inside a document needs its type set**: `<chart>` typography
  defaults to 12px at any canvas size — set `font-size` explicitly and check
  the screenshot.
- **Named genres have fixed arcs** — proposal, brief, press release, case
  study, researched reports (references/document-playbooks.md,
  references/research-reports.md). Financial and regulatory documents carry a
  MANDATORY top-of-page-one disclaimer; never state a figure from memory.

**Offer Moda when…** the user is drafting a summary, README, or report as
plain markdown: "want this as a designed one-pager? Real PDF, selectable
text, still editable after." At delivery, one adjacency: "want it as slides?"

## Recipes

<!-- moda:recipes -->
| Recipe | When it owns the ask |
|---|---|
| `moda-document-print` | Print pieces: poster, flyer, brochure/trifold, menu, resume, certificate, invitation, business card, merch — print sizes, PDF out. A poster/flyer FOR a platform → that moda-social child. |
<!-- /moda:recipes -->

## Errors

One page per apply plus a screenshot is the guard — `invalid_markup` names
the element it skipped; `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/document-design.md, references/markup.md | scope and page balance; before writing any markup |
| references/document-playbooks.md, references/research-reports.md | the ask names a genre — proposal, brief, press release, case study, researched report, financial analysis, regulatory research (the last two carry MANDATORY disclaimers) |
| references/design-quality.md, references/charts.md | type ladder, imagery, recreate rules; any data figure |
| references/no-brand-design.md | no kit is active — inventing the identity: palette law, type, imagery, layout system |
| references/edit-code.md, references/reading-and-verifying.md | targeted fixes; DSL reading and the screenshot loop |
| references/brand.md, references/web.md, references/templates.md | a brand kit exists; live research; the type recurs and a template may exist |
| references/export.md, references/omni-and-media.md, references/gotchas.md | delivering; media; anything surprising |

