Skip to main content
skill CX Codex

brand-designer — Claude Code skill: brand identity and logos

Walks you through building a brand identity: logo concepts, color palette, typography and guidelines. Useful when the visual system has to live in your codebase.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add daffy0208/ai-dev-standards --skill brand-designer -a claude-code
Open on GitHub

What brand-designer does

The skill runs a brand discovery pass first. It asks what the company does, who the audience is, which values matter and which colors or symbols to avoid. Then it lays out logo concepts: a wordmark, a lettermark built from initials, or an icon paired with the name.

Concrete code comes with it. A Logo.tsx TypeScript component with full, icon and wordmark variants and primary, white, black colors. A config/brand-colors.ts file holding primary, secondary, neutral and semantic palettes. Typography sits on CSS variables with Inter and JetBrains Mono, plus Heading1, Heading2, BodyText and Caption components.

The skill advises checking the logo in monochrome and scaling it from 16px up to a billboard — if the mark falls apart at small sizes, that is a signal to revisit the concept. Colors in the examples are hardcoded, so you will be swapping them for your own.

What it helps with

  • produce a logo in three variants for site and favicon
  • define a brand palette and split it into shades
  • set up a type scale with CSS variables
  • write usage rules for brand colors and fonts
  • draft a brand brief before starting on the logo

Example prompts for the agent

  • design a logo for a SaaS product, I need full, icon and wordmark variants
  • build a brand palette in config/brand-colors.ts with primary and secondary
  • check whether my logo still reads in monochrome at 16px

How to install brand-designer

1Skills CLI (Vercel)

npx skills add daffy0208/ai-dev-standards --skill brand-designer -a claude-code

2Manually: put the files in place

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

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

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about brand-designer

How do I install brand-designer in Claude?

Run npx skills add daffy0208/ai-dev-standards --skill brand-designer -a claude-code. The skill lands in ~/.claude/skills/brand-designer/SKILL.md.

What does brand-designer do?

It helps build an identity: logo concepts, a color palette, typography and brand guidelines. TypeScript components and CSS variables are included as examples.

Which platforms does brand-designer support?

Besides Claude, it installs into Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode.

Source text

SKILL.md · MIT
---
name: brand-designer
description: Expert in brand identity, logo design, and visual brand systems
version: 1.0.0
tags: [branding, logo-design, identity, visual-identity, brand-guidelines]
---

# Brand Designer Skill

I help you create cohesive brand identities, logos, and visual brand systems.

## What I Do

**Brand Identity:**

- Logo design and variations
- Color palettes
- Typography systems
- Brand guidelines

**Visual Assets:**

- Business cards, letterheads
- Social media templates
- Marketing materials
- Brand presentation decks

**Brand Strategy:**

- Brand positioning
- Target audience definition
- Competitor analysis
- Brand voice and tone

## Logo Design Process

### Step 1: Brand Discovery

**Questions to Answer:**

- What does the company do?
- Who is the target audience?
- What are the brand values?
- What feeling should the logo evoke?
- Any colors/symbols to avoid?

**Example Brief:**

```markdown
## Brand Brief: TechStart

**Industry:** SaaS, developer tools
**Target Audience:** Software developers, 25-40 years old
**Brand Values:** Innovation, simplicity, reliability
**Personality:** Modern, technical, approachable
**Competitors:** GitHub, GitLab, Vercel

**Logo Requirements:**

- Works in monochrome
- Scales from 16px (favicon) to billboard
- Modern, not trendy (should age well)
- Unique, memorable
```

---

### Step 2: Logo Concepts

**Concept 1: Wordmark**

```
Clean, modern typography
Focus on the company name
Example: Google, Facebook, Netflix
```

**Concept 2: Lettermark**

```
Initials in a distinctive way
Good for long company names
Example: IBM, HBO, CNN
```

**Concept 3: Icon + Wordmark**

```
Symbol + company name
Most versatile option
Example: Nike, Apple, Twitter
```

**Example SVG Logo (React Component):**

