Module 01

Orientation

15 min READING
What you'll learn

What the Punch website design system is, the four-phase workflow you'll work within, where you (the designer) plug in across all four phases, and how the four supporting docs relate to this one.

Who this is for. New Punch designers — read straight through, this is your Day 1. Existing Punch designers learning the new system — Modules 1–3 will move quickly for you; the new material starts at Module 4. Either way, the hands-on exercises are worth doing even if you think you know the answer.

Punch's core methodology — design and content fuse

Design and content cannot exist without one another. Neither is more important. They fuse to communicate.

This is the operating principle underneath every project Punch ships. Not a stylistic preference — it's how we work. Every deliverable, from a homepage hero to a one-pager, is a fusion: copy carries half the meaning, design carries the other half, and the experience only works when both halves support and emphasize each other.

For the designer specifically, this has three operational consequences:

  1. You are not a stylist for someone else's text. The copy you compose into a page is half the brand. If a layout makes the copy harder to feel, the layout is wrong — even if it's pretty. If a hero animation is beautiful but doesn't reinforce the Big Idea the copy is carrying, the animation is decorative, not communicative. Push back when the fusion isn't there.
  2. The Big Idea is yours too. Every project has a Big Idea — one or two words (e.g., "assurance," "ease," "control") locked in the strategist's themes work and carried in copy-brief.md. The Big Idea is the spine your design must reinforce. Type, color, motion, spacing — every visual decision answers "does this evoke [Big Idea]?" The same way the writer's word choices answer the same question.
  3. Visual QA is fusion QA. When you review a composed page, you're not asking "is the design right" and "is the copy right" separately. You're asking "are the design and copy supporting and emphasizing each other to communicate the Big Idea?" If they're working against each other — copy is restrained but design is loud, or design is editorial but copy is sales-y — flag the misalignment back to the strategist or writer.

The principle applies just as strongly to the strategist's craft (audience definition without design awareness produces vague briefs) and the writer's craft (copy without design awareness reads flat). What ties Punch's team together — across roles, across phases — is the discipline of building toward fusion, not toward either pole.

Before anything else

This system exists to give you more creative time, not less. Read that again before you read anything else.

Every designer reading this is doing some math in their head: "If Claude composes pages, where do I add value?" Honest answer, grounded in how we've actually worked.

Before this system, our process started from a template but still meant designing every page layout in Figma, exporting to PunchProof, wireframing, reconciling text edits across docs, and handing off to dev. Five pages took 7–12 hours of Figma work, sometimes more. Then the site got developed — and clients seeing it built for the first time often realized they wanted it to feel different than the static Figma mockup suggested. That feedback round was expensive: every meaningful change meant another Figma pass, another reconciliation, another dev cycle.

This system collapses that loop. Claude composes pages directly from briefs into token-bound library components — five pages of structural Figma work drops from 7–12 hours to under one. Clients see the developed site in their actual brand much sooner, while there's still room for taste-level changes. And complex revisions late in a project become a prompt away instead of a design-redo-dev cycle.

What you get back is time for the parts that matter — visual direction, custom moments, brand-defining decisions, the craft that earns a premium budget. The system is the leverage. Your taste is the work.

What changed — and what evolved

We've always worked from a template, and the template got us most of the way. What's new is that the template is no longer just a starting point — it's a published Figma library of 44 token-bound components, paired with a small set of Claude skills that automate the parts of the Punch process that used to eat hours every project. Together they shorten the design-build-reconcile loop into something clients see results from much sooner.

Concretely, what each piece replaces:

  • The hand-built-each-time page layout becomes a composition step. The strategist writes a structured content brief; Claude pours it into your Figma skeleton; the page renders in the client's brand instantly. No PunchProof export, no text reconciliation across docs, no separate wireframing pass.
  • Hand-applying brand values across components becomes a token override. You edit the local Punch Tokens collection in your client fork once; every component on every page reskins to match. No per-component find-and-replace, no missed instances.
  • Design-every-page becomes tiered. Showcase pages still get your full attention — that's the 20% that earns the client's budget. Standard pages template directly from the sandbox spec without a separate Figma pass. We've codified which page types get which treatment so you're not re-negotiating it project by project.
  • The Figma-to-dev handoff becomes a real spec, not a screenshot. Token export produces tokens.css, tailwind.config.js, and tokens.json automatically from the variables in your fork. Dev consumes actual values instead of interpreting visuals.
  • The client-sees-it-developed-and-reacts moment moves earlier. Because Claude composes directly into a token-bound library, the page renders close to its final developed state from day one. Late-stage changes that used to mean a Figma redo + reconciliation + dev cycle become a prompt away.

What you are doing: designing the showcase 20%, picking the visual direction within the system, styling composed pages — type weights, color emphasis, imagery, custom moments — and judging when a project's specific brief justifies breaking from the system intentionally.

The four-phase workflow at a glance

Four phases, ~8 weeks total for a typical project (4 weeks brand, 4 weeks website). Five roles, the tools used at each step. The red dot marks the role leading each phase. The diagram is the team's map — your specific responsibilities by phase are detailed in the table that follows.

Phase 0

Strategy, Brand & Two Homepages

~4 weeks
Strategist Leads the phase. Locks brief, runs themes exercise, locks sitemap, picks Big Idea with client, hands you copy-brief.md at end of week 2.
Designer Wait week 1. Week 2: create the visual half of three creative themes (logo, palette, type, collateral mockups, hero mockup per theme) — strategist owns the strategic spine. Weeks 2–3: revise + flesh out the chosen direction (or hybrid). Weeks 3–4: design two homepage takes with different hero interactions for client to pick at end of phase.
PM Orchestrates discovery, owns the 4-week Asana sprint, coordinates client touchpoints
CCO Brand sign-off at Gate 1; reviews themes + your homepages for added Punch
Client Picks brand direction (theme), approves sitemap, picks homepage direction (one of your two takes)
Tools Cowork Google Drive Asana Figma omma.build copy-brief.md
Gates Gate 1 · Brand sign-off Gate 2 · Sitemap sign-off Gate 3 · Homepage direction pick
Phase 1

Foundation — finalize homepage + sandbox

