agentleFS
indranilbanerjeeindranilbanerjee/socialforge/skills/brand-manager/SKILL.md

brand-manager

Skill43 starsChanged 4 months agoMITView on GitHub

Set up or update a brand profile: colors, fonts, logo, voice, platforms, compliance rules. \"update our brand colors\"

The file

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 4 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run /socialforge:setup to configure Google Cloud Vertex AI credentials.

    line 23
  2. Very specific:

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

    line 42
  3. Distinctive:

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

    line 46
  4. Distinctive:

    If user skips: Log warning — "Compliance rules empty.

    line 135
  5. Distinctive:

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

    line 148
  6. Very specific:

    Recommended for agencies: Use Google Drive as the source of truth.

    line 166
  7. Distinctive:

    If user skips: Previews use the brand name and a placeholder avatar.

    line 189
  8. Very specific:

    Before any SocialForge workflow starts, the brand profile is validated:

    line 232
  9. Very specific:

    If user closes or interrupts during multi-step setup: save whatever was collected so far.

    line 243
  10. Very specific:

    If brand-config.json write fails: retry once, then save to ${CLAUDE_PLUGIN_DATA}/socialforge/brands/{slug}/brand-config.partial.json (or …

    line 245

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/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}/socialforge/brands/<brand>/asset-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 [brand] --update

AI-assistance disclosure (ai_disclosure in brand-config.json): defaults to {"mode": "claude-surfaces", "text": null}. This governs the AI-assistance note in the monthly delivery manifest (see /socialforge:assemble-document) — NOT the post captions themselves: caption-level AI labels belong to each platform's native disclosure toggle (Instagram/TikTok/YouTube ship their own "AI-generated" switches; flag them at publish handoff instead of burning caption characters). Modes: claude-surfaces (default — the note attaches when production ran on a Claude surface or the surface is uncertain; skipped only when a non-Claude harness is affirmatively detected), always, off (the brand owns that choice). Custom text replaces the default verbatim; the default is vendor-neutral. Generated IMAGES/VIDEO carry C2PA ai-disclosure metadata independently of this setting (see /socialforge:c2pa-sign).

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? Escalate to whom after M days? (Posts never finalize without their approvals.)

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 fills the name and handle on each preview card.

If user skips: Previews use the brand name and a placeholder avatar. Recommend filling it in so the cards read as the real account.

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 5 (Instagram's current cap), in the first comment, mix of branded + discovery
  X: max 2-3, integrated into copy
  TikTok: trending + branded mix

Output

Creates these files in ${CLAUDE_PLUGIN_DATA}/socialforge/brands/{brand-slug}/ (falling back to ~/socialforge-workspace/brands/{brand-slug}/ when ${CLAUDE_PLUGIN_DATA} is unset):

  • 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 ${CLAUDE_PLUGIN_DATA}/socialforge/brands/{slug}/brand-config.partial.json (or the ~/socialforge-workspace/... fallback) and inform user.

Switching Brands

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

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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.