```typescript
// components/brand/Logo.tsx

interface LogoProps {
  variant?: 'full' | 'icon' | 'wordmark'
  color?: 'primary' | 'white' | 'black'
  size?: number
}

export function Logo({ variant = 'full', color = 'primary', size = 40 }: LogoProps) {
  const colors = {
    primary: '#0066CC',
    white: '#FFFFFF',
    black: '#000000'
  }

  const fillColor = colors[color]

  if (variant === 'icon') {
    return (
      <svg width={size} height={size} viewBox="0 0 40 40" fill="none">
        <circle cx="20" cy="20" r="18" fill={fillColor} />
        <path
          d="M15 20 L25 15 L25 25 Z"
          fill="white"
        />
      </svg>
    )
  }

  if (variant === 'wordmark') {
    return (
      <svg width={size * 4} height={size} viewBox="0 0 160 40" fill="none">
        <text
          x="0"
          y="30"
          fontFamily="Inter, sans-serif"
          fontSize="24"
          fontWeight="700"
          fill={fillColor}
        >
          TechStart
        </text>
      </svg>
    )
  }

  // Full logo (icon + wordmark)
  return (
    <svg width={size * 5} height={size} viewBox="0 0 200 40" fill="none">
      <circle cx="20" cy="20" r="18" fill={fillColor} />
      <path d="M15 20 L25 15 L25 25 Z" fill="white" />
      <text
        x="50"
        y="30"
        fontFamily="Inter, sans-serif"
        fontSize="24"
        fontWeight="700"
        fill={fillColor}
      >
        TechStart
      </text>
    </svg>
  )
}
```

**Usage:**

```typescript
// Different logo variations
<Logo variant="full" />
<Logo variant="icon" size={32} />
<Logo variant="wordmark" color="white" />
```

---

## Color Palette

### Primary Brand Colors

```typescript
// config/brand-colors.ts

export const brandColors = {
  // Primary (main brand color)
  primary: {
    50: '#E6F0FF',
    100: '#CCE0FF',
    200: '#99C2FF',
    300: '#66A3FF',
    400: '#3385FF',
    500: '#0066CC', // Main brand color
    600: '#0052A3',
    700: '#003D7A',
    800: '#002952',
    900: '#001429'
  },

  // Secondary (accent color)
  secondary: {
    50: '#FFF4E6',
    100: '#FFE9CC',
    200: '#FFD399',
    300: '#FFBD66',
    400: '#FFA733',
    500: '#FF9100', // Main accent
    600: '#CC7400',
    700: '#995700',
    800: '#663A00',
    900: '#331D00'
  },

  // Neutral (grays)
  neutral: {
    50: '#F9FAFB',
    100: '#F3F4F6',
    200: '#E5E7EB',
    300: '#D1D5DB',
    400: '#9CA3AF',
    500: '#6B7280',
    600: '#4B5563',
    700: '#374151',
    800: '#1F2937',
    900: '#111827'
  },

  // Semantic colors
  success: '#10B981',
  warning: '#F59E0B',
  error: '#EF4444',
  info: '#3B82F6'
}
```

### Color Usage Guidelines

```typescript
// Tailwind config
module.exports = {
  theme: {
    colors: {
      primary: brandColors.primary,
      secondary: brandColors.secondary,
      gray: brandColors.neutral,
      green: brandColors.success
      // ...
    }
  }
}
```

**Color Palette Documentation:**

```markdown
## Brand Colors

### Primary Blue (#0066CC)

- **Use for:** Primary buttons, links, active states, brand elements
- **Don't use for:** Backgrounds, large areas
- **Accessibility:** Passes WCAG AA for text on white

### Secondary Orange (#FF9100)

- **Use for:** CTAs, highlights, important actions
- **Don't use for:** Body text
- **Pairing:** Works best with primary blue

### Neutral Grays

- **Use for:** Text, borders, backgrounds, UI elements
- **Hierarchy:**
  - 900: Headings
  - 700: Body text
  - 500: Secondary text
  - 300: Borders
  - 100: Backgrounds
```

---

## Typography System

### Font Selection

```css
/* Google Fonts import */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;600&display=swap');

:root {
  /* Font families */
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', 'Courier New', monospace;

  /* Font sizes */
  --text-xs: 0.75rem; /* 12px */
  --text-sm: 0.875rem; /* 14px */
  --text-base: 1rem; /* 16px */
  --text-lg: 1.125rem; /* 18px */
  --text-xl: 1.25rem; /* 20px */
  --text-2xl: 1.5rem; /* 24px */
  --text-3xl: 1.875rem; /* 30px */
  --text-4xl: 2.25rem; /* 36px */
  --text-5xl: 3rem; /* 48px */

  /* Font weights */
  --font-normal: 400;
  --font-medium: 500;
  --font-semibold: 600;
  --font-bold: 700;

  /* Line heights */
  --leading-tight: 1.25;
  --leading-normal: 1.5;
  --leading-relaxed: 1.75;
}
```

**Typography Scale:**

```typescript
// components/Typography.tsx

export function Heading1({ children }: { children: React.ReactNode }) {
  return (
    <h1 className="text-4xl font-bold leading-tight text-gray-900">
      {children}
    </h1>
  )
}

export function Heading2({ children }: { children: React.ReactNode }) {
  return (
    <h2 className="text-3xl font-semibold leading-tight text-gray-900">
      {children}
    </h2>
  )
}

export function BodyText({ children }: { children: React.ReactNode }) {
  return (
    <p className="text-base font-normal leading-normal text-gray-700">
      {children}
    </p>
  )
}

export function Caption({ children }: { children: React.ReactNode }) {
  return (
    <p className="text-sm font-normal leading-normal text-gray-500">
      {children}
    </p>
  )
}
```

---

## Brand Guidelines Document

### Creating brand-guidelines.md

```markdown
# TechStart Brand Guidelines

## Logo Usage

### Logo Variations

- **Full Logo**: Use on marketing materials, website header
- **Icon Only**: Use for app icon, favicon, social media avatars
- **Wordmark**: Use when icon doesn't fit context

### Clear Space

Maintain clear space around logo equal to height of the "T" in TechStart

### Minimum Size

- **Digital**: 120px width (full logo), 40px (icon)
- **Print**: 1 inch width (full logo), 0.25 inch (icon)

### Don'ts

❌ Don't rotate the logo
❌ Don't change colors (except approved variations)
❌ Don't add effects (shadows, gradients, etc.)
❌ Don't distort or stretch

---

## Color Palette

### Primary Colors

- **Brand Blue**: #0066CC
  - RGB: 0, 102, 204
  - CMYK: 100, 50, 0, 20
- **Accent Orange**: #FF9100
  - RGB: 255, 145, 0
  - CMYK: 0, 43, 100, 0

### Usage

- Primary buttons, links: Brand Blue
- CTAs, highlights: Accent Orange
- Backgrounds: Neutral grays

---

## Typography

### Fonts

- **Headings**: Inter Bold (700)
- **Body**: Inter Regular (400)
- **Code**: JetBrains Mono Regular (400)

### Hierarchy

- H1: 48px / Bold / Tight leading
- H2: 36px / Semibold / Tight leading
- Body: 16px / Regular / Normal leading
- Caption: 14px / Regular / Normal leading

---

## Voice & Tone

### Brand Personality

- **Professional** but not corporate
- **Technical** but approachable
- **Innovative** but reliable

### Writing Style

- Use active voice
- Be concise and clear
- Avoid jargon (unless technical docs)
- Use "we" and "you" (not "I" or "one")

### Examples

✅ "Deploy your app in seconds"
❌ "Applications can be deployed quickly"

✅ "We built this for developers like you"
❌ "This product was designed for developer users"
```

---

## Social Media Templates

### Profile Image (SVG Template)

```typescript
// templates/SocialProfileImage.tsx

export function SocialProfileImage() {
  return (
    <svg width="400" height="400" viewBox="0 0 400 400">
      {/* Background */}
      <rect width="400" height="400" fill="#0066CC" />

      {/* Logo (centered) */}
      <circle cx="200" cy="200" r="120" fill="white" />
      <path
        d="M160 200 L240 160 L240 240 Z"
        fill="#0066CC"
      />
    </svg>
  )
}
```