~1 week
Designer Finalize the chosen homepage (the take the client picked at end of Phase 0). Build the sandbox spec — tokens.css, components.html, typography.html, sample-page.html.
Primary Writer Drafts homepage copy using strategist's locked brief + chosen theme voice anchor
Strategist Strategic QA on writer's homepage copy. Locks homepage copy at draft lock. Drafts per-page content briefs for remaining pages, then runs punch-wireframe to generate the newspaper-greyscale content wireframe at sandbox/wireframe/. Walks you through the wireframe internally before client sign-off at Gate 4.
CCO Direction feedback; system-level decisions
Dev Works in parallel with you. Runs /website-to-static:convert to scrape the old site into a semantic site-llm/ directory (Production's input for Phase 2). Sets up branch-based preview infrastructure. CMS deferred to Phase 3.
TDM Manages Dev workstream; coordinates handoff to Production at start of Phase 2.
Client Approves the finalized homepage (internal) and reads the remaining-pages wireframe end-to-end at Gate 4 — signs off on copy + structure before any of those pages get designed.
Tools Figma Cowork omma.build design.md PunchProof Asana
Gates Gate 4 · Wireframe sign-off (copy + structure)
Milestone Homepage finalized (internal)
Phase 2

Interior pages — batched, tiered

~2 weeks
Designer Skeleton + bring to life each showcase page in Cowork (~4–8 hrs/page) + Standard Page Assets frame in Figma for dev
Production Early Phase 2: runs /website-design-amplifier:amplify to fuse the design reference (your sandbox spec + finalized homepage) with Dev's site-llm/ content. One amplifier run generates the full redesigned static site — standard pages, listing pages, articles, blog/thought-leadership — in the brand. Your bespoke showcase pages from Cowork override the amplifier's equivalent pages.
Dev Mid-Phase 2: pushes one page through the chosen CMS as a pilot to validate integration before final migration.
Strategist Locks copy per batch at the showcase lock
CCO Per-batch design feedback; flags off-brand moments early
Client Pulse checks per batch — looking only for major red flags, not formal review
Tools Figma Cowork omma.build 21st.dev PunchProof Asana
Gates Gate 5 · Per-batch QA (×N)
Phase 3

Review + Launch

~1 week
Dev + Production Dev: framework-level cleanup (responsive at 768 + 375, performance), then CMS integration after client sign-off. Production: a11y baseline + apply-feedback edits on static preview via Claude Code, then CMS-format polish after migration. The site lives as a STATIC preview through Phase 3 client review. CMS migration is the FINAL step.
Designer Apply visual feedback via Cowork; internal sign-off on design changes before client preview
Strategist Final copy lock; copy goes into the CMS
CCO Final design sign-off before the preview URL ships
Client Final review on preview URL; launch sign-off
Tools PunchProof Asana Cowork Dev stack CMS
Gates Gate 6 · Pre-launch QA (TDM) Gate 7 · Internal sign-off (CCO)
Phase 4

Learn — post-launch retrospective

~2 weeks post-launch
PM + full project team PM schedules the retro within 2 weeks of launch and runs the punch-retrospective skill. Walks the team through a six-question structure (what went well / what didn't / surprises / near-misses / candidate skill updates / open questions). Captures learnings to retros/[client]-[date]-retro.md and files candidate skill updates to a rolling queue reviewed monthly.
Designer Show up. The retro is collective sensemaking — your perspective on what worked, what didn't, and what should change in the design system or skill suite feeds back into how the next project runs. Specific candidates from a designer's seat: new omma.build tips, Cowork prompts that didn't work, brand fork rough edges, components missing from the master library.
TDM Runs punch-term-drift post-launch to catch any stale terminology that may have crept in during CMS migration or post-launch edits.
CCO + CTO Co-own the monthly candidate-skill-updates queue review. Decide which retro learnings become real skill edits, terminology entries, or rule changes.
Tools punch-retrospective punch-term-drift Asana
Gates Gate 7+1 · Retrospective held

Three designer roles during Phase 0 — which one are you on this project?

On most Punch website projects, the Phase 0 design work is split across multiple designers. Before you read the phase table below, identify which role you're playing — your week-by-week responsibilities differ.

  • Theme designer (week 2). Punch typically assigns one designer per creative theme — three designers working in parallel on the three theme directions. As a theme designer, you build the visual half of one theme (logo direction, color palette, typography selection, brand collateral mockups, hero mockup on a laptop frame, design rationale) in an exploratory Figma file — NOT subscribed to the master library, NOT in the canonical client fork. You're making manual visual choices that align with one Big Idea direction. Your work appears in the Gate 1 presentation alongside the other two themes.
  • Revise / build-out designer (weeks 2–3, post-Gate 1). After the client picks (often a hybrid of 2–3 themes), one designer — frequently one of the three theme designers, but not always — owns the reconciliation. You sit with the strategist in a working session to lock the combined direction, then flesh out the chosen brand: full icon system, button states, photography direction, illustration direction. This is also the designer who creates the canonical client fork for the first time (Module 3) — subscribes to the master library, duplicates the Punch Tokens collection locally, sets values to the reconciled chosen direction, smoke-tests with punch-rebind.
  • Lead client designer (weeks 3–4 onward). Sometimes the same person as the build-out designer, sometimes different. You design the two homepage takes (weeks 3–4) in the canonical fork, present alongside the strategist at Gate 3, finalize the chosen homepage in Phase 1, bring interior showcase pages to life in Phase 2 via Cowork, and carry the project through Phase 3 to launch. You are the designer who runs punch-token-export at dev handoff and punch-omma-export for the omma integration.
If you're a theme designer: stop reading after Module 3's "When you DON'T set up the fork" note. Modules 4–7 are for the build-out / lead client designer who works in the canonical fork. If you're the build-out or lead client designer: the rest of this doc is yours — read straight through.

Where designers fit, by phase

PhaseWhat designers doWhat designers don't do
0 — Strategy, Brand & Two Homepages (~4 weeks) Three sub-phases of work, sequenced:

Week 1: Wait while the strategist runs discovery and locks the brief.

Week 2 — Three creative themes: Strategist hands over Big Idea + design direction signals for three theme directions. You create the visual half of three abbreviated brand starters — each theme includes a logo direction, color palette, typography selection, brand collateral mockups (business card, mug, polo, etc.), and a hero mockup on a laptop frame. Strategist owns the strategic spine (Big Idea, tagline, voice); you own the visual half. Present together at Gate 1.

Weeks 2–3 — Revise + flesh out chosen direction: Client picks a theme (or, more often, a hybrid of 2–3). Strategist + you reconcile the combo in a working session, then you flesh out the chosen brand — full icon system, button states, photography direction, illustration direction.

Weeks 3–4 — Two homepage takes: Design two homepage takes with different hero interactions — one "safe" (more straightforward), one "creative/interactive" (more motion-forward) — for the client to pick at end of phase. Both takes are real functioning code, not static mockups. Both carry the same Big Idea and brand; they differ in how the hero interaction expresses it.
Don't open Figma in week 1 — strategy isn't ready for visual yet. Don't make all three creative themes look like variations of the same idea — they need to be meaningfully distinct so the client can see a real choice. Don't try to own the strategic spine (Big Idea, tagline, voice) of each theme — that's the strategist's craft; you bring the visual half. Don't make both homepage takes essentially the same — the client needs a real choice between hero interaction styles.
1 — Foundation (~1 week) Finalize the chosen homepage (the take the client picked at end of Phase 0) with real copy from the Primary Writer. Build the sandbox spec alongside — tokens.css, components.html, typography.html, sample-page.html. This becomes dev's reference for the rest of the site. Don't design interior pages yet. Don't reopen the homepage direction — that was settled at Gate 3. Don't build responsive breakpoints — dev cleans that up later. Don't deviate from the workflow.
2 — Interior pages (~2 weeks) Design and bring every showcase-tier page (the 20%) to life via Cowork — Figma composition + desktop-only static preview at 1280px, plus a short responsive intent note per page for dev's cleanup pass. Budget ~4–8 hours per page. For standard pages: maintain a Figma "Standard Page Assets" frame with the visual assets dev needs (hero photos, illustrations, icons). Don't open standard pages in Figma. Don't bespoke-design standard-tier pages — they're built by dev from the sandbox. Don't try to ship responsive production code — that's dev's cleanup pass. Don't try to code in Claude Code (that's dev's surface) — your surface is Cowork.
3 — Review + Launch (~1 week) Apply visual feedback via Cowork. Internal sign-off before client preview. Support dev on CMS migration. Don't ship Claude edits straight to client preview. Don't bypass internal sign-off.

The supporting docs you'll use

This onboarding is one of five Punch website docs. Bookmark them all; you'll come back to them mid-project.

OPERATING MANUAL
Website Redesign Workflow

The four-phase, six-gate, three-role manual for any website redesign at Punch. Open this whenever you're unsure what phase you're in or what gate you're at.

FIGMA FILE SPEC
Figma Starter Spec

What's inside the Punch Master Figma file and the Cendrix sample fork. Read once now to know what's available; reference when you need to remember a component's name.

ARCHITECTURE
Library & Modes Guide

How the master file gets published and forks subscribe. Mostly for the CCO and the first few designers to set up a fork; useful background but not required reading day one.

YOU ARE HERE
Designer Onboarding

This document. Eight modules, hands-on practice, ~3 hours. Get through it once before your first project; come back to specific modules as reference.

One thing to internalize early: lean on the system aggressively. Every component, token, and skill in it exists to compress the parts of the Punch process that used to eat your day. The judgment of when to follow the system and when to break it on purpose — that's what we hire designers for.

How the skills work and where they live

Before you do anything hands-on, here's the mental model for the Punch Claude skills — punch-rebind, punch-token-export, punch-content-brief, punch-sitemap, and others — that the rest of this doc references. If you understand this section, you'll know exactly where to point Cowork on day one and avoid the most common token + time waste.

Plugin model, not per-project duplication

All Punch website skills are bundled into a single Cowork plugin: punch-website. You install it once in your Cowork environment as part of onboarding (the CCO handles this — they own the system today; as Punch grows this may become a dedicated role). After that, every Punch client project you work on has every skill automatically available — there's no per-project copying, no folder duplication, no setup ritual.

This is important because the alternative — "copy skills into each client folder" — would mean stale versions across projects, no central fix path, and a lot of wasted time. The plugin model gives every project the same version of every skill, and a bug fix to punch-rebind rolls out everywhere the next time someone runs it.

Where things live (the mental model)

LayerWhat it containsOwnerDuplicated per client?
punch-website pluginAll punch-* skills — the capabilitiesCCONo — installed once
Punch master Figma libraryMaster components, base tokens collection, scaffoldsCCONo — subscribed by every fork
Client Figma forkLocal Punch Tokens (overridden for the client), hero / visual exploration frames, Standard Page Assets frame for dev reference. Showcase pages no longer live here — they live in sandbox/ as code.DesignerYes — one per client
Client project folder (local + Drive)sitemap.yaml, content/*.md, tokens.css, dev handoff outputs, exported assetsDesigner + strategistYes — one per client

The plugin holds the capabilities. The folder holds the content. They never mix. A new client is a new fork + a new folder — never a new plugin.

Day-one questions you'll have, answered

"How do I get the skills?" The CCO installs the punch-website plugin in your Cowork as part of onboarding. You don't install it yourself.

"Do I copy the skills into each client folder?" No. The plugin is global; the folder holds only client-specific content (briefs, tokens, exports, etc.).

"What do I do when I start a new client?" Duplicate the master Figma fork template, create a new project folder (with subfolders for content/, assets/, etc.), and you're ready. The skills are already there.

"Where do I see what skills are available?" In Cowork, the available skills are listed in the session context. You can also just ask Claude: "What Punch skills do you have access to?"

Six principles for accurate, token-efficient Claude use

This is the difference between burning through your Claude usage in a day and getting twice as much done. None of these are clever — they're discipline.

  1. Trust the skill. Don't re-explain. Call the skill by name and let it pull what it needs. Bad: pasting the brief into chat and saying "compose this following Punch conventions for cybersec marketing pages with our token system…" Good: "Build content/homepage.md into sandbox/index.html using the design system." The system already encodes every Punch convention. Pasting them into chat re-loads tokens you've already paid for.
  2. Reference files, don't paste them. "Read content/homepage.md" beats pasting 4KB of brief text into chat. The file content gets read once, in context, not duplicated across turns.
  3. Let Claude read Figma via the MCP, not via your description. "Look at the Homepage page" lets Claude pull structured data (frame hierarchy, layer names, applied variables, components used). Describing Figma in prose ("the hero has an eyebrow, then a headline, then…") burns tokens reproducing what the MCP exposes for free — and less accurately.
  4. Don't restate session context across messages. Cowork preserves the working folder and Figma file across turns in a session. You don't need to repeat "in the Lattice file" every prompt. State context at the start of the session, not every message.
  5. One skill per task, called by name. If you find yourself stitching together prompts that approximate what a skill does, call the skill instead. Re-deriving a skill's logic in chat is the most expensive way to do its job.
  6. Don't pre-load skill content into chat. Resist the urge to paste a skill's SKILL.md into chat to "remind Claude." Cowork loads skill content only when invoked, which is the most efficient pattern. Pre-loading is paying twice for the same information.
Rule of thumb. If your prompt is more than 2–3 sentences long, you're probably re-explaining something a skill already handles. Step back. Look at the skills available. There is almost certainly a one-line invocation that does what your long prompt is trying to do.

Self-check before moving on

  • I can name the four phases without looking
  • I know which phase I'm in when a project starts
  • I know the difference between showcase and standard tier
  • I know what designers do and don't do in each phase
  • I understand skills live in the punch-website plugin (installed once) — not in client folders
  • I can name the four "where things live" layers and which are duplicated per client
  • I can recite at least three of the six token-efficiency principles
Module 02

Tour the Master

30 min HANDS-ON
What you'll learn

What lives in the Punch Master Figma file. By the end you'll know where every component, scaffold, and reference page is so you can find what you need without searching.

Study these first — the bar Punch holds itself to

Before you open the master file, spend 10 minutes on these three cybersec marketing sites. None of them are Punch-designed, but they're the bar we hold our work against. Understand what makes each one good before you go looking at how our system enables that quality.

  • dope.security — confident, restrained, type-led. Notice how product capability is communicated without ever feeling like a product tour.
  • tines.com — long-scroll product page craft. Pay attention to the rhythm between dense feature detail and breathing room, and how the brand voice stays consistent across long pages.
  • torq.io — strong visual identity carried across an information-heavy site. Notice how integration density and compliance signals are handled without overwhelming the page.

The goal of looking at these isn't to copy them. It's to absorb what "this is a great cybersec marketing site" feels like before you start composing your own. Pay attention to typography rhythm, where they use color sparingly vs aggressively, how they treat the demo/conversion moment, and how the page feels at the breakpoint between hero and first product section.

Open the master and orient yourself

The master file is Punch · Website Starter (Master) in the team's Figma space. It has 5 content pages, organized into two groups:

  1. Reference pages (Cover & README, ◆ Foundations · Tokens, 🪧 Brand Assets, ⊟ Layout & Grid, ✅ Handoff Checklist)
  2. The Components page (🧱 Components — 45+ published components, the library you'll instance from)

Previously the file also carried three Showcase scaffolds (Product/Solution, Service Page, About Page), a Standard-Tier Wires page, a Copy Composition page, and a Pattern Archetypes page. Those were removed in v0.2 because showcase pages now compose in Cowork against the live design system, standard-tier pages get generated by the /website-design-amplifier:amplify Claude Code skill, and Pattern Archetypes duplicated what the Components page already covers at higher fidelity. Figma is no longer the place where full pages get composed.

The Components page — the center of gravity

This is the page you'll use most. It has 45+ published components organized roughly into:

  • Primitives (8) — Button (3 variants), Link, Input, Textarea, Tag, Avatar, Eyebrow, Icon
  • Section pieces (9) — Nav, Footer, SectionHeader, FeatureTile, Stat, Quote, ProjectCard, ProcessStep, MediaBlock
  • Full patterns (12+) — Hero (3 variants), FeatureGrid, BentoGrid, StatStrip, Gallery, CTAStrip, IntroStatement, ServicesList, FeatureSplitRows, ProcessSteps, StickyLeadCards, StaggeredCards, ContentSplit, ManifestoBlock, EditorialDualImage, IntegrationGrid, ComplianceRow, ComparisonTable, FAQ, ResourceTeaser, NewsletterSignup, DemoForm, TeamGrid, TeamMember
  • Mega menu (4) — MenuLink, MenuColumn, MegaMenuFooter, MegaMenuPanel — plus a "MegaMenuPanel · Schema (for Claude Code)" frame that spells out the JSON data contract Claude Code reads when implementing the mega menu

Every component is token-bound. When you drop one into a client fork (with tokens overridden), it reskins automatically.

10–15 minutes

Tour the master file

  1. Open Punch · Website Starter (Master). You should have viewer access; ask the CCO if you don't.
  2. Read the Cover & README page. It lists every page and what's on each.
  3. Open ◆ Foundations · Tokens. Browse the color swatches, type ramp, space scale, and radius examples. Note the token names — you'll reference them constantly.
  4. Open 🪧 Brand Assets. Look at the Brand Marks group — five canonical variants (Logo · Full Color, Logo · Reverse, Logo · White, Mark · Full Color, Mark · White). On per-client forks, you'll replace the placeholders with the client's actual logo vectors.
  5. Open ⊟ Layout & Grid. Note the three breakpoints (1280 / 768 / 375). Press Shift + G on any frame to toggle layout grids on.
  6. Open 🧱 Components. Scroll through all 45+ components. Click into a few component sets (like Hero or Button) to see variants. Find the MegaMenuPanel Schema frame at the bottom.
Deliverable: A mental map of where everything lives. You should be able to answer: "Where do I find the FeatureSplitRows component? What's the difference between FeatureGrid and FeatureSplitRows? Where does the mega menu data contract live?"
Tip: In Figma, press ⌘/⌃ + / to fuzzy-search anything (page, component, layer) by name. Type "Hero", "FeatureGrid", "MegaMenu" — you'll jump there instantly. Faster than scrolling.

Self-check before moving on

  • I can find any component on the Components page in under 10 seconds
  • I understand that full-page composition happens in Cowork (showcase) and the Claude Code amplifier (standard 80%) — not in Figma
  • I know where Brand Assets lives and which variant the nav/footer default to (Logo · Full Color)
  • I know the three desktop breakpoint widths (1280 / 768 / 375)
Module 03

Set up a client fork

45 min HANDS-ON
What you'll learn

How to create a new client Figma file that subscribes to the Punch Master library, set up local tokens with the client's brand values, and verify the connection works. By the end, you'll have a working practice fork in your own Figma drafts.

When the canonical client fork actually gets created. Not at the start of Phase 0 — at the start of the post-Gate 1 revise + build-out step (weeks 2–3 of Phase 0). The build-out designer (often one of the three theme designers, but not always) creates the canonical fork once the client has picked a direction and the reconciliation working session has locked the visual decisions. Theme designers do not create the canonical fork during week 2 — they work in exploratory Figma files, not subscribed to the master library, with manual color and type choices that align with their assigned Big Idea. The token system isn't engaged until the chosen direction is committed.

When you DON'T set up the fork

If you're a theme designer for this project, skip this module — you don't create the canonical client fork. Your week 2 work happens in an exploratory Figma file (your drafts, or a dedicated exploration file) where you make manual visual choices, build your theme's logo / palette / type / collateral / hero mockup, and hand off to the Gate 1 presentation. You can stop reading this onboarding here; Modules 4–7 are for the build-out and lead client designer.

When you DO set up the fork

If you're the build-out designer (post-Gate 1 revise) or the lead client designer (carries the project through Phases 1–3), you own the canonical fork setup. This module's hands-on practice is for you. Continue reading.

The five-step fork setup

The build-out / lead client designer runs this sequence once per project, post-Gate 1. Memorize it.

  1. Create the file. In the Punch team space, new file named Punch · [Client] · Website.
  2. Subscribe to the library. Assets panel → Libraries → toggle on Punch · Website Starter (Master). All 44 components become available.
  3. Create the local Punch Tokens collection. Either duplicate the Cendrix sample fork's tokens collection as a template, or build fresh.
  4. Fill in token values. Match the client's brand guide. Colors, type sizes, radii, spacing.
  5. Smoke test. Drop a component (e.g., Nav) onto a test page, run punch-rebind, confirm it renders in the client's brand.

Why "local Punch Tokens" instead of a mode on the subscribed collection?

Short answer: Figma Pro caps you at 4 modes per collection. For an agency with many clients, that ceiling hits fast. Local per-fork tokens scale to unlimited clients and let designers edit values directly in the Variables panel without architectural friction. The punch-rebind skill handles the connection — see Module 5.

Long version is in the Library & Modes Guide. You don't need to understand it to use the system; you do need to follow the convention.

Token names must match the master exactly

This is the single most important rule of fork setup. The rebind connects library components to local tokens by exact name match. If the master has color/brand/primary and your fork has colorBrandPrimary (camelCase), the rebind won't see them as related. Use the master's naming as the contract.

The 59 variable names in master:

  • Color (18): color/brand/{primary, secondary, accent}, color/surface/{1, 2, 3, inverse}, color/text/{strong, muted, dim, inverse, accent}, color/border/{subtle, strong, accent}, color/status/{success, warning, error}
  • Type sizes (15): type/size/{display-xl, display-lg, display, h1-lg, h1, h2-lg, h2, h3-lg, h3, h4, body-lg, body, body-sm, eyebrow, caption}
  • Line heights (4): type/lh/{tight, snug, normal, loose}
  • Spacing (13): space/0 through space/12
  • Radius (6): radius/{none, sm, md, lg, xl, full}
  • Motion (3): motion/duration/{fast, base, slow}
30 minutes

Set up a practice fork

Pretend you're starting a project for a fictional cybersec client called Lattice — a deception-tech platform that creates fake assets to lure attackers. Their brand is deep blue (almost black) with a vivid orange accent, geometric sans typography, sharp small radii.

  1. In your Figma team space (or drafts if you don't have team access yet), create a new file named Punch · Lattice · Practice.
  2. Open Assets panel → Libraries → toggle on Punch · Website Starter (Master). Confirm the components appear in the Assets panel.
  3. Open the Cendrix sample fork in a separate tab. Copy its Cendrix Tokens collection (Variables panel → click collection name → Duplicate).
  4. Paste it into your Lattice file. Rename it to Punch Tokens.
  5. Override these key values for the Lattice brand:
    • color/brand/primary#0E1729 (deep blue-black)
    • color/brand/accent#FF6B2C (vivid orange)
    • color/surface/1#FFFFFF
    • color/surface/2#F4F4F5
    • color/surface/inverse#0E1729
    • color/text/accent#D14F18 (orange darkened for AA contrast)
    • radius/sm2, radius/md4, radius/lg8 (sharper)
  6. Smoke test: drag a Nav component from the Assets panel onto a test page. It'll render with master's neutral values (gray/black). That's expected — you haven't run rebind yet. That's Module 5.
Deliverable: a working Punch · Lattice · Practice file with the master library subscribed, a local Punch Tokens collection populated with Lattice's deep blue + orange palette, and at least one Nav instance dropped onto a test page (still in master neutral — rebind comes later).
Common mistake: forgetting to rename the duplicated collection from Cendrix Tokens to Punch Tokens. The rebind skill looks for either name, but using the canonical Punch Tokens name keeps every fork consistent. Stick to the convention.

Self-check before moving on

  • My practice file is subscribed to the master library
  • My local Punch Tokens collection exists with Lattice values
  • A Nav instance from the library renders (in master neutral, that's fine for now)
  • I can recite the five-step setup from memory
Module 04

Build a showcase page

30 min HANDS-ON
What you'll learn

How to take a content brief, the live design system in code, and Cowork — and build a showcase page directly in the project's sandbox/ folder. By the end you'll have built your Lattice practice showcase page.

The Big Idea is the spine. Before you build anything, open copy-brief.md and re-read the Big Idea + "what it evokes" the strategist locked at end of Phase 0. Every structural choice — which sections you reach for, their order, what gets weight at the top, where you give the page room to breathe — is a design decision about how the Big Idea will land. Build with the Big Idea in mind, not just the brief's section list.

Where this module sits in the new flow

Showcase pages are the 20% that earn the budget — the homepage, the flagship product page, the brand-defining case study. They get a real designer's pass, by you. The other 80% of the site — standard service pages, list pages, generic content templates — get generated by Production using /website-design-amplifier:amplify from your homepage + the sitemap. You don't build those, you don't review them frame-by-frame; Production owns that output, the TDM QAs it.

This module is about the 20%. Specifically, about how showcase pages now get built in code, in Cowork, against the live design system — not skeletoned in Figma first.

Before you compose: the wireframe phase

By the time you start composing a showcase page in Cowork, the page's copy and structure have already been locked. That happened at Gate 4 (Wireframe sign-off) at the end of Phase 1. You inherit the locked artifact; you don't re-litigate it. Knowing what was decided — and what the wireframe looks like — is part of starting Phase 2 on the right foot.

What the wireframe is. The strategist generates it via punch-wireframe in Phase 1 after the homepage is finalized. It's a fully functioning interactive site at sandbox/wireframe/ — every page from the sitemap rendered with real copy, a traditional centered nav (logo left, centered menu, CTA right) with click-to-open dropdowns built from the designed homepage's nav structure, a splash on every page, FAQ accordions, leadership flyouts, full ARIA + SEO/AEO best practices, line-break auto-layer, and a structural lint pass. The only things missing are color and imagery. It always renders in newspaper greyscale (light warm-gray paper, dark charcoal ink) — never dark mode, never color. This is intentional: the wireframe is reading material, not unfinished product. Clients read the whole site end-to-end as words before any of those pages get designed.

What the wireframe phase locks for you:

  • Copy. Every word the client will see has been read, edited, and signed off. You're not waiting on copy during composition; you're composing against final prose.
  • Section structure. The brief's section keys (hero, intro, feature_split_rows, cta, etc.) and their order are locked. You can adjust visual treatment within a section, but you don't re-architect the page.
  • Page-level decisions. Bio treatment (flyout / separate pages / inline), FAQ pattern (single-open / all-open / tabbed), logo / proof layout (marquee / grid / tabs) — strategist locked these in content/wireframe-config.yaml. Compose against the chosen pattern.
  • SEO / AEO baseline. Meta descriptions, robots noindex (on staging), canonical URLs, Organization JSON-LD, Person microdata on leadership cards, FAQPage microdata on FAQ sections — all baked in at the wireframe stage and carried into your composed pages.

Your role during the wireframe phase (Phase 1):

  • Internal review pass when invited. Before the strategist sends the wireframe to the client, they walk you (and the PM) through it internally. Your eyes catch things the strategist may not — section pacing that won't compose cleanly, a card pattern that's overloaded, an interaction the design system won't carry. Flag those now, not at composition.
  • Don't redline copy. That's the strategist + writer's territory at this stage. If a phrase reads off, mention it; don't rewrite it.
  • Take note of compositional implications. A page with 14 stats wants a different bento layout than a page with 4. A leadership page with 12 people wants a flyout, not inline cards. The wireframe will already reflect these decisions — your job is to register them so your composition matches the intent.

After Gate 4 (the client signs off): the wireframe becomes the contract for the page's copy and structure. Compose against it. If the client raises a content change after sign-off, that goes back to the strategist to re-brief, not into your composition.

What "Information needed" blocks in the wireframe mean (new in v0.7.5+). Sometimes a wireframe page renders a gap block labelled "Information needed." This is intentional. The skill stack refuses to fabricate factual content (product specs, capabilities, integrations, customer counts, etc.) when the project's source/ folder doesn't contain the relevant client material. Because the wireframe is shown to the client, the block stays client-facing — it reads "Information needed" with no internal "needs [X]" or "suggested ask" language. The internal specifics (the underlying MISSING SOURCE marker, what's missing, and the suggested ask) live in the content brief and in source/_missing.md for the PM.

Your job when you see one:
  • Don't compose past it. Composing on top of an "Information needed" block, or visually hiding it during your pass, defeats the rule. Wait for the strategist + PM to resolve the gap (data sheet lands in source/ → brief re-runs → marker resolves → wireframe re-renders cleanly).
  • Don't strip it. The marker is the only thing stopping a half-grounded page from shipping. QA gates catch silent strips, but don't rely on the gate — respect the marker.
  • If the marker blocks you from making progress on a showcase composition, raise it to the PM. They own source/_missing.md (the chase list) and need to know if a missing source is on your critical path.

The composition pattern, in three sentences

1. The strategist creates a content brief with Claude — a structured Markdown file with section keys (hero, intro, feature_split_rows, etc.) that map to components in the design system. The brief lives in the project repo's content/ folder.

2. You open Cowork pointed at the project repo. The design system in sandbox/ is already there — tokens, components, page primitives, all built from your Figma token exports and the homepage you finished in Phase 1.

3. You direct Cowork to build the page. It drafts the HTML/CSS using the design system, hands you something structurally correct, and then you iterate. Cowork is your surface for this — not Claude Code.

Figma's role in this flow

Figma is no longer where pages get assembled. It still does three jobs, all of them important:

  • Token source of truth. Any change to the brand palette, type scale, space rhythm, or radius happens in the Figma Variables collection first. The punch-token-export skill then writes tokens.css for the sandbox so Cowork has the latest values to compose against.
  • Optional visual exploration surface. When you have a strong opinion about section order or hierarchy and want to study it visually before building, you can pull library component instances into a Figma page by hand and paste the brief's copy in. This is a sometimes-useful detour for exploration or stakeholder review, not the default path for building.
  • Hero explorations + early visual direction. Photography, illustration, custom typography moments, the "what does this brand FEEL like" exercise — Figma is still the right surface for that work. Once you've picked a direction, the design system in code is where it lives.

What it looks like — brief in, page out

INPUTS what you bring to Cowork CONTENT BRIEF DESIGN SYSTEM (CODE) YOUR DIRECTION "editorial, restrained, give the hero room" COWORK composes against the system OUTPUT a composed page in sandbox/

Three inputs on the left (brief + design system + your direction), Cowork in the middle, page on the right. Your role is choosing the inputs and the direction. Cowork composes against the system.

Standard showcase page structures

For reference, here are the typical section sequences for the most common cybersec showcase page types. The brief is always the authority — these are just starting points.

Page typeTypical section sequence
Homepagenav → hero → intro → feature_split_rows → integration_grid → stat_strip → compliance → cta → footer
Product pagenav → hero → intro → feature_split_rows → integration_grid → compliance → stat_strip → comparison_table → faq → demo_form → footer
Use casenav → hero → intro → manifesto → feature_split_rows → stat_strip → quote → cta → footer
Aboutnav → hero → manifesto → content_split → stat_strip → team → staggered_cards → quote → cta → footer
Demonav → hero → demo_form → compliance → cta → footer

The brief schema is unchanged

Section keys (nav, hero, intro, feature_split_rows, etc.) still map to components in the design system. The strategist still writes the brief against this schema. What's new is where the composition happens — in Cowork against code, not in Figma against component instances. Same contract on either side of the change.

Tip: Before you tell Cowork to compose, walk the existing sandbox first. Open sandbox/components.html and scroll through what already exists in this fork. You're building against those components, not from scratch. If you've never opened the sandbox before composing, you're going to get surprised by what does and doesn't exist.
20 minutes

Build the Lattice showcase product page

The CCO has stashed a Lattice product-page brief at punch-practice/lattice/content/product-page.md in the shared repo. Your job: build this showcase page in the Lattice sandbox/ folder.

  1. Clone or open the Lattice practice repo. Confirm sandbox/ already has the homepage you composed earlier in this onboarding, plus tokens.css and components.html.
  2. Open the brief. Read it once end-to-end. Notice the section list — it'll be roughly the product-page sequence above.
  3. Open copy-brief.md. Re-read the Lattice Big Idea ("Earned trust" — Lattice has earned its place in the cybersec landscape, the page should feel like a confident, settled brand showing receipts).
  4. Open Cowork pointed at the Lattice repo. Confirm the punch-website plugin is loaded.
  5. Say: "Build the product page from content/product-page.md into sandbox/product.html. Compose against the existing design system in sandbox/components.html and tokens.css. Big Idea is 'earned trust' — favor restrained hierarchy, generous breathing room, no marketing exuberance."
  6. Watch Cowork work. It'll read the brief, the existing system, your direction, and write the page. First draft typically takes 1–3 minutes.
  7. Open sandbox/product.html in your browser. Verify it renders, hits the breakpoints (1280 / 768 / 375), and pulls Lattice tokens — not master neutrals.
Deliverable: a working Lattice product page at sandbox/product.html, composed against the Lattice design system and tokens, rendering in the Lattice brand. Ready for the iteration and styling work in Modules 5 and 6.
Tip: First-draft Cowork output is structurally correct but visually generic — the equivalent of a typewriter producing a page of text. Don't judge the draft on look-and-feel; judge it on whether the sections are in the right order, the right components were picked, and the tokens applied. The look-and-feel work happens in Modules 5 (direction) and 6 (visual styling).

Self-check before moving on

  • I've opened sandbox/components.html and seen what's already in the Lattice design system
  • I've re-read the Lattice Big Idea in copy-brief.md before composing
  • sandbox/product.html exists, renders, and uses Lattice brand tokens
  • I understand Figma's three remaining jobs (token source, optional exploration, hero/visual direction)
  • I understand showcase pages are MY work and standard pages are Production's
Module 05

Direct Cowork effectively

30 min HANDS-ON
What you'll learn

How to get high-fidelity work out of Cowork. What the design system in code gives you for free, and where your direction matters most. How to transfer a specific visual vision faithfully without grinding pixels by hand. The two failure modes worth naming, and how to avoid each.

The moment of truth. Module 4 left you with a structurally correct page. It's the equivalent of a typewriter producing a page of text — words on a page in the right order. The styling, the brand-defining decisions, the custom moments, the craft that earns the client's budget — that's Module 6. Module 5 is about how to direct Cowork so the structurally-correct draft already feels like the client, not generic system output.
Fusion lens. Module 4's draft is content arriving inside a design structure. After Cowork composes, pause and read the page once before iterating: does the structure already feel like the Big Idea? If a section title is restrained but lives in a layout that demands a bold visual moment, the fusion isn't there yet — and the fix usually comes from clearer direction to Cowork (next round), not from grinding pixels by hand.

What the design system gives you for free

Because you're composing against the live design system, a lot of work is already decided. Tokens are bound to CSS variables. Components have their structural defaults baked in. The 12/8/4 column grid responds at the breakpoints already. Type ramp, space scale, radius — all from tokens.css. Cowork pulls from these by default. You almost never have to say "use the brand color" — you say "make this section feel anchored," and Cowork reaches for --color-brand-primary because that's what's available in the system.

What's NOT free: which component a section uses when the brief is ambiguous, the spacing rhythm choices, which moments get a custom layout vs the default, image vs photograph vs illustration, motion direction, and any intentional break from the system. That's your call — and the way you make the call is through how you direct Cowork.

How reskin works in the new flow — same hero, three brands

SAME COMPONENT · DIFFERENT LOCAL TOKENS one Hero/Centered instance · three forks · zero structural changes MASTER · NEUTRAL CENDRIX FORK LATTICE FORK One component definition · per-fork tokens.css · same shape, three brands

The structural shape of the hero is identical across all three. What changes per fork: 4 brand color tokens, the radius scale, sometimes the type sizes — all defined in that fork's tokens.css. The design system component reads those tokens via CSS variables. The same principle that made Figma rebind work for the old flow now happens automatically in code: one component definition, swap the tokens, get the brand.

Cowork is your surface — not Claude Code

When this doc says "open Claude," it means Claude Cowork — the designer-facing surface. Cowork is chat plus file tools plus Figma MCP, all in one interface. You point it at your project folder, give it natural-language direction, and it composes, codes, and iterates with you. You never drop into a terminal.

Claude Code is what Production and Dev use for the standard 80% of pages, the amplification runs, and the CMS migration. It's terminal-based, repo-focused, and it's not your surface. You don't open Claude Code. If you find yourself thinking "I need to switch tools to do X," you're probably reaching for Code when Cowork can handle it. Ask Cowork first.

Standard invocation patterns

For a clean first build (covered in Module 4):

Build the product page from content/product-page.md into sandbox/product.html.

For an iteration round on a specific section:

The hero feels too restrained for the headline. Let's try an oversize treatment — keep the eyebrow, move the headline to type/h1-display, push the CTA below with extra space.

For a structural rethink mid-page:

Re-compose the middle of this page. The feature split rows are landing too uniform — try staggered cards instead, with the middle one getting a different background treatment.

For a token-level adjustment (rare but sometimes useful):

The accent color is reading too saturated in the CTA section. Use color/brand/primary-muted just for that section, leave the rest of the page on color/brand/primary.

When something's off in the composed page

The page renders, but something feels wrong. Tell Cowork what you see, specifically:

  • "The hero is rendering with master neutral fallback colors, not the Lattice brand." → Cowork will check token bindings and likely surface that tokens.css is stale or a class is referencing a token name that doesn't exist in this fork.
  • "The integration grid is showing 5 logos in the first row, should be 6 at 1280." → Cowork can adjust the grid columns at that breakpoint.
  • "The CTA section is rendering broken at 768 — the button wraps under the headline." → Cowork will inspect the breakpoint and fix the responsive layout.

If the issue is in a design system component rather than the page-level composition, Cowork will tell you and surface it — "this looks like a component-level issue in component-feature-grid; want me to fix it in the system or just work around it on this page?" Default answer: fix it in the system if it'll happen on other pages too. Work around it on this page only when the workaround is a one-off intentional break.

Building from inspiration — how to give Cowork a specific vision

The brief gets you a structurally correct page. When you've also got a specific visual vision in mind — pulled from inspiration sites, a moodboard, or a single screenshot you can't stop thinking about — the question becomes how to transfer that vision faithfully. From experience: dropping a screenshot into chat and saying "match this" rarely lands. Cowork interprets pixels loosely. Here's the honest hierarchy of what actually moves accuracy, in descending order:

  1. Existing structural draft + named tokens + named components. "Iterate the hero from sandbox/product.html — use the oversize hero variant, set --space-section-y to xl, push --color-accent usage in the eyebrow only." Numbers and component names beat adjectives. Cowork can't infer these from a screenshot.
  2. Intent description, not appearance description. "The eyebrow should feel like a press-release dateline — small caps, muted, set above the headline with breathing room" is more useful than "match this." You're telling Cowork what to optimize for, not what to copy.
  3. Annotated screenshots. A screenshot with 2–4 callouts ("this asymmetric offset is intentional," "ignore the photography style here," "the negative space matters") is dramatically better than a raw screenshot. You're directing attention.
  4. Counter-examples. "Like this Linear page, but not centered the way Vercel does it." Eliminates the wrong neighborhoods.
  5. Multiple inspirations with role labels. "Layout from A. Type rhythm from B. Color discipline from C." Three labeled references beat three loose ones.
  6. A Figma exploration frame, pointed at via MCP. If you've already explored the section in Figma — frames named correctly, layout decided, tokens applied — you can point Cowork at the Figma file and say "match the structure of the hero frame in the Figma file." Useful when a specific layout decision is worth the Figma round-trip. Deliberate detour, not the default.
  7. A raw screenshot with no scaffolding. Lowest signal. Often produces vibes-adjacent results. Reach for this last, not first.

Two specific failure modes worth naming

The "Claude improved it" failure. Cowork has a strong default toward making things "balanced" and "complete." If your inspiration deliberately violates a convention — asymmetric, intentionally sparse, weirdly cropped — Cowork will normalize it unless you tell it not to. Annotate the violation explicitly: "leave this asymmetric on purpose," "the empty column on the right is intentional, do not fill it."

The "wrong reference dimension" failure. Designers will share an inspiration for layout but Cowork picks up typography choices from the same image. Or you share it for color emphasis and Cowork copies the photography style. Always tell Cowork which dimension of the inspiration matters: layout? rhythm? color emphasis? Voice? One or two of those, not all.

Rule of thumb. If you find yourself in a third "make it more like the inspiration" loop with Cowork in chat, stop. The inspiration isn't transferring through prose alone. Either annotate the screenshot more aggressively, drop into Figma to explore the structural layout you actually want, or accept that this is a section that needs hand-craft after Cowork's draft. Twenty minutes of further chat iteration rarely beats either of those.
15 minutes

Iterate the Lattice product page hero

Pick the hero section of the Lattice product page you built in Module 4. Bring an inspiration — the CCO has stashed three in punch-practice/lattice/inspiration/, pick one.

  1. Decide which dimension of the inspiration you're trying to transfer: layout? type rhythm? color emphasis? Pick one or two, not all.
  2. Open Cowork. Paste the inspiration image into chat. Add 2–4 specific notes ("layout match — note the asymmetric eyebrow placement," "ignore the photography style, we're not doing photo heroes for Lattice").
  3. Name the components and tokens you want used by exact name from the design system.
  4. Describe the intent in one sentence ("this hero should feel earned, not aggressive — the brand is mature, the page should feel that way").
  5. Say: "Iterate the hero in sandbox/product.html with those constraints."
  6. Read what Cowork composes. If it's not landing, annotate more aggressively and re-run. If it's mostly there, give one more round of specific feedback rather than another inspiration image.
Deliverable: a Lattice product-page hero that has moved from "structurally correct system default" to "intentional choice that feels like Lattice's Big Idea." Either through Cowork iteration alone, or with one Figma exploration round to lock structure.

Self-check before moving on

  • I know the fidelity hierarchy — named tokens + components beats screenshot every time
  • I can name the two failure modes (Claude improves it; wrong reference dimension) and explain how to avoid each
  • I know when to fix a problem in the design system vs work around it on a single page
  • I've iterated the Lattice hero at least once with specific direction, not "make it more like the inspiration"
  • I understand Cowork is my surface and Claude Code is not
Module 06

Style visually

30 min HANDS-ON
What you'll learn

What designers do AFTER Claude composes — the visual judgment work that makes the difference between a generic system output and a credible client design. Where to push beyond the system; where to leave it alone.

This module is fusion in practice. Module 1 said design and content fuse to communicate. Module 5 ended with Claude having composed the content half of the page into your structure. Module 6 is where you bring the design half to meet it. Every pass below answers the same question, just from a different angle: does this visual decision make the Big Idea land harder? Before each pass, re-anchor on copy-brief.md — read the Big Idea and the "what it evokes" sentence. Then make the visual call.

What's already done for you

Composition output is structurally correct: components instanced, copy populated, brand colors applied via tokens, grid aligned. It looks like a finished page from a distance. The question is whether it earns the client's premium budget — and that's your job.

The five passes that turn a composed page into a designed page

Each pass below is a visual decision in service of the Big Idea. None of them are mechanical — they're judgment calls that fuse type, color, imagery, spacing, and motion into one coherent communication of the chosen direction.

Pass 1 — Type weight & hierarchy

The composer applies default token-sized type, but emphasis and hierarchy are designer decisions. The Big Idea drives the call. A Big Idea of "assurance" wants restrained hierarchy — the eye moves calmly through the page. A Big Idea of "earned" might want one declarative moment per section that lands like a statement. Walk the page and decide:

  • Which words in headlines deserve weight emphasis to make the Big Idea land?
  • Where does the eye need to land first vs second vs third — and is that order serving the Big Idea?
  • Are there sections where the default H2 size is too aggressive for the Big Idea's tonal register? (Or too small to carry it?)

Adjust per-instance — override the text style without changing the underlying token. If you find yourself making the same adjustment three times, that's a signal to update the master component.

Pass 1.5 — Eyebrow scarcity check

Before you start making color decisions, do a structural check on every eyebrow on the page. Punch has a hard rule about eyebrows that prevents the most common pattern failure in our work — eyebrows quietly doing heading work without being headings.

The eyebrow scarcity rule, two parts:
  • Structural (BLOCKER): every eyebrow must be followed by a real H2 or H3 in the same section. An eyebrow with no real heading after it — body copy or cards directly underneath — is a violation. The eyebrow is categorization; the heading carries the section's meaning.
  • Frequency (WARNING): 3+ eyebrows on a single page triggers a review. Eyebrows add visual density without semantic value; overuse weakens both design rhythm and the document outline.

The rule of thumb: an eyebrow should provide categorization the heading wouldn't carry on its own — like LEADERSHIP · PROFILE above Avery Chen, where the heading is the anchor and the eyebrow tells the reader what kind of section this is. If the eyebrow and the heading basically say the same thing, drop the eyebrow.

Walk every section on the page and ask:

  • Does this section have an eyebrow? If no, move on. If yes, continue.
  • Is there a real H2 or H3 immediately after it? If yes, the section is structurally fine — proceed to the frequency check. If no, fix it: either promote the eyebrow content to a real heading and drop the eyebrow, or add a real heading underneath that carries the section's meaning.
  • Across the page, how many eyebrows are there total? Three or fewer is the working ceiling. If four or more, ask which can be dropped — usually at least one is redundant with its heading.

punch-copy-lint auto-checks both the orphan-eyebrow and eyebrow-overuse patterns on composed pages, but the cheapest fix is at composition time, before lint runs. See wireframe-copy-and-seo-rules.md Section 8 for the canonical rationale.

Pass 2 — Color emphasis

The brand accent (color/text/accent) is applied to eyebrows by default. Decide where else it should appear. The Big Idea constrains the answer — restrained Big Ideas ("ease," "unhurried") want scarce accent (one or two moments per page); louder Big Ideas ("ready," "direct") can carry slightly more. Decide:

  • Highlighted words within headlines — does pulling one phrase into accent make the Big Idea more visible, or just busier?
  • Underlines on key links — is the accent earning its place there?
  • Active states in nav, FAQ accordions — does the interaction moment carry the Big Idea, or just show the system works?

Don't go too far — the accent should pop, not overwhelm. If a single page has the accent on 12 elements, you've lost the signal AND diluted the Big Idea.

Pass 3 — Photography & imagery

Composed pages have placeholder gray rectangles. Replace them with real assets:

  • Hero image (if a hero variant uses one) — product screenshot, abstract visual, photography
  • FeatureSplitRows mockups — actual product UI screenshots
  • Team photos — real headshots in consistent treatment (BW, duotone, etc.)
  • Integration logos — the client's actual partner logos

For cybersec sites, abstract security-themed visuals (graph networks, code, light/dark contrast) work better than literal photography of people-at-laptops. Whatever imagery you choose — abstract or literal — test it against the Big Idea. A Big Idea of "assurance" wants imagery that feels grounded, considered, not hectic. A Big Idea of "ready" can carry more energetic imagery. If the imagery and the Big Idea pull in different emotional directions, fusion breaks.

Pass 4 — Section spacing & rhythm

The composer applies default section padding (80px top/bottom on most sections). The Big Idea drives the rhythm. Restrained Big Ideas ("ease," "unhurried," "assurance") want generous breathing room — push padding up so sections feel like they've been considered. Louder Big Ideas ("ready," "direct") can carry tighter rhythm — sections following each other with intent. Some pages benefit from variable rhythm:

  • A hero might want more vertical breathing room (120-160px padding) before the intro — especially with a quiet Big Idea
  • A demo form section might want less padding to feel transactional
  • The footer should always end at the natural last section without floating

Override per-instance padding when the default rhythm feels wrong for the Big Idea this page is carrying.

Pass 5 — Custom moments (the bespoke 20%)

Every showcase page should have at least one moment that couldn't exist on any other site. This is where craft lives — not because the system can't handle generic, but because clients pay premium for the parts of their site that feel uniquely theirs. Custom moments are also fusion at maximum amplitude: a great custom moment makes the Big Idea unmistakable to a first-time visitor in under 50 milliseconds. Examples:

  • An animated, scroll-triggered, or otherwise interactive hero
  • A scroll-triggered diagram in the product narrative
  • A custom illustration or data visualization
  • A typography lockup that's specific to this brand
  • A component-level interaction (card flip, scroll stack, hover reveal, marquee variation) adapted to brand tokens

The system gives you two specific tools for building these moments: omma.build and 21st.dev. They cover different scales and don't overlap. Picking the wrong one wastes hours. Both ultimately hand off to Cowork, which is the actual composition surface for the page.

The three-tool flow, at a glance.
  • Cowork is the primary composition surface. Every showcase page lives in Cowork. Tokens, components, page primitives — all there from your Phase 1 sandbox setup. 95% of the page composes here without leaving Cowork.
  • omma.build is the prototyping surface for one page-level moment. Open it only when a showcase page earns a custom interactive hero, scroll-triggered diagram, or page-level animation. Build the moment static-first in omma with the client's tokens loaded. Export the code project. Hand the export to Cowork pointed at your project repo — Cowork rewires it into your stack with tokens connected.
  • 21st.dev is the component library you copy patterns from. Open it when you need a known component-level pattern (card hover, marquee, accordion, micro-interaction) and the master library doesn't already handle it. Find the pattern, copy the source, paste into Cowork as the seed for your component. Adapt to Punch tokens.

Default to Cowork. If the moment doesn't need page-level orchestration or a fresh component pattern, you don't need either of the other two — the master library + Cowork composition handles it. Reach for omma.build when the page earns a custom moment; reach for 21st.dev when a specific component pattern would take longer to invent than to find.

Decision tree — which tool for which moment

If the moment is…UseWhy
A hero with scroll, parallax, video, or any page-level interactionomma.buildPage-level scope, complex orchestration, needs custom timing
A section-spanning animated diagram or data vizomma.buildFull layout control, not bound to a component
A component-level interaction (card hover, button micro-interaction, scroll-triggered reveal, accordion, marquee)21st.devSmaller scope, often comes with a known pattern, faster path
A static custom illustration, photo treatment, or typography lockupNeitherDesign directly in Figma, hand to dev as asset
Something the master library handles alreadyNeither — use the libraryDon't reinvent. The system handles it.
Something dev would take more than 1 day to build coldPrototype firstSave the dev cycle; let them see what you mean

Working with omma.build — for page-level moments

Page-level interactive moments

Visual builder for scroll-triggered, parallax, and other page-level interactive heroes. Designed for designers, not for hand-coding. Punch uses the team account — ask the CCO for credentials before starting.

When: Phase 1 (homepage hero) or Phase 2 (any showcase page that earns a custom moment). Always after visual styling is locked in Figma, before you code the homepage / before dev builds the page.

Why we invest in the custom hero — the research

The hero isn't a decoration. It's the highest-leverage moment on the page. A few research anchors explain why Punch defaults to investing here:

50 milliseconds. That's how long users take to form a visual judgment of a website's credibility, per Lindgaard et al. (2006, Behaviour & Information Technology) — and the finding has held up across replications. The hero is what they see in that window. Everything else on the page is downstream of whether the first impression earned them a second look.
  • Motion is processed preattentively. Basic visual perception research (Treisman, Wolfe, and the broader feature-integration / guided-search literature) shows movement in the visual field captures attention before conscious processing engages — the eye is involuntarily pulled to it. A well-tuned interactive hero is the difference between a user scrolling past in two seconds and pausing long enough for the rest of the page to do its work.
  • Above-the-fold attention is disproportionate. Eye-tracking studies (Nielsen Norman Group, Chartbeat) consistently find users spend the majority of their viewing time on content above the fold — far more than on content below it. The hero is the bulk of that content. It is the page, for engagement purposes, until the user scrolls.
  • The cybersec B2B credibility dimension. Our buyers are pattern-matching for seriousness in the first seconds. They've seen a hundred stock-template security sites. A well-crafted custom hero answers "is this a real, serious company?" before they read a word of copy. A stock hero leaves them unsure — and on a security purchase, unsure is the same as no.

This is why a well-placed interactive hero is worth the time it takes — it determines whether the rest of the work on the page ever gets read. 99% of the time on a Punch showcase page, the answer to "should this get a custom moment?" is yes. The question is what kind.

The workflow:

  1. Start from "this gets a custom moment" — figure out what kind. For every Punch showcase page, default to a custom moment. The exploration is about what serves the page's argument, not whether to invest. Skip only if you've genuinely explored and there's no moment that earns its place — which is rare.
  2. Open omma.build, start a project named [client]-[page]-[moment]. E.g., cendrix-home-hero, lattice-product-scroll-diagram. Naming matters — the export becomes a folder in the project repo later.
  3. Build static first. Lay out the visual structure without interactions. Paste the client's token values (colors, type sizes, spacing) directly into omma.build's style settings so the prototype is on-brand from the start. If the moment doesn't look right static, it won't look right animated.
  4. Layer interactions in. Scroll triggers, hover states, parallax, timing curves. Iterate until the motion serves the message — not until it's impressive on its own. Restraint is a signal of craft.
  5. Test on mobile. Interactive moments break responsive in ways static designs don't. Resize the omma.build preview to 375px before locking the interaction. If it doesn't work there, redesign — don't punt to dev.
  6. Get a feedback pass from your art director or the CCO before exporting. Don't ship a custom moment to dev without a second set of eyes. That review is where someone catches "this feels off-brand" before you've committed to the export.
  7. Export the repo. omma.build produces a code project. The export is the canonical artifact.
  8. Hand the repo to Cowork pointed at your project. Open Cowork in the client project's working directory and say: "This is the [moment-name] from omma.build. Adapt it to our project stack — [Next.js / Webflow / WordPress]. Connect colors and spacing to our Punch Tokens. Integrate into the [page-name] page." Claude restructures, swaps token references, integrates with the rest of the page.
  9. Review the result in dev preview. Not in Figma, not in omma.build — in the actual built page. Custom moments live or die based on how they feel in context.
  10. Commit the integrated code and link the Asana task to the omma.build URL so the source is findable for future iterations.

Constraints:

  • One custom moment per showcase page is plenty. Two is rare. Three means you're over-investing or the page is doing too much.
  • Don't break the rest of the page's rhythm. If the hero takes 90% of the visual energy, the body should be calmer than usual.
  • Reduced-motion support is required. If a user has prefers-reduced-motion: reduce, the moment must fall back to a static or low-motion version. Build this into the omma.build prototype, not as an afterthought.
  • Performance budget. A custom hero should add no more than ~50KB of JS over the page baseline. If your prototype is heavier, simplify.

omma.build tips & tricks (from experience)

  • Use the team account. The CCO holds the team credentials. Don't sign up with your personal account or you'll lose work when you switch — and the project won't be accessible to the rest of the team.
  • Paste tokens into the project's style settings first thing. Before you build anything visual, load the client's color, type, and spacing values into omma.build's design system / style settings. Designing on top of placeholder values and re-skinning later doubles your time — and it's easy to miss a hardcoded value at export.
  • Design at full desktop viewport (1280 or 1440). omma.build's preview defaults can be misleadingly small. Stretch the canvas to your target viewport before you start composing — what works at 800px often falls apart at 1440px.
  • Build static first, layer interactions second. If the moment doesn't earn its place as a still composition, no amount of motion will save it. Lock the visual layout, get sign-off from the art director or CCO, then add scroll / hover / parallax.
  • Treat scroll triggers as expensive. Every trigger adds JS weight and a chance to break responsive. Two coordinated scroll moments are a lot. Five is too many. The most memorable heroes do one thing well.
  • Name the project [client]-[page]-[moment]. E.g., cendrix-home-hero, lattice-product-scroll-diagram. The exported folder uses this name and gets dropped into the project repo — clean naming saves dev time and makes the source findable later.
  • Test mobile (375px) in omma.build itself before export. Interactive moments break responsive in ways static designs never do. If the moment doesn't degrade gracefully at 375 inside omma.build, it definitely won't degrade gracefully in production — fix it here, not at handoff.
  • Export as a code project, then immediately hand to Cowork. Don't try to manually adapt the export to the project stack. Hand the omma.build folder to Cowork pointed at your project repo with the prompt in step 7 of the workflow above. Cowork rewires it into the client's Next.js / Webflow / WordPress build with tokens connected.
  • Link the omma.build project URL on the Asana task for the page. Future you, dev, and the next designer will all want to find the source. Don't make them ask.

Working with 21st.dev — for component-level patterns

Component-level interactions

Community-built React component library — card flips, scroll reveals, hover micro-interactions, marquees, accordions, etc. Use as inspiration only. Never download raw code; always re-generate via Cowork in the Punch token system using the prompt route.

When: anytime you need a flourish smaller than a hero. Typically Phase 2, during styling or just before dev handoff for a specific page.

21st.dev components ship with their author's stylistic opinions baked in — colors, transition curves, padding, type choices. Trying to adapt a raw snippet by stripping and rebuilding that styling burns 30–60 minutes per component, and the result is always slightly off-brand. We don't do it. Use the prompt route below.

The workflow:

  1. Find the component on 21st.dev that has the interaction pattern you want.
  2. Click Copy prompt. 21st.dev gives you an AI prompt describing the component's behavior in natural language.
  3. Open Cowork pointed at your project.
  4. Paste the prompt with this prefix: "Generate a [component description] for Punch's [client] cybersec site. Use these tokens: [paste relevant tokens or link to tokens.css]. Match the visual style of [reference existing component, e.g., 'our existing FeatureSplitRows']. Then: [paste 21st.dev prompt]."
  5. Claude generates a fresh component that's on-brand from birth — born in Punch's token system, not adapted to it.
  6. Iterate by telling Claude what to change: "make the hover transition slower," "use radius/sm instead of radius/md," "tighten the type ramp."
  7. Drop into /components/custom/[component-name]/.

Why this is the path we use:

  • The component is born in Punch's token system, not adapted to it. No style stripping.
  • You're not bound to the original author's interaction timing or visual choices. You can tell Claude "but with a slower, more considered feel."
  • It's faster end-to-end — 10–15 minutes start to finish.
  • You learn the pattern by reading what Claude generates, which compounds across projects.

Constraints:

  • Token discipline. Every color, spacing, radius in the new component must reference a Punch Token. Inspect each addition's CSS in dev tools — fix any hardcoded values. (No dedicated skill for this yet; if it keeps coming up, flag at the next retrospective as a candidate skill.) Hardcoded values are a regression of the entire system.
  • Accessibility. New components must support keyboard navigation, visible focus states, and prefers-reduced-motion. 21st.dev components vary wildly on a11y — assume they don't, then add what's missing.
  • One component-level flourish per page max unless there's a strong reason. They're seasoning, not the main course.
  • Don't promote to master library yet. Custom components live in the project repo under /components/custom/. If a custom component gets used in 3+ projects, then it earns promotion to the master via a CCO review.

21st.dev tips & tricks (from experience)

  • Browse 21st.dev/community/components — not the homepage. The community gallery is where the interaction patterns live. The marketing surface around it is noise.
  • Search by interaction pattern, not visual style. "Scroll reveal," "card flip," "marquee with pause on hover," "accordion." The original component's colors and type will be replaced — what you're actually shopping for is the behavior.
  • Never download or copy raw code. Every time you do, you commit to 30–60 minutes of un-styling, and the result is always slightly off-brand. Use the prompt route — the component will be born in Punch's token system instead of dragged into it.
  • Tell Cowork what to strip from the original. When you paste the 21st.dev prompt into Cowork, lead with what to ignore: "Use this 21st.dev component as a behavioral reference only. Ignore the original's color choices, font choices, padding, and transition curves. Rebuild in Punch's token system." Otherwise Cowork tends to preserve the original's stylistic opinions.
  • Anchor on an existing Punch component for the visual language. Tell Cowork "match the visual style of FeatureSplitRows" or whatever in your project's component set is closest in feel. This gives Claude a concrete styling reference instead of leaving it to invent one.
  • Iterate with short prompts, not full re-prompts. Once the component is generated, refine it with one-line asks: "slower hover transition," "use radius/sm," "tighten the type ramp," "add focus state matching our button." Re-prompting from scratch loses progress.
  • Bookmark patterns you reach for repeatedly. If you keep coming back to the same kind of scroll-reveal or marquee, save the 21st.dev URL in the Punch shared resources doc. The first three uses are research; the fourth should be a one-prompt task.
  • Test the generated component in isolation first. Drop it on a stub page (or use Cowork's preview), confirm it works at desktop + mobile + with reduced-motion before integrating into the showcase page. Easier to debug in isolation than in context.
  • Always cite the source. Add a comment at the top of the generated component file: /* Inspired by [21st.dev URL] · adapted to Punch tokens via Cowork */. Future you and the next designer will thank you.

Handing custom moments to dev

The dev team needs to know:

  1. Which moments are custom (vs library-instanced)
  2. Where the source lives — omma.build URL, 21st.dev component link, or both
  3. Integration notes — where in the page DOM, what controls the trigger, any timing dependencies
  4. Performance and accessibility considerations specific to that moment

Until the punch-handoff-{nextjs,webflow,wordpress} skills are built, document custom moments in the Asana task for that page: tool used, source URL, integration notes. Dev should be able to read the task and know exactly what they're integrating.

Additional QA for custom moments (on top of the standard gate-4 pass)

  • Interaction works in dev preview, not just in Figma/omma.build/21st.dev preview
  • Reduced-motion fallback works (toggle the OS setting and reload)
  • Mobile at 375px doesn't break the interaction
  • No console errors in the browser
  • Performance impact acceptable — check Lighthouse before/after if you can

This is what justifies showcase-tier. If a page can ship without any custom moments, it should have been standard-tier — you're over-investing.

Discipline around tokens

Visual styling means making decisions WITHIN the token system, not breaking out of it. If you're hand-coding a hex value (#123456) into an override, stop and ask:

  • Should this be a new token? (If you'll use it three times, yes.)
  • Is there an existing token I should be using? (Probably yes.)
  • Is this a one-off that doesn't deserve a token? (Rare; flag it for the CCO.)

Hardcoded values defeat the entire reskin architecture. Audit yourself.

15–20 minutes

Visually style the Lattice homepage

  1. Run all five passes on your composed Lattice homepage. Take ~3 minutes per pass.
  2. For Pass 5 (custom moments): sketch one moment you'd add to the hero or intro section that uses Lattice's deception-tech narrative (e.g., a stylized "decoy network" visual or a moment where the headline visibly shifts to reveal a hidden meaning).
  3. Press Shift + G periodically to verify nothing has broken alignment after your overrides.
  4. Run a manual token discipline check at the end (ask Claude: "Inspect the Lattice homepage's CSS for hardcoded color, spacing, or radius values that should be Punch Tokens. Flag any you find."). Fix anything flagged. (No dedicated skill for this yet — candidate for the retrospective queue if it becomes a recurring pain point.)
Deliverable: a styled Lattice homepage that reads as a real, branded cybersec marketing site. At least one custom moment sketched. Zero hardcoded values per the audit.

Self-check before moving on

  • I've run all five styling passes on my homepage
  • At least one custom moment is sketched
  • Token audit returns clean (no hardcoded values)
  • Grid alignment is intact (Shift + G to verify)
Module 07

QA & handoff

20 min READING + HANDS-ON
What you'll learn

The eight gates from the workflow doc — when each fires, who owns it, what your role is. The QA skills available to designers and when to run them. How to run the per-batch QA gate at speed.

The eight gates, your responsibility per gate

#GateYour role
1Brand sign-off (theme picked)If you're a theme designer, present alongside strategist. Otherwise wait — strategist + client.
2Sitemap sign-offWait — strategist + client.
3Homepage direction pickedOwn with strategist. Co-present the two homepage takes; client picks one. Walk through interaction in the live build, not slides.
4Wireframe sign-off (copy + structure)Internal review pass when invited — flag any sections that won't compose cleanly before client sees it. The strategist owns the client sign-off itself; you inherit the locked copy + structure for your Phase 2 composition.
5Per-batch QA (15-min meetings)Own. All four roles meet for 15 min per batch. Your responsibility: visual consistency, mobile/tablet/desktop integrity, token discipline, copy match. Production Artist runs the lint pass before this meeting.
6Pre-launch QA (TDM)Support TDM — answer questions about your design intent. The orchestrator (punch-pre-launch-qa) auto-runs copy-lint + link-check + asset-audit + accessibility-review + term-drift. If any BLOCKER hits your composed pages, you own the fix.
7Internal sign-off before client preview (CCO)Own for design changes. If you made a visual change in response to internal feedback, you sign off before it ships to the preview URL.
7+1Post-launch retrospectiveShow up. Your perspective on what worked, what didn't, and what should change in the design system or skill suite feeds back into how the next project runs. Specific candidates from a designer's seat: new omma.build tips, Cowork prompts that didn't work, brand fork rough edges, components missing from the master library.

QA skills available to designers

You don't need to remember all of them — the orchestrator runs the right ones at the right time. But knowing what each catches helps you self-QA at composition time so you're not surprised at Gate 5 or Gate 6.

SkillWhat it catchesWhen to run it yourself
punch-copy-lintDouble spaces, missing spaces after punctuation, comment artifacts that leaked from BugHerd/Asana, placeholder text, hype words from Punch's anti-hype list, smart-vs-straight quote inconsistency, trailing whitespace, empty paragraphs, spelling. Plus the structural lints inherited from the wireframe pass: trailing periods on H2/H3, eyebrow-as-heading, orphan-eyebrow, eyebrow-overuse, stat-label-as-heading, multiple-h1, skipped-heading-levels, missing meta/canonical/og/JSON-LD/FAQ-schema/Person-schema.After you compose a page in Cowork, before handing to Production Artist for their self-QA. Cheapest fix is at composition time.
punch-link-checkEvery href, image src, video src, anchor link, and external URL. Verifies internal links resolve, anchors resolve to IDs on target pages, assets exist in assets/, external links return 200.After you compose. CTAs are the most common silent failure — a typo in the destination URL passes visual review every time.
punch-asset-auditAsset placement against the project's assets-manifest.yaml. Catches wrong-asset-on-wrong-section, orphan assets in the manifest, untracked files in the assets folder.After Production has run the amplifier — they own this. You support if a flagged placement was your intent.
design:accessibility-reviewWCAG 2.1 AA: color contrast, touch target size, keyboard navigation, screen reader behavior, focus states, alt text.After you've made visual styling decisions in Module 6. Catches contrast issues that are expensive to fix once tokens are locked.
punch-production-artist-qaProduction Artist's self-QA checklist — auto-invokes punch-copy-lint + punch-link-check, then walks the artist through manual checks (asset placements, comment leaks, console errors, responsive integrity).Production Artist owns; you see results at Gate 5.
punch-pre-launch-qaThe Gate 6 orchestrator. TDM-owned. Auto-runs all the above plus punch-term-drift. Aggregated report with severity tiers. Exit code 1 if any BLOCKERS — launch blocked until clean.TDM owns; you fix any design-impacting BLOCKERS.
punch-term-driftStale terminology that drifted into the project during the engagement — old paradigm language, deprecated skill references, etc. Reads a terminology.yaml catalogue.TDM owns at Gate 6. You don't usually run this — but if you introduce new vocabulary in a custom moment that becomes a pattern, flag it so it gets added to the catalogue.
punch-retrospectiveThe Phase 4 post-launch retro — captures team learnings, files candidate skill updates.PM owns the scheduling and runs the skill; you participate.

Designer brings every showcase page to life — via Cowork

Per the workflow, designers (not dev) take the Phase 0 two homepages and every Phase 2 showcase page from Figma composition to a working desktop-only static preview in the project's stack. Dev then cleans up what you built — extends it to tablet and mobile, wires it to the CMS, handles a11y and performance polish. They are not re-coding from scratch. Your code is the foundation; theirs is the cleanup pass.

This split reflects who's closest to each kind of work: showcase pages live or die on the craft and visual judgment you bring at desktop scale; the responsive math, CMS integration, and performance work live or die on the rigor dev brings.

Phase 0 weeks 2–4 — brand elements + two homepage takes. Once the strategist locks the chosen Big Idea in copy-brief.md, you ramp up. First couple days: build out the brand element samples (type system, color usage, collateral examples) so the chosen Big Idea has visual form. Then code two homepage takes with different hero interactions — one "safe" (calmer, more straightforward), one "creative/interactive" (more motion-forward) — for the client to pick from at Gate 3. Both takes are real functioning code at desktop, not static mockups. Both carry the same Big Idea; they differ specifically in how the hero interaction expresses it.

Phase 1 — finalize chosen homepage + sandbox spec. After Gate 3 the client has picked one take. You finalize that one (refine to ship quality, pour real copy from the writer's draft at draft lock) and build the sandbox spec alongside — tokens.css, components.html, typography.html, sample-page.html. This becomes dev's reference for the rest of the site. ~1 week of focused work in Cowork.

Typical Phase 0 + Phase 1 homepage output:

  • tokens.css — generated automatically by punch-token-export from your Figma variables
  • components.html — 6–8 core components rendered in every state
  • typography.html — every type style with sample copy
  • home-a.html + home-b.html at end of Phase 0 — the two takes, desktop-only at 1280px, fully token-bound. After Gate 3, one becomes sample-page.html (the canonical reference for dev).

Phase 2 — every other showcase page. For each one (product page, key use case pages, about, etc.), the loop is:

  1. Partial design in Figma — skeleton + initial styling, enough to lock visual direction
  2. Bring to life in Cowork — point Cowork at your project folder, ask it to generate the desktop static preview from your Figma + the brief
  3. Iterate via prompts in Cowork — "make the hero bigger," "swap this section's CTA to /demo," "tighten the vertical rhythm in the features section"
  4. Add custom moments per Pass 5 (omma.build for page-level, 21st.dev for component-level)
  5. Result: a desktop-only static preview of the showcase page in the project's stack — token-bound, at 1280px, with the responsive intent notes (below) written into the page's brief file so dev knows where you want it to go on smaller screens

Per-page time budget: 4–8 hours per showcase page depending on custom moments. You are not shipping production responsive code, hand-writing React component files, or wiring up CMS data. You are producing a polished, opinionated desktop reference that dev cleans up. Optimize for "the page reads correctly at 1280px and the visual system holds up."

Responsive intent notes — your handoff to dev's cleanup pass

You design at desktop. Dev codes the responsive math. The bridge between you is a short responsive intent note for each showcase page, dropped into the page's brief file. Dev reads this during cleanup so they don't have to guess what you wanted at tablet and mobile.

What to include per page (3–6 bullets max — keep it tight):

  • Hero behavior at <1024: stack/reflow/swap to mobile-only variant?
  • Section spacing scale: any section where you want spacing to not collapse at mobile (e.g., editorial breathing room you want preserved)
  • Image crops: if a hero or feature image needs an alternate crop at mobile, name the asset (or just say "use the square crop from Standard Page Assets")
  • Custom moments: what should the omma.build/21st.dev moment degrade to on mobile? Static image? Simplified animation? Skip entirely?
  • Type scale: any place you want type to not auto-scale down (e.g., a manifesto heading you want to keep big even at 375)

If you don't write this, dev's cleanup will be slower and they'll make guesses you may not love. 10 minutes per page now saves an hour of back-and-forth later.

Copy lock moments — when content stops moving

The client's website content/copy goes through three lock moments. Knowing when each happens prevents the most expensive design problem: re-doing layout because copy changed under you.

MomentWhenWhat you can rely on after this
Draft lockEnd of Phase 0, before Phase 1 homepage(s)The homepage content brief is final-enough to compose against. Section order, headlines, body copy directionally settled. Don't start composing earlier than this.
Showcase lockAfter Phase 1 homepage finalization, before Phase 2 batch startEach showcase page's brief is locked. You can skeleton + bring to life knowing copy won't shift mid-build.
Final copy lockBefore CMS pilot (gate 5)Real copy goes into the CMS. Standard pages get the final copy on the same pass. After this, copy changes are changes, not iteration.

If a client wants to change copy after a lock, that's fine — it's their site. But flag it to the strategist as a change request rather than absorbing it silently. Otherwise the page count of "1.5–2 days per showcase" stops being honest.

The tool: Cowork, not Claude Code. Cowork is your surface — chat + Figma MCP + project file tools all in one. You're not opening a terminal. You're not writing React/Next code by hand. You're prompting Claude through Cowork to do that while you stay focused on visual decisions and pacing. If you find yourself wishing for a terminal, you're probably reaching for the wrong tool — ask Cowork first.

What dev actually does after handoff (so you know what you're handing to). Dev takes your desktop static preview as the spec and the responsive intent notes as the playbook. They extend your existing code — they're not starting over. Their work is: build 768 and 375 breakpoints from your responsive notes, swap any mobile-specific assets, wire sections to the CMS, run performance and a11y polish, and template the standard pages off your sandbox. The faster and clearer your desktop preview is, the faster their cleanup goes.

Standard pages — designer's only deliverable is visual assets

Standard pages (services, contact, legal, blog index, article, news, team, etc.) get templated by dev directly from the sandbox spec without a Figma pass. Your role on these is narrower than showcase pages, and important:

Maintain a single Figma frame in your client fork called "Standard Page Assets". This frame contains every visual asset the standard pages need across the project — hero photos, brand-specific illustrations, custom icons, data viz, anything that isn't system-provided. Dev exports from this frame at build time.

Rules of thumb for this frame:

  • Organize by page. Group assets under sub-frames named after each standard page (e.g., "About page assets," "Contact page assets," "Blog index assets"). Dev should be able to find what they need by page name.
  • Name layers clearly. about-hero-photo, contact-illustration, blog-list-thumbnail-template. Dev exports based on these names.
  • Provide at correct resolution. 2x for raster, vector where possible. Don't make dev guess at sizes.
  • Don't open the standard pages themselves in Figma. No skeleton, no composition, no per-section design. Dev handles that from the sandbox. Your job ends at the asset frame.

This means standard pages don't take design time beyond asset preparation. Resist the urge to design them anyway — that's the over-investment trap.

Per-batch QA, Gate 5 — the 15-minute version

At the end of every Phase 2 batch (usually 3–4 showcase pages), the four roles meet for 15 minutes: PM, Strategist, Writer, Lead Designer. Production Artist has already run punch-production-artist-qa on each page before this meeting — so copy-lint and link-check issues are surfaced (and ideally fixed) before you walk in. Gate 5 is the strategic alignment pass, not the bug hunt.

Your specific QA pass before the meeting (5–10 minutes per page during composition):

  1. Visual consistency (3 min): Scroll all pages in batch side-by-side. Same eyebrow rhythm (and same eyebrow scarcity — see Module 6), same headline rhythm, same section spacing? Anything that breaks pattern?
  2. Mobile/tablet (3 min): Resize to 768 then 375 on the static preview. Anything broken? Touch targets too small? Content collapsing weirdly?
  3. Token discipline (3 min): Inspect each page's CSS in dev tools — fix any hardcoded color/spacing values that should be tokens. If you spot a pattern, surface it to the asset audit team. (No dedicated skill for this — manual check.)
  4. Copy match (3 min): Run punch-copy-lint on the composed page. Cross-check the page's text against the locked brief — anything missing or extra? Anything that broke the wireframe's structural decisions (orphan eyebrows, period drift, heading skips)?
  5. Accessibility quick-pass (3 min): Run design:accessibility-review. Address color contrast, focus states, alt text gaps.

If any of these fail at the gate, the batch isn't done. Either fix on the spot (if <15 min) or push to the next batch with a written note.

10 minutes

Run a QA pass on your Lattice homepage

  1. Run all five 3-minute QA checks above on your composed + styled Lattice homepage from Module 6.
  2. Note anything that fails — even minor things. This is practice for the muscle.
  3. For anything that fails, decide: fix on the spot, or note for the batch retro?
  4. If you ran the token audit in Module 6 already, just refresh.
Deliverable: a five-bullet QA notes summary on the Lattice homepage. Even if everything passes, write the notes — the practice is the point.

Self-check before moving on

  • I can name all eight gates (G1–G7 plus G7+1 retro) and which I own
  • I know the 5-step per-batch QA pass and can run it in 15 minutes
  • I know which QA skills run on my composed pages (copy-lint, link-check, accessibility-review) and which the orchestrator handles (pre-launch-qa, term-drift)
  • I understand "desktop-only static preview" is my output — dev cleans up to responsive production
  • I know to write responsive intent notes (3–6 bullets per showcase page)
  • I can name the three copy lock moments and what each unlocks
  • I know Phase 4 happens (retrospective within 2 weeks of launch) and that I participate
  • I've run the practice QA on my Lattice homepage
Module 08

Quick reference card

10 min REFERENCE
What you'll learn

A condensed, printable cheat sheet for everything in this onboarding. Print it, pin it next to your monitor, or bookmark this anchor.

Starting a new client project

  1. Create file Punch · [Client] · Website in the team space.
  2. Subscribe to the library (Assets → Libraries → toggle Punch · Website Starter (Master)).
  3. Duplicate Cendrix Tokens collection into your file, rename to Punch Tokens.
  4. Override token values per the client brand guide.
  5. Smoke-test with a Nav instance + run punch-rebind. Confirm reskin.

Composing a showcase page

  1. Strategist hands you content/[page].md — the structured brief.
  2. Open Cowork pointed at the project repo. Confirm punch-website plugin is loaded and sandbox/ has the design system + tokens.
  3. Re-read the Big Idea in copy-brief.md. Have a one-sentence intent in mind.
  4. Ask Cowork: "Build the [page] from content/[page].md into sandbox/[page].html. Compose against the existing design system. Big Idea is [X] — favor [Y]."
  5. Open the file in browser. Verify it renders at 1280 / 768 / 375 in client brand tokens — not master neutral.

Styling pass order

  1. Type weight & hierarchy
  2. Color emphasis (accent placement)
  3. Photography & imagery (replace placeholders)
  4. Section spacing & rhythm
  5. Custom moments (at least one per showcase page)

Where things live

  1. Master Figma library — Punch team space, file: Punch · Website Starter (Master)
  2. Client Figma forks — Punch team space, file: Punch · [Client] · Website
  3. Standard Page Assets frame — inside the client fork; a single Figma frame holding every visual asset standard pages need. Dev exports from here at build time.
  4. Showcase page composition + desktop static preview — designer's responsibility, end to end via Cowork pointed at the project repo. Dev cleans up to responsive production.
  5. Responsive intent notes — 3–6 bullets per showcase page in the page's brief file. Designer writes; dev reads during cleanup.
  6. Standard page builds — dev's responsibility, built directly from the sandbox spec; designer never opens these in Figma
  7. Content briefs & sitemap.yaml — Google Drive project folder (created with Claude, not hand-written)
  8. Project tasks / sprint tracking — Asana, the project board for that client
  9. Visual proofs & client review — PunchProof
  10. Page-level interactive prototypesomma.build (handed to Cowork for final repo integration). Use the team account — credentials from the CCO.
  11. Component-level interaction patterns21st.dev/community/components (prompt route only — generate via Cowork in your token system; never download raw code)
  12. Designer AI surfaceClaude Cowork. Chat + Figma MCP + project file tools. You don't open Claude Code.
  13. Dev AI surface — Claude Code (terminal-based). Devs use this for standard pages and integration work.
  14. Async walkthroughs & feedback context — Loom if recorded, otherwise Slack
  15. Taste-level feedback — your art director, the CCO, and the strategist on the client project. Not formal "crit"; ad hoc asks via Slack, Loom, or in person.
  16. Fast questions — Slack (ask your art director for the right channel)

Per-batch QA (15 min, Gate 5)

  1. Visual consistency (3 min) — eyebrow rhythm, headline rhythm, section spacing
  2. Mobile/tablet at 768 + 375 (3 min)
  3. Token discipline (3 min) — manual inspection for hardcoded values
  4. Copy match via punch-copy-lint (3 min) — also catches orphan eyebrows, period drift, heading skips
  5. Accessibility via design:accessibility-review (3 min)

Production Artist runs punch-production-artist-qa on each page BEFORE the meeting — lint + link-check are already surfaced (and ideally fixed). Gate 5 is the strategic alignment pass, not the bug hunt.

The eight gates & who owns each

  1. Gate 1 — Brand sign-off (theme pick) · Strategist + Client
  2. Gate 2 — Sitemap sign-off · Strategist + Client
  3. Gate 3 — Homepage direction pick · Strategist + Designer + Client
  4. Gate 4 — Wireframe sign-off (copy + structure) · Strategist + PM + Client. You: internal review pass when invited.
  5. Gate 5 — Per-batch QA · All four roles (PM + Strategist + Writer + Lead Designer)
  6. Gate 6 — Pre-launch QA orchestrator · TDM + Dev + Production. You: support, fix any design-impacting BLOCKERS.
  7. Gate 7 — Internal sign-off before client preview · CCO + Strategist + PM. Change owner (you, for design changes).
  8. Gate 7+1 — Post-launch retrospective · PM + full project team. You: show up.

QA skills you should know

  1. punch-copy-lint — prose QA + structural lints (orphan-eyebrow, period drift, heading skips, missing schema). Run after composing.
  2. punch-link-check — every href / src verified. Run after composing.
  3. design:accessibility-review — WCAG 2.1 AA. Run after styling decisions land.
  4. punch-production-artist-qa — Production Artist's checklist (runs the above two automatically). They own; you see results at Gate 5.
  5. punch-pre-launch-qa — Gate 6 orchestrator. TDM owns. Auto-runs everything plus punch-term-drift. BLOCKERS block launch.
  6. punch-term-drift — terminology consistency. TDM owns at Gate 6.
  7. punch-retrospective — Phase 4 post-launch retro. PM owns; you participate.

The phase timing — typical 8-week project + 2-week retro window

  1. Phase 0 · ~4 weeks — Strategy + brand + two homepage takes. You ramp up in weeks 2–4.
  2. Phase 1 · ~1.5 weeks — Finalize chosen homepage + sandbox spec. Wireframe phase happens here (strategist-owned). Gate 4 wireframe sign-off.
  3. Phase 2 · ~2 weeks — Interior showcase pages by batch. ~4–8 hrs/page in Cowork. Gate 5 per batch.
  4. Phase 3 · ~1 week — Review, dev cleanup, Gate 6 pre-launch QA, Gate 7 internal sign-off, client launch sign-off, CMS migration, launch.
  5. Phase 4 · within 2 weeks of launch — Post-launch retrospective. Show up, share what you learned.

The Big Idea — your design spine

  1. Open copy-brief.md before every design pass. The Big Idea + "what it evokes" sentence at the top is your spine.
  2. Every visual decision answers: does this make the Big Idea land harder?
  3. Restrained Big Ideas ("assurance," "ease") want generous space, scarce accent, calmer hierarchy.
  4. Louder Big Ideas ("ready," "direct") can carry tighter rhythm and more decisive type weight.
  5. Fusion check: are copy and design supporting each other, or fighting? If fighting, flag.

When in doubt, ask these five questions

  1. Whose work is this? If it's not yours, you're supporting, not owning.
  2. Which gate are we at? If you can't name it, you've drifted off the workflow.
  3. Showcase or standard tier? If standard, you probably shouldn't be designing it.
  4. Does this evoke the Big Idea? Open copy-brief.md. If unsure, the answer is usually no.
  5. Has a human signed off on this change? If not, it doesn't ship to client preview.