Punch Docs · Designer Track
Designer Onboarding
Everything a Punch designer needs to use the website design system end-to-end. Eight modules. Hands-on exercises in your own Figma. Roughly three hours, self-paced.
- Wireframe principles codified. Ten rules synthesized from the Auria build now govern every wireframe — source-fidelity rendering, eyebrow scarcity, light/dark theme toggle, and the canonical Punch Docs feedback tutorial.
- No-enhancement rule introduced. The renderer now pours source copy verbatim — no auto-stripping periods, no inventing eyebrows, no rephrasing CTAs. Copy discipline moves to writers and strategists.
- Two new operating skills.
punch-term-driftauto-catches stale terminology againstterminology.yaml;punch-retrospectiveritualizes the end-of-project learning loop.
If you've onboarded before, the full changelog is your re-entry point. The modules below are for first-read.
Orientation
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.
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:
- 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.
- 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. - 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.
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, andtokens.jsonautomatically 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.
Strategy, Brand & Two Homepages
~4 weekscopy-brief.md at end of week 2.
Foundation — finalize homepage + sandbox
~1 weektokens.css, components.html, typography.html, sample-page.html.
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.
/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.
Interior pages — batched, tiered
~2 weeks/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.
Review + Launch
~1 weekLearn — post-launch retrospective
~2 weeks post-launchpunch-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.
punch-term-drift post-launch to catch any stale terminology that may have crept in during CMS migration or post-launch edits.
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-exportat dev handoff andpunch-omma-exportfor the omma integration.
Where designers fit, by phase
| Phase | What designers do | What 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.
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.
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.
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.
This document. Eight modules, hands-on practice, ~3 hours. Get through it once before your first project; come back to specific modules as reference.
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)
| Layer | What it contains | Owner | Duplicated per client? |
|---|---|---|---|
punch-website plugin | All punch-* skills — the capabilities | CCO | No — installed once |
| Punch master Figma library | Master components, base tokens collection, scaffolds | CCO | No — subscribed by every fork |
| Client Figma fork | Local 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. | Designer | Yes — one per client |
| Client project folder (local + Drive) | sitemap.yaml, content/*.md, tokens.css, dev handoff outputs, exported assets | Designer + strategist | Yes — 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.
- 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. - 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. - 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.
- 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.
- 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.
- Don't pre-load skill content into chat. Resist the urge to paste a skill's
SKILL.mdinto 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.
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-websiteplugin (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
Tour the Master
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:
- Reference pages (Cover & README, ◆ Foundations · Tokens, 🪧 Brand Assets, ⊟ Layout & Grid, ✅ Handoff Checklist)
- 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.
Tour the master file
- Open Punch · Website Starter (Master). You should have viewer access; ask the CCO if you don't.
- Read the Cover & README page. It lists every page and what's on each.
- Open ◆ Foundations · Tokens. Browse the color swatches, type ramp, space scale, and radius examples. Note the token names — you'll reference them constantly.
- 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.
- Open ⊟ Layout & Grid. Note the three breakpoints (1280 / 768 / 375). Press Shift + G on any frame to toggle layout grids on.
- 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.
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)
Set up a client fork
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 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.
- Create the file. In the Punch team space, new file named
Punch · [Client] · Website. - Subscribe to the library. Assets panel → Libraries → toggle on Punch · Website Starter (Master). All 44 components become available.
- Create the local
Punch Tokenscollection. Either duplicate the Cendrix sample fork's tokens collection as a template, or build fresh. - Fill in token values. Match the client's brand guide. Colors, type sizes, radii, spacing.
- 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/0throughspace/12 - Radius (6):
radius/{none, sm, md, lg, xl, full} - Motion (3):
motion/duration/{fast, base, slow}
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.
- In your Figma team space (or drafts if you don't have team access yet), create a new file named
Punch · Lattice · Practice. - Open Assets panel → Libraries → toggle on Punch · Website Starter (Master). Confirm the components appear in the Assets panel.
- Open the Cendrix sample fork in a separate tab. Copy its
Cendrix Tokenscollection (Variables panel → click collection name → Duplicate). - Paste it into your Lattice file. Rename it to
Punch Tokens. - Override these key values for the Lattice brand:
color/brand/primary→#0E1729(deep blue-black)color/brand/accent→#FF6B2C(vivid orange)color/surface/1→#FFFFFFcolor/surface/2→#F4F4F5color/surface/inverse→#0E1729color/text/accent→#D14F18(orange darkened for AA contrast)radius/sm→2,radius/md→4,radius/lg→8(sharper)
- 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.
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).
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
Build a showcase page
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.
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.
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.
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-exportskill then writestokens.cssfor 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
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 type | Typical section sequence |
|---|---|
| Homepage | nav → hero → intro → feature_split_rows → integration_grid → stat_strip → compliance → cta → footer |
| Product page | nav → hero → intro → feature_split_rows → integration_grid → compliance → stat_strip → comparison_table → faq → demo_form → footer |
| Use case | nav → hero → intro → manifesto → feature_split_rows → stat_strip → quote → cta → footer |
| About | nav → hero → manifesto → content_split → stat_strip → team → staggered_cards → quote → cta → footer |
| Demo | nav → 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.
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.
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.
- Clone or open the Lattice practice repo. Confirm
sandbox/already has the homepage you composed earlier in this onboarding, plustokens.cssandcomponents.html. - Open the brief. Read it once end-to-end. Notice the section list — it'll be roughly the product-page sequence above.
- 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). - Open Cowork pointed at the Lattice repo. Confirm the
punch-websiteplugin is loaded. - Say: "Build the product page from
content/product-page.mdintosandbox/product.html. Compose against the existing design system insandbox/components.htmlandtokens.css. Big Idea is 'earned trust' — favor restrained hierarchy, generous breathing room, no marketing exuberance." - Watch Cowork work. It'll read the brief, the existing system, your direction, and write the page. First draft typically takes 1–3 minutes.
- Open
sandbox/product.htmlin your browser. Verify it renders, hits the breakpoints (1280 / 768 / 375), and pulls Lattice tokens — not master neutrals.
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.
Self-check before moving on
- I've opened
sandbox/components.htmland seen what's already in the Lattice design system - I've re-read the Lattice Big Idea in
copy-brief.mdbefore composing sandbox/product.htmlexists, 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
Direct Cowork effectively
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.
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
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.cssis 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:
- Existing structural draft + named tokens + named components. "Iterate the hero from sandbox/product.html — use the oversize hero variant, set
--space-section-ytoxl, push--color-accentusage in the eyebrow only." Numbers and component names beat adjectives. Cowork can't infer these from a screenshot. - 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.
- 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.
- Counter-examples. "Like this Linear page, but not centered the way Vercel does it." Eliminates the wrong neighborhoods.
- Multiple inspirations with role labels. "Layout from A. Type rhythm from B. Color discipline from C." Three labeled references beat three loose ones.
- 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
heroframe in the Figma file." Useful when a specific layout decision is worth the Figma round-trip. Deliberate detour, not the default. - 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.
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.
- Decide which dimension of the inspiration you're trying to transfer: layout? type rhythm? color emphasis? Pick one or two, not all.
- 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").
- Name the components and tokens you want used by exact name from the design system.
- Describe the intent in one sentence ("this hero should feel earned, not aggressive — the brand is mature, the page should feel that way").
- Say: "Iterate the hero in sandbox/product.html with those constraints."
- 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.
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
Style visually
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.
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.
- 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.
- 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… | Use | Why |
|---|---|---|
| A hero with scroll, parallax, video, or any page-level interaction | omma.build | Page-level scope, complex orchestration, needs custom timing |
| A section-spanning animated diagram or data viz | omma.build | Full layout control, not bound to a component |
| A component-level interaction (card hover, button micro-interaction, scroll-triggered reveal, accordion, marquee) | 21st.dev | Smaller scope, often comes with a known pattern, faster path |
| A static custom illustration, photo treatment, or typography lockup | Neither | Design directly in Figma, hand to dev as asset |
| Something the master library handles already | Neither — use the library | Don't reinvent. The system handles it. |
| Something dev would take more than 1 day to build cold | Prototype first | Save the dev cycle; let them see what you mean |
Working with omma.build — for page-level 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:
- 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:
- 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.
- 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. - 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.
- 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.
- 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.
- 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.
- Export the repo. omma.build produces a code project. The export is the canonical artifact.
- 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.
- 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.
- 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
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:
- Find the component on 21st.dev that has the interaction pattern you want.
- Click Copy prompt. 21st.dev gives you an AI prompt describing the component's behavior in natural language.
- Open Cowork pointed at your project.
- 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]." - Claude generates a fresh component that's on-brand from birth — born in Punch's token system, not adapted to it.
- Iterate by telling Claude what to change: "make the hover transition slower," "use
radius/sminstead ofradius/md," "tighten the type ramp." - 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:
- Which moments are custom (vs library-instanced)
- Where the source lives — omma.build URL, 21st.dev component link, or both
- Integration notes — where in the page DOM, what controls the trigger, any timing dependencies
- 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.
Visually style the Lattice homepage
- Run all five passes on your composed Lattice homepage. Take ~3 minutes per pass.
- 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).
- Press Shift + G periodically to verify nothing has broken alignment after your overrides.
- 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.)
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)
QA & handoff
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
| # | Gate | Your role |
|---|---|---|
| 1 | Brand sign-off (theme picked) | If you're a theme designer, present alongside strategist. Otherwise wait — strategist + client. |
| 2 | Sitemap sign-off | Wait — strategist + client. |
| 3 | Homepage direction picked | Own with strategist. Co-present the two homepage takes; client picks one. Walk through interaction in the live build, not slides. |
| 4 | Wireframe 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. |
| 5 | Per-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. |
| 6 | Pre-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. |
| 7 | Internal 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+1 | Post-launch retrospective | Show 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.
| Skill | What it catches | When to run it yourself |
|---|---|---|
punch-copy-lint | Double 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-check | Every 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-audit | Asset 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-review | WCAG 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-qa | Production 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-qa | The 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-drift | Stale 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-retrospective | The 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 bypunch-token-exportfrom your Figma variablescomponents.html— 6–8 core components rendered in every statetypography.html— every type style with sample copyhome-a.html+home-b.htmlat end of Phase 0 — the two takes, desktop-only at 1280px, fully token-bound. After Gate 3, one becomessample-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:
- Partial design in Figma — skeleton + initial styling, enough to lock visual direction
- Bring to life in Cowork — point Cowork at your project folder, ask it to generate the desktop static preview from your Figma + the brief
- Iterate via prompts in Cowork — "make the hero bigger," "swap this section's CTA to /demo," "tighten the vertical rhythm in the features section"
- Add custom moments per Pass 5 (omma.build for page-level, 21st.dev for component-level)
- 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.
| Moment | When | What you can rely on after this |
|---|---|---|
| Draft lock | End 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 lock | After Phase 1 homepage finalization, before Phase 2 batch start | Each showcase page's brief is locked. You can skeleton + bring to life knowing copy won't shift mid-build. |
| Final copy lock | Before 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):
- 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?
- Mobile/tablet (3 min): Resize to 768 then 375 on the static preview. Anything broken? Touch targets too small? Content collapsing weirdly?
- 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.)
- Copy match (3 min): Run
punch-copy-linton 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)? - 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.
Run a QA pass on your Lattice homepage
- Run all five 3-minute QA checks above on your composed + styled Lattice homepage from Module 6.
- Note anything that fails — even minor things. This is practice for the muscle.
- For anything that fails, decide: fix on the spot, or note for the batch retro?
- If you ran the token audit in Module 6 already, just refresh.
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
Quick reference card
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
- Create file
Punch · [Client] · Websitein the team space. - Subscribe to the library (Assets → Libraries → toggle Punch · Website Starter (Master)).
- Duplicate Cendrix Tokens collection into your file, rename to
Punch Tokens. - Override token values per the client brand guide.
- Smoke-test with a Nav instance + run
punch-rebind. Confirm reskin.
Composing a showcase page
- Strategist hands you
content/[page].md— the structured brief. - Open Cowork pointed at the project repo. Confirm
punch-websiteplugin is loaded andsandbox/has the design system + tokens. - Re-read the Big Idea in
copy-brief.md. Have a one-sentence intent in mind. - 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]."
- Open the file in browser. Verify it renders at 1280 / 768 / 375 in client brand tokens — not master neutral.
Styling pass order
- Type weight & hierarchy
- Color emphasis (accent placement)
- Photography & imagery (replace placeholders)
- Section spacing & rhythm
- Custom moments (at least one per showcase page)
Where things live
- Master Figma library — Punch team space, file: Punch · Website Starter (Master)
- Client Figma forks — Punch team space, file: Punch · [Client] · Website
- 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.
- 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.
- Responsive intent notes — 3–6 bullets per showcase page in the page's brief file. Designer writes; dev reads during cleanup.
- Standard page builds — dev's responsibility, built directly from the sandbox spec; designer never opens these in Figma
- Content briefs & sitemap.yaml — Google Drive project folder (created with Claude, not hand-written)
- Project tasks / sprint tracking — Asana, the project board for that client
- Visual proofs & client review — PunchProof
- Page-level interactive prototypes — omma.build (handed to Cowork for final repo integration). Use the team account — credentials from the CCO.
- Component-level interaction patterns — 21st.dev/community/components (prompt route only — generate via Cowork in your token system; never download raw code)
- Designer AI surface — Claude Cowork. Chat + Figma MCP + project file tools. You don't open Claude Code.
- Dev AI surface — Claude Code (terminal-based). Devs use this for standard pages and integration work.
- Async walkthroughs & feedback context — Loom if recorded, otherwise Slack
- 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.
- Fast questions — Slack (ask your art director for the right channel)
Per-batch QA (15 min, Gate 5)
- Visual consistency (3 min) — eyebrow rhythm, headline rhythm, section spacing
- Mobile/tablet at 768 + 375 (3 min)
- Token discipline (3 min) — manual inspection for hardcoded values
- Copy match via
punch-copy-lint(3 min) — also catches orphan eyebrows, period drift, heading skips - 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
- Gate 1 — Brand sign-off (theme pick) · Strategist + Client
- Gate 2 — Sitemap sign-off · Strategist + Client
- Gate 3 — Homepage direction pick · Strategist + Designer + Client
- Gate 4 — Wireframe sign-off (copy + structure) · Strategist + PM + Client. You: internal review pass when invited.
- Gate 5 — Per-batch QA · All four roles (PM + Strategist + Writer + Lead Designer)
- Gate 6 — Pre-launch QA orchestrator · TDM + Dev + Production. You: support, fix any design-impacting BLOCKERS.
- Gate 7 — Internal sign-off before client preview · CCO + Strategist + PM. Change owner (you, for design changes).
- Gate 7+1 — Post-launch retrospective · PM + full project team. You: show up.
QA skills you should know
punch-copy-lint— prose QA + structural lints (orphan-eyebrow, period drift, heading skips, missing schema). Run after composing.punch-link-check— every href / src verified. Run after composing.design:accessibility-review— WCAG 2.1 AA. Run after styling decisions land.punch-production-artist-qa— Production Artist's checklist (runs the above two automatically). They own; you see results at Gate 5.punch-pre-launch-qa— Gate 6 orchestrator. TDM owns. Auto-runs everything pluspunch-term-drift. BLOCKERS block launch.punch-term-drift— terminology consistency. TDM owns at Gate 6.punch-retrospective— Phase 4 post-launch retro. PM owns; you participate.
The phase timing — typical 8-week project + 2-week retro window
- Phase 0 · ~4 weeks — Strategy + brand + two homepage takes. You ramp up in weeks 2–4.
- Phase 1 · ~1.5 weeks — Finalize chosen homepage + sandbox spec. Wireframe phase happens here (strategist-owned). Gate 4 wireframe sign-off.
- Phase 2 · ~2 weeks — Interior showcase pages by batch. ~4–8 hrs/page in Cowork. Gate 5 per batch.
- Phase 3 · ~1 week — Review, dev cleanup, Gate 6 pre-launch QA, Gate 7 internal sign-off, client launch sign-off, CMS migration, launch.
- Phase 4 · within 2 weeks of launch — Post-launch retrospective. Show up, share what you learned.
The Big Idea — your design spine
- Open
copy-brief.mdbefore every design pass. The Big Idea + "what it evokes" sentence at the top is your spine. - Every visual decision answers: does this make the Big Idea land harder?
- Restrained Big Ideas ("assurance," "ease") want generous space, scarce accent, calmer hierarchy.
- Louder Big Ideas ("ready," "direct") can carry tighter rhythm and more decisive type weight.
- Fusion check: are copy and design supporting each other, or fighting? If fighting, flag.
When in doubt, ask these five questions
- Whose work is this? If it's not yours, you're supporting, not owning.
- Which gate are we at? If you can't name it, you've drifted off the workflow.
- Showcase or standard tier? If standard, you probably shouldn't be designing it.
- Does this evoke the Big Idea? Open
copy-brief.md. If unsure, the answer is usually no. - Has a human signed off on this change? If not, it doesn't ship to client preview.