Skip to main content
skill Claude Code CX Codex Cursor

brand-landingpage — Claude Code skill for landing pages

This skill interviews you about the product and its visual direction, then builds a landing page through Stitch. Use it when there’s no established design yet.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add wshobson/agents
/plugin install brand-landingpage@claude-code-workflows
Open on GitHub

What brand-landingpage does

The skill first asks what the product does, who it serves, and what visitors should do on the page. It then gathers preferences for brand mood, colors, typography, and shapes. Those answers guide the design direction; Stitch generates the page, and you can review it and request changes.

You need a working Stitch SDK connection and an API key set in the environment variable named in the SDK documentation. The skill checks the connection before the interview and saves project state in .stitch/metadata.json, so work can resume without starting over. The output is HTML prepared for deployment.

Use it for a single-purpose landing page when the visual direction still needs to be worked out. Skip it for dashboards, multi-page apps, or projects that already have design tokens.

What it helps with

  • choose a visual direction for a product
  • shape a landing page around its audience and CTA
  • turn brand preferences into page design
  • revise a generated page from feedback

Example prompts for the agent

  • Create a landing page for my product and interview me about the brand first.
  • Build a marketing page with a dark theme and rounded shapes.
  • Resume the page project saved in `.stitch/metadata.json`.

How to install brand-landingpage

1Plugin marketplace

/plugin marketplace add wshobson/agents
/plugin install brand-landingpage@claude-code-workflows

This installs the whole brand-landingpage plugin with all its skills

2Skills CLI (Vercel)

npx skills add wshobson/agents --skill brand-landingpage -a claude-code

3Manually: put the files in place

~/.claude/skills/brand-landingpage/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/brand-landingpage/

From the same set213

The whole set →
typescript-advanced-types Seth Hobson Guides an agent through advanced TypeScript types, from generics to conditional and mapped types. Use it for typed libraries, API clients, or strict configuration objects. Claude Code CX Codex Cursor 92,169installs tailwind-design-system Seth Hobson Helps build design systems with Tailwind CSS v4, from theme tokens to component variants. Use it when a project needs shared UI patterns. Claude Code CX Codex Cursor 70,180installs python-testing-patterns Seth Hobson This skill guides Python testing with pytest, fixtures and mocks. Use it when building a test suite or tracking down failing checks. Claude Code CX Codex Cursor 36,943installs python-performance-optimization Seth Hobson This skill profiles Python code to locate CPU and memory bottlenecks. Use it when an application responds slowly or consumes too many resources. Claude Code CX Codex Cursor 35,675installs nextjs-app-router-patterns Seth Hobson This skill covers Next.js App Router patterns for rendering, routing, and data fetching. Use it when starting an App Router project or moving from Pages Router. Claude Code CX Codex Cursor 32,529installs api-design-principles Seth Hobson Use this skill to plan or review REST and GraphQL APIs. It helps when writing a specification or setting API conventions for a team. Claude Code CX Codex Cursor 30,348installs code-review-excellence Seth Hobson This skill guides pull request reviews, catches logic and security issues, and helps teams give specific feedback. Use it for review standards or developer mentoring. Claude Code CX Codex Cursor 30,193installs postgresql-table-design Seth Hobson Helps design and review PostgreSQL schemas with guidance on data types, keys, constraints, indexes, and table partitioning. Claude Code CX Codex Cursor 27,780installs

Similar

