home / skills / phrazzld / claude-config / brand-builder

brand-builder skill

/skills/brand-builder

This skill helps establish a consistent brand profile for new projects by gathering context and producing a legacy brand-profile.yaml.

npx playbooks add skill phrazzld/claude-config --skill brand-builder

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
5.8 KB
---
name: brand-builder
description: |
  PREFER /brand-init for new projects (outputs unified brand.yaml).
  This skill outputs the legacy brand-profile.yaml format.
  Use --legacy flag or when brand-kit is not available.

  Interactive brand discovery for a project. Creates brand-profile.yaml
  that guides all future content generation.

  Run once per project to establish voice, audience, topics.
argument-hint: "[project-name] [--legacy]"
effort: medium
---

# /brand-builder

Establish brand identity. Generate content that fits.

> **Note:** For new projects, prefer `/brand-init` which outputs the unified
> `brand.yaml` format consumed by brand-kit. This skill outputs the legacy
> `brand-profile.yaml` format. Use `/brand-init` for the full brand-as-code
> pipeline (tokens + assets + templates).

## What This Does

Interactive discovery process that creates a `brand-profile.yaml` in the project root.
This profile guides `/post` and `/announce` skills to generate on-brand content.

## Process

### Phase 1: Discovery (Interactive)

Ask the user questions using `AskUserQuestion`:

**1. Target Audience**
```
Who is the primary user of [product]?
- Developers / technical users
- General consumers
- Business / enterprise
- Specific niche (describe)
```

**2. Tone & Voice**
```
What tone should [product] use?
- Professional & authoritative
- Casual & friendly
- Playful & fun
- Technical & precise
```

**3. Core Value Proposition**
```
In one sentence, what does [product] do for users?
(User provides free text)
```

**4. Content Topics**
```
What topics are relevant to [product]'s audience? (Select multiple)
- Product updates & features
- Industry news & trends
- Tips & tutorials
- Behind-the-scenes / building in public
- User stories & testimonials
- General interest in the domain
```

**5. Competitors / Inspirations**
```
What brands or products inspire [product]'s voice?
(User provides free text - optional)
```

### Phase 2: Context Gathering (Automatic)

Gather additional context without user input:

**Git History Analysis**
```bash
# Recent commits to understand what's being built
git log --oneline -20

# Key features from README
cat README.md | head -100

# Tech stack from package.json / Cargo.toml / etc.
cat package.json 2>/dev/null | jq '{name, description, keywords}'
```

**Existing Marketing Materials**
- Check for existing `brand-profile.yaml`
- Look for marketing copy in README, landing page
- Note any existing social presence

### Phase 3: Profile Generation

Generate `brand-profile.yaml` combining user input and gathered context:

```yaml
# Brand Profile for [Product Name]
# Generated by /brand-builder on [date]
# Used by /post and /announce for content generation

product:
  name: Volume
  domain: volume.app
  tagline: "Track your lifts. See your gains."
  category: health

audience:
  primary: "Gym-goers who want to track strength training progress"
  demographics:
    - Age 25-45
    - Fitness enthusiasts
    - Data-driven
  pain_points:
    - Hard to remember what weight to use
    - Can't see progress over time
    - Existing apps are too complex

voice:
  tone: casual_friendly
  personality:
    - Encouraging but not preachy
    - Data-focused without being nerdy
    - Celebrates small wins
  avoid:
    - Bro culture / toxic fitness
    - Overly technical jargon
    - Shaming language

content:
  mix:
    product_updates: 30%
    valuable_content: 70%

  topics:
    # Product-related (30%)
    - New features and improvements
    - Tips for using the app
    - User milestones

    # Domain-related (70%)
    - Strength training tips
    - Form and technique
    - Progress tracking psychology
    - Motivation and consistency
    - Gym culture and community

  hashtags:
    primary:
      - "#fitness"
      - "#strengthtraining"
      - "#gymlife"
    product:
      - "#volumeapp"
      - "#trackyourlifts"

  posting_frequency: "2-3 times per week"

inspirations:
  - "Strong app - clean and focused"
  - "Strava - community without being overwhelming"

twitter_account: "@MistyStepLLC"  # From products.yaml category

# Generated context
context:
  tech_stack: "Next.js, TypeScript, Convex"
  recent_features:
    - "Interval timer"
    - "Exercise library"
    - "Progress charts"
  github_repo: "MistyStep/volume"
```

### Phase 4: Save & Confirm

Save to project root as `brand-profile.yaml`.

Confirm with user:
```
Brand profile created for [Product].

Summary:
- Audience: [primary audience]
- Tone: [tone]
- Content mix: 30% product / 70% valuable content
- Topics: [list top 3]

Saved to: ./brand-profile.yaml

Run /post [product] to generate content using this profile.
```

## Usage

```bash
# In a project directory
/brand-builder

# Or specify project name
/brand-builder volume
```

## Output

Creates `brand-profile.yaml` in:
1. Current directory (if in a project)
2. Or `~/.claude/skills/brand-builder/profiles/[product].yaml` as fallback

## Integration

Other skills use this profile:
- `/post` - Reads profile for voice, topics, hashtags
- `/announce` - Uses profile for launch messaging
- `/social-content` - Generates content calendar from topics

## Re-running

If `brand-profile.yaml` already exists:
1. Load existing profile
2. Ask if user wants to update specific sections
3. Preserve unchanged sections
4. Update modified sections

## Example Session

```
> /brand-builder

I'll help establish a brand identity for this project.
Let me gather some context first...

[Reads README, package.json, git history]

Found: "Volume" - a fitness tracking app

Question 1 of 5: Who is your primary user?
[AskUserQuestion with options]

...

Brand profile created!

Summary:
- Audience: Gym-goers tracking strength progress
- Tone: Casual & encouraging
- Topics: Strength training, progress tracking, gym tips

Saved to: ./brand-profile.yaml

Next: Run /post volume "shipped interval timer" to generate a launch post.
```

Overview

This skill guides an interactive brand discovery process and generates a legacy brand-profile.yaml to steer future content. It collects audience, tone, value proposition, topics, and inspirations, augments those answers with project context, and writes a single-file brand profile for use by content-generation skills. For new projects, prefer the unified brand-init workflow; use this skill when the legacy brand-profile.yaml is required or when the newer kit is unavailable.

How this skill works

The skill asks a short set of guided questions to capture primary audience, tone & voice, core value proposition, relevant content topics, and optional inspirations. It then automatically gathers project context (recent commits, package metadata, existing marketing copy, and any existing profile) to enrich the answers. Finally it synthesizes those inputs into a structured brand-profile.yaml saved to the project root or a fallback profiles directory, and offers a brief summary for confirmation.

When to use it

  • Onboard a new project that needs a consistent voice and content guidance but must use the legacy profile format
  • Create a single source of truth before running automated post, announcement, or social-content generators
  • Reconcile or update an existing brand-profile.yaml with minimal manual editing
  • Quickly capture audience, tone, topics, and content mix during early product marketing
  • When the brand-kit / unified brand.yaml workflow is unavailable

Best practices

  • Run once per project and store the generated profile at the repository root to ensure other skills pick it up
  • Answer the discovery prompts succinctly but specifically—concrete audience details and sample competitors improve output
  • Let the tool read project metadata so the profile reflects real tech stack and recent work
  • If a profile already exists, use the update flow to preserve unchanged sections and only edit what’s needed
  • Keep the posting_frequency and topics realistic to avoid overpromising on content cadence

Example use cases

  • Set voice and content topics for a small startup before publishing launch posts
  • Generate an on-brand summary to feed automated announcement and social content generators
  • Migrate a manual marketing brief into a machine-readable profile for repeatable content production
  • Update audience and tone after a pivot or new product direction
  • Create a fallback profile when modern brand-as-code tooling isn’t available

FAQ

Where is the profile saved?

The profile is written to ./brand-profile.yaml in the project root; if that’s not writable it falls back to a per-user profiles directory.

Can I update parts of an existing profile?

Yes. When a profile exists the skill loads it and asks which sections to update, preserving unchanged content.