### Social Media Post Template

```typescript
// templates/SocialPost.tsx

interface SocialPostProps {
  title: string
  description: string
  imageUrl?: string
}

export function SocialPost({ title, description, imageUrl }: SocialPostProps) {
  return (
    <svg width="1200" height="630" viewBox="0 0 1200 630">
      {/* Background gradient */}
      <defs>
        <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
          <stop offset="0%" stopColor="#0066CC" />
          <stop offset="100%" stopColor="#003D7A" />
        </linearGradient>
      </defs>
      <rect width="1200" height="630" fill="url(#bg)" />

      {/* Content */}
      <text
        x="60"
        y="200"
        fontSize="60"
        fontWeight="700"
        fill="white"
        fontFamily="Inter"
      >
        {title}
      </text>
      <text
        x="60"
        y="270"
        fontSize="32"
        fill="#CCE0FF"
        fontFamily="Inter"
      >
        {description}
      </text>

      {/* Logo */}
      <Logo variant="icon" size={60} color="white" />
    </svg>
  )
}
```

---

## Business Card Design

```typescript
// templates/BusinessCard.tsx

interface BusinessCardProps {
  name: string
  title: string
  email: string
  phone: string
}

export function BusinessCard({ name, title, email, phone }: BusinessCardProps) {
  return (
    <svg width="350" height="200" viewBox="0 0 350 200">
      {/* Front side */}
      <rect width="350" height="200" fill="white" />

      {/* Logo */}
      <Logo variant="full" size={30} />

      {/* Contact info */}
      <text x="20" y="120" fontSize="20" fontWeight="700" fill="#111827">
        {name}
      </text>
      <text x="20" y="145" fontSize="14" fill="#6B7280">
        {title}
      </text>
      <text x="20" y="170" fontSize="12" fill="#6B7280">
        {email}
      </text>
      <text x="20" y="185" fontSize="12" fill="#6B7280">
        {phone}
      </text>
    </svg>
  )
}
```

---

## Brand Asset Management

### File Organization

```
brand-assets/
├── logo/
│   ├── svg/
│   │   ├── logo-full.svg
│   │   ├── logo-icon.svg
│   │   └── logo-wordmark.svg
│   ├── png/
│   │   ├── [email protected]
│   │   ├── [email protected]
│   │   └── [email protected]
│   └── favicon/
│       ├── favicon-16x16.png
│       ├── favicon-32x32.png
│       └── favicon.ico
├── colors/
│   └── palette.json
├── fonts/
│   ├── Inter-Regular.woff2
│   ├── Inter-Bold.woff2
│   └── JetBrainsMono-Regular.woff2
├── templates/
│   ├── social-profile.svg
│   ├── social-post.svg
│   └── business-card.svg
└── guidelines/
    └── brand-guidelines.pdf
```

---

## Favicon Generation

```typescript
// scripts/generate-favicons.ts

import sharp from 'sharp'
import fs from 'fs'

async function generateFavicons() {
  const sizes = [16, 32, 48, 64, 128, 256]

  for (const size of sizes) {
    await sharp('logo-icon.svg')
      .resize(size, size)
      .png()
      .toFile(`public/favicon-${size}x${size}.png`)

    console.log(`Generated ${size}x${size} favicon`)
  }

  console.log('Favicons generated!')
}

generateFavicons()
```

**Favicon HTML:**

```html
<!-- In layout/head -->
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />
```

---

## When to Use Me

**Perfect for:**

- Creating new brand identities
- Designing logos and visual systems
- Building brand guidelines
- Creating marketing templates
- Ensuring brand consistency

**I'll help you:**

- Design memorable logos
- Create cohesive color palettes
- Build typography systems
- Generate brand assets
- Document brand guidelines

## What I'll Create

```
🎨 Logo Designs (SVG)
🌈 Color Palettes
📝 Typography Systems
📄 Brand Guidelines
🖼️ Social Media Templates
💼 Business Cards
```

Let's build a strong, cohesive brand identity!

© daffy0208 · MIT · daffy0208/ai-dev-standards

Similar skills

Everything for Design →

From the same set5

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