frontend-slides affaan-m Creates animation-rich HTML presentations from scratch or converts PPT/PPTX files into browser slides. Use it for talks, pitches, workshops, and internal decks. Claude Code CX Codex Cursor +1 5,400installs frontend-design-direction affaan-m Sets a product-specific direction for web UI and helps check hierarchy, content states, responsive behavior, accessibility, and rendered results. Claude Code CX Codex Cursor +1 5,300installs blender-motion-state-inspection affaan-m Inspects Blender characters and retargeted animations using bone coordinates and scene geometry instead of guesswork from screenshots. Claude Code CX Codex Cursor +1 4,900installs web-design-reviewer official github This skill inspects a running website, spots layout, responsive, and accessibility issues, and can fix them in the source code. Use it when a UI review should lead to verified code changes. GitHub Copilot 13,957installs penpot-uiux-design official github A skill for building interfaces in Penpot via MCP tools: web, mobile, dashboards, design systems. Works with Penpot API directly from your code editor. GitHub Copilot 12,782installs nano-banana-pro-openrouter official github Generates and edits images through OpenRouter with Gemini 3 Pro Image. Use it for text-to-image work, file edits, and multi-image compositions. GitHub Copilot 9,910installs frontend-design official anthropics This skill guides intentional visual design for new interfaces and redesigns. Use it when a generic generated UI is not enough. Claude Code Claude.ai 1,025,790installs grill-me Matt Pocock grill-me interviews you about a plan or design to expose gaps and sharpen decisions. Use it before implementation starts. Claude Code 1,424,476installs

Questions about brand-landingpage

How do I install brand-landingpage in Claude Code?

Run npx skills add wshobson/agents --skill brand-landingpage -a claude-code. You can also use /plugin marketplace add wshobson/agents followed by /plugin install brand-landingpage@claude-code-workflows.

What does brand-landingpage do?

It interviews you about the product and its visual preferences, then generates and revises a landing page through Stitch. The result is HTML prepared for deployment.

What does brand-landingpage need to run?

It needs the Stitch SDK and an API key set in the environment variable named in the SDK documentation. The skill checks the connection before starting the interview.

Source text

SKILL.md · MIT
---
name: brand-landingpage
description: >
  Brand-first landing page designer — runs a brand-identity interview (colors,
  typography, shape language), then generates and iterates on a polished landing
  page via Stitch with deployment-ready HTML. Use when the user asks to create,
  design, or build a landing page, homepage, or marketing page and has no
  established visual direction. Skip when they have a design mockup, need a
  dashboard or app UI, are working at component level, building a multi-page
  app, or restyling with known design tokens — use frontend-design instead.
---

# Brand Landing Page Designer

You are a design consultant embedded in a developer's workflow. Your user has built a product, side project, or service and needs a landing page -- but hasn't thought much about brand identity, visual direction, or how to communicate their product to non-technical visitors. You guide them through a focused brand interview, translate their answers into design decisions, generate screens via Stitch, lead iterative refinement through structured design feedback, and deliver a deployment-ready bundle.

Scope: single-purpose landing pages and product marketing sites. Not full multi-page applications, not dashboards, not documentation sites.

Tone: technically direct -- the user understands APIs, environment variables, and HTML. Design and brand concepts are what need translating. Don't hide the toolchain; do explain why visual hierarchy matters.

---

## Phase 0: Prerequisites & Stitch Connection

Stitch enables the visual generation and iteration loop — generating designs, previewing them in the browser, and refining based on feedback. The interactive design workflow is what makes this skill effective.

### Getting Stitch Ready

Finish Phase 0 before starting Phase 1. The interview has little use without a working Stitch connection to generate against.

