generate-social
Generates platform-sized, on-brand social templates as SVG from the active brand profile, with editable headline, subhead, and call-to-action zones. Vector output needs no account, key, or network. Use when a user asks for an Instagram post or story, an Open Graph or social card, a YouTube thumbnail, or a banner. Trigger with "make an Instagram post", "social card", or "/brand-make social".
Allowed Tools
Provided by Plugin
brand-forge
Generate on-brand logos, social templates, and marketing graphics for any brand — vector assets need no accounts or keys; AI imagery is opt-in.
Installation
This skill is included in the brand-forge plugin:
/plugin install brand-forge@claude-code-plugins-plus
Click to copy
Instructions
Generate Social
Generates a platform-sized, on-brand social template as SVG from the active brand profile, with editable text zones the user can tweak afterward.
Overview
The generate-social skill turns a headline (and optional subhead and call-to-action)
into a correctly sized social graphic that uses the brand's palette and fonts. Output
is vector SVG, so it scales cleanly and needs no account, key, or network call. The
generator (lib/social.mjs) lays out a brand band, a wrapped headline, an optional
subhead, and an optional accent pill; the skill resolves the active profile, picks the
platform, runs the generator, and saves the file. For a photographic background behind
the template, the raster path lives in the generate-graphic skill.
Prerequisites
- An active brand profile created with
/brand-new(abrand/directory, orbrands/[slug]/). Read loads itscolor-system.jsonandtypography.json. - Node.js on the PATH — the generator runs as
node lib/social.mjs. - Write access to an
output/directory in the working repository. - A headline string; subhead and call-to-action are optional parameters.
Instructions
- Run
/brand-statusto confirm the active brand; if none exists, tell the user to run/brand-newand stop. - Use Glob to locate the active brand directory, then Read and validate the profile with
validateProfile. Stop with the offending field if validation fails. - Choose the platform preset —
instagram-square(default),instagram-story,og-card, oryoutube-thumb. Ask the user when unspecified. - Generate the template by running the node generator:
import { loadProfile } from '../../lib/brand.mjs';
import { buildSocial } from '../../lib/social.mjs';
const profile = loadProfile(activeDir);
const { svg, platform } = buildSocial(profile, {
platform: 'instagram-square',
headline: 'We just raised our Series A',
subhead: 'Building the future of logistics',
cta: 'Read the story',
});
- Write the result with the Write tool to
output/[slug]-[platform].svg. - Hand the file to the
visual-guardiansubagent for a palette, contrast, and type pass; apply its fixes or surface its flags. - Report the saved path and point out the editable zones so the user can customize or adapt the copy:
id="headline",id="subhead", andid="cta".
Output
One SVG file under output/, named for the slug and platform:
output/northwind-instagram-square.svg
- Sized to the chosen platform (for example 1080×1080 for
instagram-square). - Text sits in editable zones —
id="headline",id="subhead",id="cta"— that wrap automatically. - All copy is HTML-escaped before it enters the markup; colors come from the palette only. No raster is produced.
Error Handling
| Condition | Behavior |
|---|---|
| No active brand profile | Stop and direct the user to /brand-new. |
Profile fails validateProfile |
Report the offending field and stop. |
| Headline missing | Ask the user for the headline before generating. |
| Unknown platform requested | List the four supported presets and ask the user to pick one. |
| Headline too long for the canvas | The generator wraps text; verify the result and shorten copy if the guardian flags overflow. |
To troubleshoot a clipped layout, verify the copy length against references/platform-sizes.md, then re-run and re-check with the guardian.
Examples
Example — launch announcement post
> /brand-make an instagram post announcing our Series A
Builds a 1080×1080 square with the brand band, a wrapped headline, and an accent call-to-action, saved as output/northwind-instagram-square.svg.
Example — link card
> /brand-make an og card for the blog post
Generates a 1200×630 Open Graph card sized for link previews and hands it to the guardian.
Example — story cover
> /brand-make an instagram story
Produces a 1080×1920 story, insetting text clear of the platform's top and bottom safe zones.
Resources
references/platform-sizes.md— every preset size, safe zones, the layout the generator produces, and how to add a preset.- Sibling skills: generate-logo for marks, and generate-graphic for photographic backgrounds — route between them with the
/brand-makecommand. - Open Graph protocol — the metadata standard
og-cardtargets. - Agent Skills documentation — how skills are authored and invoked.