Skip to content
Development
Skill

/marketing-vs-product-system

A marketing site and its product may differ in density and scale but share one token layer. Use when the two drift apart, share components or need a single token owner.

From plugin
dembrandt
19345 skills1 MCP

Claude Code

$ npx -y skills add dembrandt/dembrandt-skills --skill marketing-vs-product-system --agent claude-code

SKILL.md

marketing-vs-product-system.SKILL.md
name: marketing-vs-product-system
description: A marketing site and its product may differ in density and scale but share one token layer. Use when the two drift apart, share components or need a single token owner.
metadata:
  priority: 6
  pathPatterns:
    - "app/**"
    - "src/app/**"
    - "components/**"
    - "src/components/**"
    - "**/*.css"
    - "**/*.tsx"
    - "**/*.jsx"
    - "design-system/**"
  promptSignals:
    phrases:
      - "marketing site"
      - "landing page vs app"
      - "product UI"
      - "signed-in"
      - "logged-in area"
      - "same brand different"
      - "design system drift"
      - "app feels different"
      - "dashboard vs homepage"
      - "one codebase two surfaces"
      - "shared header"
      - "who owns the design system"
      - "token source of truth"
      - "design tokens package"
retrieval:
  aliases:
    - marketing vs app
    - site vs product
    - landing page vs dashboard
    - public vs signed-in
    - brand vs product UI
    - two surfaces one brand
    - who owns the tokens
    - shared component across site and app
  intents:
    - decide what may differ between the marketing site and the app
    - stop the product UI drifting from the brand
    - audit a codebase that renders both a site and a product
    - add a theme to the app but not the site
    - unify tokens across two surfaces
    - share tokens across separate repositories
    - decide who owns the token source
  examples:
    - the app doesn't look like our website
    - can the dashboard use tighter corners than the landing page
    - we have three different ways of writing colours
    - should the app support light mode if the site doesn't
    - our marketing pages and product have drifted
    - the header is duplicated in both codebases
    - nobody owns our design tokens

Marketing and Product Are Two Surfaces of One Brand

The public site sells; the product is used. A visitor reads one marketing page for ninety seconds and leaves. An operator opens the same brand every morning and stays for hours. Designing both to one specification produces either a brochure that is exhausting to work in or a product screen that cannot sell anything.

So the two surfaces *should* diverge. The question is never whether, it is **which layer is allowed to diverge**.

Marketing and product are the pair that forces the question, because they are the two nobody can pretend are the same job. But the rule underneath is not about two. Most brands run four or five surfaces: the site, the product, the documentation, the transactional email, the status page, sometimes a sales deck. Each one is a different job for a different reader at a different moment. **The brand owns the layer; every surface chooses from it.** Adding a sixth surface then changes nothing about the rule, which is the test of whether the rule was right.

Where a new surface belongs is settled by the same question the layer rule asks, not by which team built it. Docs are read for minutes at a time by someone mid-task, so they sit near the product on density and near the site on reading width. Transactional email has no theme control and no hover, so it takes the shared values and little else. Neither is a special case; both are the general rule applied.

The Layer Rule

**Brand values are shared. Application values are chosen per surface.**

| Shared, one value for both | Chosen per surface | |---|---| | Hue: brand accent, warm accent, status colours | Which of them dominates a screen | | Font families | Type scale in use | | Radius *scale* (the set of allowed steps) | Which step a surface reaches for | | Icon library | Icon size and weight | | Contrast floors for text (4.5:1 body, 3:1 large) | Density, spacing rhythm | | Component contracts (what a button is) | Button size defaults |

If a value answers *who are we*, it is shared. If it answers *what is this screen for*, it is the surface's own call. A product screen picking a tighter radius is design. A product screen picking a different blue is drift.

What Legitimately Differs

These divergences are healthy and worth stating explicitly rather than letting them happen by accident:

  • **Type scale.** Marketing lives in the display registers and has real hero sizes. Product lives two or three

steps down, with the small end of the scale carrying most of the interface. The scale is the same ladder; the two surfaces stand on different rungs.

  • **Weight.** Marketing leans bold, because a headline is competing for attention. Product leans medium and

semibold, because everything on screen is already wanted.

  • **Radius.** Marketing can afford larger, softer cards: few elements, lots of air. Product goes tighter, because

at high density large radii eat the corners of adjacent elements and read as mushy. Between them the two surfaces may well use five or six steps, and that is not a broken scale as long as every step is drawn from the same ladder. What breaks it is a value that is on no ladder at all.

  • **Density and width.** Marketing measures a reading column, because the limit is what an eye tracks across a

line of prose. Product measures a work area, because the limit is the data, and the data does not get narrower on a wider screen. That is also why the width belongs to the shell rather than the page: a product where each page picks its own column is a product where the content jumps sideways on every navigation.

  • **Motion.** Marketing may animate on entry, because nothing has been asked of the visitor yet. Product animates

in response to the user, with two standing exceptions: onboarding, where motion is what shows a first-time user where a thing came from, and empty states, where it says the screen is waiting rather than broken. Both are answers to a user's situation, which is why they do not contradict the rule.

  • **Theme.** A product may need light mode when the marketing site does not. Someone using a tool for six hours

ha

Read more
@dembrandt
Ships withdembrandt

Enterprise UX secrets, now built into your AI agent. Your agent writes the component in seconds. It does not know the modal should be a drawer, or that the grey it picked fails contrast. These skills carry that judgment: what to do, and what breaks otherwise.

19345 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
193
Star history of dembrandt/dembrandt-skills on GitHub, a chart by star-history.com

Other skills on dembrandt.

app-shell

app-shell

Top bar, sidebar rail, app launcher, tenant and environment cue, status bar. Use when designing the persistent shell, a…

@dembrandt@dembrandtInstall Skill
brand-visual-language

brand-visual-language

Shape language across type, radius and icons carries brand personality. Use when starting a design system, picking icons or…

@dembrandt@dembrandtInstall Skill
button-states

button-states

Rest, hover, active, focus, disabled and loading states, derived from the base colour. Use when designing buttons, links, inputs…

@dembrandt@dembrandtInstall Skill
clone-website

clone-website

Rebuild a live web page 1:1 from measurement into Figma, Penpot or code, then verify it. Use when reproducing a page or checking…

@dembrandt@dembrandtInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about marketing-vs-product-system.

Which coding agents can use marketing-vs-product-system?
marketing-vs-product-system installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.