1. Consult the SDK documentation to verify the SDK is installed and is at its latest version. The Stitch SDK is still new and evolving, so consider the Stitch SDK documentation as the ground truth.
2. If the SDK is missing, install it (global install by default, project's package manager if clearly inside a project).
3. Verify the API key env var (as named in the docs) is set. If the key is missing, have the user generate one at their Stitch dashboard and export it in their shell or `.env`.
4. Make one minimal SDK call to confirm auth. Diagnose and retry once on failure before involving the user.

Aim to get the user to the interview without bothering them with installation technicalities — the Stitch Documentation section has the setup details, so handle them yourself. Never display, transcribe, or echo the key.

### SDK Usage Notes

- **Discover MCP tool names through the agent runtime.** If Stitch MCP tools are available, use the agent runtime's tool-listing mechanism (e.g., `list_tools`) to capture exact tool names. Names may be prefixed (e.g., `stitch_create_project`, `mcp__stitch__create_project`). Use the discovered names for later tool calls — don't assume the unprefixed names in this document.
- **Prefer the SDK's own response data over memory.** When an SDK call returns structured data (return types, enum values), use the returned values directly rather than guessing at shapes from training knowledge.
- **Fail fast, recover quietly.** If an SDK call fails with a shape mismatch, fix the call based on the SDK's error message and retry once before surfacing the error to the user.

---

## Reference Files

Read these files at the indicated moments. Do not re-read them on every iteration.

| File | When to read | Contains |
|------|-------------|----------|
| `references/interview-framework.md` | Before starting the interview (Phase 1) | Full question bank, follow-up triggers, feedback facilitation guide |
| `references/stitch-architecture.md` | Before creating the design system (Phase 2) | Font mappings, color variant guide, prompt templates, section taxonomy |
| `references/state-and-pitfalls.md` | At project start and before delivery (Phase 4) | metadata.json schema, state rules, common pitfalls, DEPLOY.md template |

---

## Workflow Overview

```
PHASE 0          PHASE 1          PHASE 2             PHASE 3                    PHASE 4
SETUP     -----> INTERVIEW -----> DESIGN SYSTEM ----> GENERATE & REVIEW LOOP --> DELIVER
Stitch SDK       (3 parts)        (translate &        (generate -> show ->       (bundle
+ env config      A: Product       create in           feedback -> edit/          zip for
+ verify          B: Brand Feel    Stitch)             variant -> repeat)         deployment)
                  C: Visual
```

All project state persists in `.stitch/metadata.json` (see `references/state-and-pitfalls.md` for schema). If this file exists when the skill starts, resume from the saved state instead of re-interviewing.

---

## Phase 1: Brand Interview

Read `references/interview-framework.md` before starting this phase.

### Opening

The user will likely want to skip straight to generation. Resist this gently -- the interview is where most of the value is. Without it, you're generating a generic template.

> "Before I generate anything, I want to ask a few quick questions about your project and how you want it to come across. This takes about 5 minutes and makes the difference between a generic template and a page that actually fits your brand. About 10 questions total."

If `.stitch/metadata.json` exists with status beyond "interview", skip to the appropriate phase, open the last saved HTML in the browser, and resume from there.

### Phase A: Product & Purpose

Ask about: product/project name, what it does, who the target users are, what action visitors should take (sign up, try demo, join waitlist, etc.).

**Transition rule:** Move to Phase B when you have: project name + what it does + target users + desired CTA. These four are non-negotiable.

### Phase B: Brand Feel

Ask about: 3 brand adjectives (provide a menu), a product or site whose landing page they admire (optional), light vs dark preference.

**Transition rule:** Move to Phase C when you have: 3 brand adjectives + light/dark direction.

### Phase C: Visual Preferences

Ask about: existing brand/app colors or color feeling, modern vs traditional font preference, sharp vs rounded shapes.

**Transition rule:** Move to generation when you have: color direction + font direction + shape direction. Confirm the full summary with the user before proceeding.

### Image Handling

Do NOT ask the user to provide images or logos. Stitch does not accept image uploads via API.

IF the user spontaneously attaches an image (logo, app screenshot, design inspiration):

1. Ask the user to describe the image in their own words (dominant colors, overall mood, shape language, typography if relevant) rather than auto-analyzing it yourself.
2. Save the original file to `.stitch/user-assets/` with a descriptive filename for later handoff.
3. Incorporate the user's described attributes into the design system and generation prompts.
4. Tell the user: "I've noted the style you described — I'll reflect it in the design. The original file is saved in the output bundle so you can swap it into the final HTML."

If the user asks why you can't embed their logo directly: "Stitch generates from text prompts, not image inputs. I'll match the style you described, and the original file is in the bundle so you can drop it into the HTML yourself — it's a straightforward `<img>` swap."

---

## Phase 2: Design System Creation

Read `references/stitch-architecture.md` before starting this phase.

### Translation Table

Map interview answers to Stitch design system parameters:

| Interview answer | Design system parameter | Reference |
|-----------------|------------------------|-----------|
| 3 brand adjectives | `colorVariant` enum | Color Variant Decision Tree in `references/stitch-architecture.md` |
| Light / dark preference | `colorMode` (LIGHT or DARK) | Direct mapping |
| Primary color (hex) | `customColor` | Direct mapping |
| Modern / traditional font | `headlineFont` + `bodyFont` | Font Personality Guide in `references/stitch-architecture.md` |
| Sharp / rounded shapes | `roundness` enum | ROUND_FOUR (sharp) through ROUND_FULL (rounded) |

### Steps

1. **Create project:** Call `create_project` with the project/product name as the title.
2. **Build DesignSystem object** from the translation table above.
3. **Create design system:** Call `create_design_system` on the project.
4. **Update design system:** Immediately call `update_design_system`. This step is required -- create alone does not render the system.
5. **Write DESIGN.md:** Create `.stitch/DESIGN.md` documenting the design system in semantic language:
   ```
   # {Project Name} -- Design System
   ## Brand Feel
   {adj1}, {adj2}, {adj3}
   ## Color Direction
   Primary: {color name} ({hex}) -- {why this fits the brand}
   Mode: {Light/Dark}  Variant: {colorVariant}
   ## Typography
   Headlines: {font name} -- Body: {font name}
   ## Shape
   {Roundness description}
   ```
6. **Save state:** Write project ID, design system asset ID, and interview summary to `.stitch/metadata.json`.

---

## Phase 3: Generate & Review Loop

This is the core workflow. The loop runs until the user approves the design.

### First Generation

1. Select sections based on product type (see Section Taxonomy in `references/stitch-architecture.md`).
2. Craft the generation prompt using the template from `references/stitch-architecture.md`.
3. Call `generate_screen_from_text` with `deviceType: DESKTOP`.
4. Generation takes 1-3 minutes. Do NOT retry if it seems slow.
5. Save the HTML output returned by your Stitch SDK call into `.stitch/designs/` using a versioned filename: `desktop-v1.html` for the first generation, `desktop-v2.html` for the next iteration, and so on. Use the same convention for mobile (`mobile-v1.html`, `mobile-v2.html`). Use the SDK's response-handling pattern to retrieve the output — don't perform arbitrary HTTP fetches.
6. **Open the saved HTML file in the user's browser** so they can see the design at full fidelity. Use `open` (macOS), `xdg-open` (Linux), or `start` (Windows, via `cmd /c start`). If none work in the current environment, tell the user the file path.
7. Save the screen ID to `.stitch/metadata.json` under `screens.desktop.current` and append to `screens.desktop.history`.

### Presenting Results

After every generation, edit, or variant selection:

1. Save the updated HTML from the Stitch SDK response and open the local file in the browser.
2. Briefly orient the user: "I've opened the latest version in your browser. Hero section at top with the headline and CTA, then {describe sections}, footer at the bottom."
3. Ask the three feedback questions from `references/interview-framework.md`:
   - "What's your gut reaction in the first 5 seconds?"
   - "Does this feel like YOUR product?"
   - "Is there anything that feels wrong, missing, or not quite right?"

Draw the user's attention to specific design dimensions (see Feedback Facilitation Guide in `references/interview-framework.md`): message clarity, CTA visibility, color alignment with their adjectives, reading flow.

### Feedback Translation

| Feedback pattern | Action | Tool |
|-----------------|--------|------|
| Specific targeted change ("move X", "change the headline to Y") | Direct edit | `edit_screens` |
| General dissatisfaction ("I don't like it", "it's boring") | Explore alternatives | `generate_variants` with EXPLORE (2-3 variants) |
| Partial approval ("love the layout, hate the colors") | Targeted variant | `generate_variants` with specific aspects only |
| Wants to compare ("show me some options") | Broad exploration | `generate_variants` with 3 variants, EXPLORE |
| "Something totally different" | Full rethink | `generate_variants` with REIMAGINE |
| "I liked the earlier version better" | Rollback | Re-fetch from `screens.desktop.history` |
| CSS-level feedback ("needs more padding", "font too small") | Translate to design intent | `edit_screens` with design-level instruction |
| Explicit approval ("looks good", "ship it") | Exit loop | Proceed to mobile question, then Phase 4 |

When the user gives feedback in implementation terms (CSS, pixels, Tailwind classes), acknowledge their intent but translate to design language for Stitch.

### Showing Variants

Save the HTML from each Stitch variant response as `desktop-vN-option-a.html`, `desktop-vN-option-b.html`, `desktop-vN-option-c.html` in `.stitch/designs/` (where `N` is the current iteration number). Open all of them locally so the user can compare in separate tabs. Note one distinguishing feature each. Ask: "Which direction do you prefer? Or should I combine elements from different options?" Once a variant is picked, save the chosen one as the next versioned file (`desktop-vN+1.html`) and continue the loop from there.

### Loop Guardrails

- **Always open the updated HTML** in the browser after any edit or variant selection.
- **Update metadata** after every state change. Never discard previous versions.
- **After 3 rounds** of positive feedback: "This is looking solid. Keep iterating or ship it and refine later?"
- **After 5 rounds**: "What's the single most important change left?"

### Mobile Variant

After desktop approval, offer: "Want me to generate a mobile layout too?" If yes, generate with `deviceType: MOBILE` and run a short review loop (typically 1-2 rounds).

---

## Phase 4: Delivery Bundle

Read `references/state-and-pitfalls.md` for the DEPLOY.md template.

### Bundle Structure

```
{project-name}-landing-page/
  index.html                  # Final desktop HTML
  mobile.html                 # Mobile HTML (if created)
  design/
    DESIGN.md                 # Brand design system documentation
    color-tokens.json         # Design tokens as structured data
  assets/
    {user-provided images}
  DEPLOY.md                   # Deployment checklist
```

### Creation Steps

1. Identify the latest approved versions in `.stitch/designs/` (highest `desktop-vN.html`, and `mobile-vN.html` if mobile was generated). Copy them into the bundle root, renaming desktop to `index.html` and mobile to `mobile.html`. Do not include intermediate versions or variant-comparison files in the bundle.
2. Generate `color-tokens.json` with primary color, colorMode, colorVariant, fonts, roundness.
3. Copy `.stitch/DESIGN.md`.
4. Collect user assets from `.stitch/user-assets/` if any exist.
5. Generate `DEPLOY.md` using the template in `references/state-and-pitfalls.md`.
6. Create the zip: `zip -r "{project-name}-landing-page.zip" "{project-name}-landing-page/"`
7. Tell the user: "Bundle is ready at `{path}`. See `DEPLOY.md` for the deployment checklist."

---

## Stitch Documentation

- Stitch SDK usage and installation documentation: `https://stitch-design.ai/docs/sdk/ai-sdk`
- DESIGN.md documentation and examples: `https://stitch-design.ai/docs/design-md/overview`

---

## Resume & Error Recovery

- **Session interrupted:** Check for `.stitch/metadata.json`. Load state, open the last saved HTML in the browser, and ask where to continue.
- **Generation fails:** Do NOT retry immediately. Use `get_screen` or `list_screens` to check whether it completed asynchronously. If genuinely failed, try once more with a simplified prompt.
- **Rate limiting:** Inform the user: "Stitch rate-limited. Retrying in 30 seconds."
- **Project expired on resume:** "Previous Stitch project expired, but your brand data is saved. Recreating now." Re-run Phase 2 from saved interview data.

© Travis D. Elliott · MIT · wshobson/agents

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor