# Brand Manager

> Set up and manage brand profiles. Use when: configuring a new brand, updating brand config, or switching brands.

- **Type:** Skill
- **Install:** `agentstack add skill-indranilbanerjee-socialforge-brand-manager`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [indranilbanerjee](https://agentstack.voostack.com/s/indranilbanerjee)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [indranilbanerjee](https://github.com/indranilbanerjee)
- **Source:** https://github.com/indranilbanerjee/socialforge/tree/main/skills/brand-manager
- **Website:** https://indranil.in

## Install

```sh
agentstack add skill-indranilbanerjee-socialforge-brand-manager
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# /socialforge:brand-setup — Brand Manager

Set up a new brand profile or update an existing one. Brand profiles control visual identity, platform config, compliance rules, approval chains, and asset sources for all SocialForge workflows.

## Context efficiency

Asset-heavy skill. **Grep before Read** the asset catalog (`${CLAUDE_PLUGIN_DATA}//assets/index.json`) — never list the asset directory. Reference generated images / videos by path, not by loading metadata. Brand profile loads once per session.

## Pre-Requisite: Image Generation API

SocialForge generates AI images for social media posts. Before setting up a brand, check that Google Cloud Vertex AI credentials are configured.

**Step 0: Check image API (MANDATORY — do this before anything else)**

Run `/socialforge:setup` to configure Google Cloud Vertex AI credentials. Your admin provides a service account JSON file, which `/socialforge:setup` stores securely in the plugin data directory.

**Alternative providers:** Connect fal.ai or Replicate via the Connectors panel.

**Without credentials**, SocialForge can parse calendars, match assets, adapt copy, and render carousels — but it CANNOT generate new images. STYLE_REFERENCED and PURE_CREATIVE modes will fail. ANCHOR_COMPOSE works for basic Pillow compositing only (no AI scene generation).

**If credentials are not configured, warn the user clearly:**
```
WARNING: No image generation API configured.
Vertex AI credentials are not set. AI image generation will FAIL.

To fix: Run /socialforge:setup to configure Google Cloud Vertex AI credentials.
Or connect fal.ai/Replicate via the Connectors panel.

Do you want to:
  1. Run /socialforge:setup now (recommended)
  2. Continue without image generation (limited functionality)
```

Wait for user response. If they choose to continue without, log a persistent warning in brand-config.json: `"image_api_configured": false`.

## Quick Start (5-10 minutes)

After confirming the image API, users need these 5 things:

1. **Brand name** — Your company or client name
2. **Industry** — pharma, bfsi, real-estate, saas, retail, healthcare, edtech, legal, manufacturing, hospitality, automotive, media, other
3. **Brand colors** — Primary (hex), secondary (hex), accent (hex)
4. **Active platforms** — Which social media platforms (LinkedIn, Instagram, X, Facebook, YouTube, etc.)
5. **Asset source** — Where are brand photos? (Google Drive folder URL, local path, or "I'll add later")

That's it. Run `/socialforge:brand-setup [brand-name]` and answer these questions. SocialForge creates a working brand profile.

**Add more later:** Logo files, fonts, visual style, compliance rules, approval chain, posting times, hashtags via `/socialforge:brand-setup --update [brand]`

## Full Setup

### Step 1: Core Identity

```
Brand name: [required]
Brand slug: [auto-generated from name, e.g., "acme-corp"]
Tagline: [optional]
Industry: [required — select from list]
Website: [optional]
```

### Step 2: Visual Identity

```
Colors:
  Primary: [hex, e.g., #1B4F72] (required)
  Secondary: [hex] (required)
  Accent: [hex] (optional, defaults to primary)
  Background light: [defaults to #FFFFFF]
  Background dark: [defaults to #1A1A1A]
  Text primary: [defaults to #333333]
  Gradient: enabled? start/end/direction (optional)

Logo files:
  Primary logo: [file path or "skip for now"]
  White/reversed logo: [optional]
  Icon version: [optional]
  Logo overlay position: bottom-right (default) | bottom-left | top-right | top-left
  Logo overlay opacity: 0.7 (default)

Fonts:
  Heading font: [filename or Google Font name, defaults to Montserrat-Bold]
  Body font: [defaults to OpenSans-Regular]
```

### Step 3: Visual Style (For AI Generation)

```
Style keywords: [e.g., "modern", "clean", "professional", "enterprise"]
Mood keywords: [e.g., "confident", "innovative", "authoritative"]
Photography style: warm natural light | studio professional | candid editorial | corporate clean
Illustration style: flat vector | isometric | hand-drawn | 3D render | minimal line art | none
Color temperature: warm | neutral | cool
Contrast level: high | medium | soft

Image rules (array of custom constraints):
  e.g., "Navy should appear in at least 30% of visual area"
  e.g., "Avoid generic stock photo aesthetics"
  e.g., "Always include subtle brand color accents"
  e.g., "No text overlays on product photography"
```

### Step 4: Platform Configuration

```
For each active platform, configure:
  Platform: linkedin | instagram | x | facebook | youtube | tiktok | pinterest
  Profile type: company | personal | creator
  Posting frequency: daily | 3-4/week | 2/week | weekly
  Optimal posting times: [day + time + timezone]
  Supported formats: static | carousel | video | story | reel | short | text_only
  Content mix: video % | carousel % | static % | text_only %
  Cross-posting: from which platform? (e.g., LinkedIn -> Facebook)
```

### Step 5: Compliance Rules

```
Banned phrases: [list of phrases that must never appear in copy]
Required disclaimers: [triggers and disclaimer text per platform]
Data claim rules: require source verification? max claim age?
Platform-specific rules: link policy, max hashtags, forbidden content types
```

If user skips: Log warning — "Compliance rules empty. Copy will not be checked for restricted content."

### Step 6: Approval Chain

```
Content tiers:
  HERO (flagship content): Who reviews? Client approval required?
  HUB (regular series): Who reviews?
  HYGIENE (routine posts): Auto-approve or light review?

Escalation: Reminder after N days? Auto-publish without client approval after N days?
```

If user skips: Default to single-tier (all content requires user approval before finalization).

### Step 7: Asset Source

Where are your brand photos stored?

1. **Local folder** — Provide the full path (e.g., /Users/photos/acme-corp/)
   Works in: Claude Code (persistent) | Cowork (session-only, re-provide each session)

2. **Google Drive folder** — Provide the Drive folder URL
   Works in: Cowork (via Settings -> Integrations -> Google Drive) | Claude Code (download first or mount)
   In Cowork: Claude reads Drive files directly through platform integration
   In Claude Code: Download the folder locally, then index with --source /local/path

3. **I'll add later** — Start with no assets (PURE_CREATIVE mode only)

The asset source is saved in `asset-source.json`. You can change it anytime.

**Recommended for agencies:** Use Google Drive as the source of truth. Each brand gets a Drive folder. SocialForge indexes the photos and stores the index in persistent plugin storage (survives sessions).

```
Style reference photos:
  Select 2-8 photos that represent the brand's visual DNA.
  These guide AI generation in STYLE_REFERENCED mode.
```

### Step 8: Social Profiles

For each active platform configured in Step 4:

```
Platform: [platform name]
  Display name: [brand name as it appears on the platform]
  Handle: [@handle or username]
  Avatar: [file path to avatar/profile photo — used in preview rendering]
  Profile headline: [bio or tagline shown on the platform]
  Profile URL: [full URL to the profile page]
```

This data powers preview rendering (showing exactly how posts look on each platform).

If user skips: Previews will use brand name and placeholder avatar. Recommend filling in for accurate mockups.

### Step 9: Languages

```
Primary language: [e.g., en-US, hi-IN, es-MX]
Secondary languages: [list, e.g., es-MX, fr-FR]
Bilingual config:
  Mode: separate_posts | bilingual_single_post | language_per_platform
  Primary ratio: [percentage of content in primary language, e.g., 80]
Do-not-translate terms: [brand names, product names, taglines to keep in original language]
Translation service preference: manual | ai_with_review | ai_auto
```

### Step 10: Brand Hashtags

```
Always include (every post):
  e.g., #BrandName, #BrandTagline

Campaign hashtags (active campaigns only):
  Campaign name: [hashtag list + start/end dates]
  e.g., "Summer Launch": ["#SummerWithBrand", "#LaunchDay"] (2026-06-01 to 2026-08-31)

Platform-specific hashtag rules:
  LinkedIn: max 3-5 hashtags, professional tone
  Instagram: up to 15-20, mix of branded + discovery
  X: max 2-3, integrated into copy
  TikTok: trending + branded mix
```

## Output

Creates these files in `~/socialforge-workspace/brands/{brand-slug}/`:
- `brand-config.json` — Core identity, colors, fonts, visual style, logo, hashtags
- `platform-config.json` — Active platforms, posting times, content mix, cross-posting
- `approval-chain.json` — Review tiers, escalation rules
- `compliance-rules.json` — Banned phrases, disclaimers, platform rules
- `asset-source.json` — Where assets live
- `style-references/` — Style reference photos (copied or linked)

## Pre-Flight Validation

Before any SocialForge workflow starts, the brand profile is validated:
- Image generation API configured (Vertex AI via `/socialforge:setup` or MCP connector)
- Brand name and slug set
- At least one platform configured
- Colors (primary + secondary) set
- Asset source configured (or explicitly skipped)

Missing fields trigger a warning with options to continue or fix.

## Timeout & Interruption Handling

- If user closes or interrupts during multi-step setup: save whatever was collected so far. On next `/socialforge:brand-setup [brand]`, detect the partial profile and ask: "Resume setup from Step {N}? Or start fresh?"
- Each step saves incrementally — no data is lost on interruption.
- If brand-config.json write fails: retry once, then save to `~/socialforge-workspace/brands/{slug}/brand-config.partial.json` and inform user.

## Switching Brands

```
/socialforge:brand-setup --switch [brand-name]
```

Instantly reloads the brand context. All subsequent commands use the switched brand.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [indranilbanerjee](https://github.com/indranilbanerjee)
- **Source:** [indranilbanerjee/socialforge](https://github.com/indranilbanerjee/socialforge)
- **License:** MIT
- **Homepage:** https://indranil.in

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-indranilbanerjee-socialforge-brand-manager
- Seller: https://agentstack.voostack.com/s/indranilbanerjee
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
