social-graphics — Claude Code skill: what it does, how to install
Creates platform-accurate social media graphic specifications, drafts copy, and renders images via the FAL.ai pipeline.
npx skills add sanky369/vibe-building-skills --skill social-graphics -a claude-codeWhat social-graphics does
The skill plans static graphics for Instagram, LinkedIn, Twitter/X, TikTok, and Pinterest. It determines dimensions and drafts copy with headlines under ten words alongside a short call to action. All details are organized into a structured Social Graphic Spec.
Rendering runs through docs/creative_cli.py using fal-ai/nano-banana-pro. Direct image creation requires FAL_API_KEY or FAL_KEY. Without credentials, the skill outputs a ready-to-run terminal command instead.
Because nano-banana-pro renders complex lettering poorly, prompts explicitly reserve empty space for adding final text overlays in an external tool.
What it helps with
- calculate exact image dimensions and aspect ratios across social networks
- draft concise overlay copy with headlines and action-focused CTAs
- build structured generation prompts with reserved negative space
- adapt a single creative concept to multiple platform formats
Example prompts for the agent
- Draft a product launch graphic for Instagram feed and LinkedIn
- Create a Pinterest pin and a TikTok cover for my new tutorial
- Adapt this announcement banner into a 4:5 Instagram carousel
How to install social-graphics
1Skills CLI (Vercel)
npx skills add sanky369/vibe-building-skills --skill social-graphics -a claude-code2Manually: put the files in place
~/.claude/skills/social-graphics/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/social-graphics/
1Skills CLI (Vercel)
npx skills add sanky369/vibe-building-skills --skill social-graphics -a codex2Manually: put the files in place
.agents/skills/social-graphics/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add sanky369/vibe-building-skills --skill social-graphics -a cursor2Manually: put the files in place
.cursor/skills/social-graphics/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install sanky369/vibe-building-skills social-graphics2Manually: put the files in place
.github/skills/social-graphics/SKILL.md1Skills CLI (Vercel)
npx skills add sanky369/vibe-building-skills --skill social-graphics -a gemini-cli2Platform CLI
gemini skills install https://github.com/sanky369/vibe-building-skills --path skills/creative/social-graphicsManually: put the files in place
.devin/skills/social-graphics/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add sanky369/vibe-building-skills --skill social-graphics -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about social-graphics
How to install social-graphics in Claude Code?
Run npx skills add sanky369/vibe-building-skills --skill social-graphics -a claude-code in your terminal.
What does social-graphics do?
It drafts layout specs, writes concise social copy, and builds prompts to render visual assets through Fal.ai.
Does social-graphics require an API key?
Generating images requires FAL_API_KEY or FAL_KEY. Without it, the skill outputs complete specs and CLI commands to run later.
Source text
SKILL.md · MIT
---
name: social-graphics
description: "Produce platform-correct social media graphics: pick the right dimensions and layout per platform, write the headline/body/CTA copy, build the generation prompt, and generate the image via the repo's FAL.ai pipeline. Use whenever the user wants a social post visual, Instagram post/story/carousel, LinkedIn graphic, Twitter/X image, TikTok thumbnail, Pinterest pin, launch announcement graphic, or 'something to post about X' — even if they never name a platform. Also use to adapt one design across several platforms. Produces a Social Graphic Spec per asset (platform, dimensions, layout, copy, full generation prompt) plus generated images when FAL_API_KEY is available."
---
# Social Graphics
Turn a message and a platform into ready-to-post graphics. For each asset you produce a **Social Graphic Spec** — platform, exact dimensions, layout, overlay copy, and a complete generation prompt — then generate the image through the repo pipeline (`docs/creative_cli.py`, model `fal-ai/nano-banana-pro`). The governing principle: **a social graphic is read for under two seconds** — one message, one focal point, one CTA; if a viewer can't get the point from a thumbnail-sized glance, the design fails regardless of how good it looks full-size.
## When to use / when not to
- Use for platform-bound static visuals: feed posts, stories, pins, link-preview images, announcement graphics, quote cards, carousels.
- Logos, icons, patterns, brand marks → `skills/creative/brand-asset`.
- Standalone product hero shots (no platform framing, no overlay copy) → `skills/creative/product-photography`.
- Motion content → `skills/creative/product-video` (product-led) or `skills/creative/talking-head` (person-led).
- No brand style yet and the user wants a consistent look → run `skills/creative/creative-strategist` first; its style guide feeds this skill.
- If the visual language itself feels generic and needs an original identity → `skills/creative/original-design` first.
## Intake
Ask in one tight batch, only what's missing:
1. **Message** — what is this post saying, in one sentence? What should the viewer do (CTA)?
2. **Platform(s) and format** — Instagram feed/story/carousel, LinkedIn, Twitter/X, TikTok, Pinterest? One platform or a multi-platform set?
3. **Brand constraints** — style guide from `skills/creative/creative-strategist`, brand colors/fonts, product imagery to feature?
4. **Tone** — professional, trendy, minimalist, playful?
Infer instead of asking: tone from the platform (LinkedIn → professional; TikTok → energetic), colors from any brand materials in the project. **Don't stall:** with a clear message and platform, state assumptions for the rest and proceed.
## Platform specifications (source of truth for dimensions)
| Platform | Format | Pixels | CLI aspect-ratio | Design posture |
|---|---|---|---|---|
| Instagram | Feed post | 1080×1080 | `1:1` | vibrant, high contrast, trending aesthetic |
| Instagram | Story / Reel cover | 1080×1920 | `9:16` | full-bleed vertical, text in safe zone |
| Instagram | Carousel | 1080×1350 | `4:5` | one idea per card, visual continuity across cards |
| LinkedIn | Feed post | 1200×627 | `16:9`* | professional, credible, value-led copy |
| LinkedIn | Document page | 1200×1500 | `4:5` | clean, readable, business imagery |
| Twitter/X | Post image | 1200×675 | `16:9` | bold, simple, instant visual impact |
| TikTok | Thumbnail/graphic | 1080×1920 | `9:16` | bold text overlays, energetic, authentic feel |
| Pinterest | Standard pin | 1000×1500 | `2:3` | vertical, inspiring, high-quality imagery |
*Closest supported ratio; the CLI supports `21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3, 9:16` — always pick the nearest and note any crop.
## Workflow
### 1. Resolve platform and format
If the user named a platform, use the table above. If not, decide: B2B/professional audience → LinkedIn; consumer/lifestyle → Instagram; discovery/how-to/aspirational → Pinterest; announcement to an existing following → the platform where they have one (ask only if truly unknown). Multi-platform request → design the **master** for the most constrained format first (usually 1:1 or 9:16), then adapt per platform; never stretch one image across all.
### 2. Write the copy before the visual
- **Headline:** ≤10 words, the message itself, not a teaser.
- **Body (optional):** ≤2 short lines supporting the headline.
- **CTA:** 2–4 words, action verb ("Shop now", "Get the guide", "Link in bio").
If the copy can't fit these limits, the post is carrying more than one message — split it into a carousel or multiple posts and tell the user why.
### 3. Design the layout
Pick one focal point (product shot, illustration, bold typography) and place copy against the quietest area. Decision rules: photo-led → headline top or bottom third over a darkened/blurred band; typography-led → headline IS the focal point, minimal imagery; carousel → identical layout grid on every card, only content changes. Rule of thirds, generous negative space, max 2–3 font roles (headline / body / CTA).
### 4. Build the generation prompt
Formula — every prompt contains all six parts, in order:
```
[Platform + format] graphic, [subject/focal point], [color palette from brand or chosen],
[composition: focal point + where copy space is reserved], [tone/mood words],
[dimensions], professional design, high contrast, eye-catching
```
Always reserve explicit "clean negative space at [position] for text overlay" in the prompt — nano-banana-pro renders text imperfectly, so plan to overlay final copy in a design tool rather than trusting generated text for anything longer than 2–3 words.
### 5. Generate
If `FAL_API_KEY` (or `FAL_KEY`) is set, run the repo CLI (`docs/fal_api.py` under the hood, model `fal-ai/nano-banana-pro`):
```bash
python docs/creative_cli.py social \
--platform instagram --topic "Product Launch" \
--prompt "<full prompt>" --aspect-ratio 1:1 --resolution 2K
```
`--platform` accepts `instagram|linkedin|twitter|tiktok|pinterest`. Generate `--num-images 2` when the user is choosing between directions. If no key is set, deliver the spec with ready-to-run commands instead.
### 6. Self-check against the quality bar, deliver the spec + images.
## Required output format
One block per asset; a multi-platform set is the master followed by adaptation blocks:
```markdown
# Social Graphic Spec — [Campaign/Message]
## Asset 1 — [Platform · Format]
- **Dimensions:** 1080×1080 (aspect `1:1`) · **Role:** master | adaptation
- **Message:** [one sentence]
### Copy
- Headline: "..." (≤10 words)
- Body: "..." (≤2 lines, or —)
- CTA: "..."
### Layout
- Focal point: ... · Copy placement: ... · Palette: [colors + source: brand guide / chosen]
### Generation prompt
> [full prompt, all six parts]
`python docs/creative_cli.py social --platform [x] --topic "[x]" --prompt "..." --aspect-ratio [x] --resolution 2K`
### Result
- [generated file path(s), or "pending — FAL_API_KEY not set"]
- Post-gen step: overlay final copy in design tool: [yes/no + what]
## Asset 2 — [Platform · Format]
(same structure; for adaptations, note only what changes from the master)
```
## Quality bar (check before delivering)
- Dimensions match the platform table exactly; aspect ratio is a supported CLI value.
- Headline ≤10 words; total text ≤3 elements (headline, body, CTA); one message per asset.
- Copy placement sits over reserved negative space, not over the focal point.
- Text-background contrast is explicitly handled (band, shadow, or blur called out in layout).
- Palette and tone match the brand style guide when one exists; deviations flagged to the user.
- Prompt contains all six formula parts, including reserved copy space.
- Multi-platform sets: adapted per format, never one image stretched; carousel cards share one grid.
- No invented engagement statistics; "best practice" guidance here is heuristic — label it if asked.
## Integration
- `skills/creative/creative-strategist` → feeds in: the style guide (palette, typography, mood) every spec must obey.
- `skills/creative/original-design` → feeds in: a design-language brief when the user wants an original visual world; every graphic becomes an artifact of it.
- `skills/creative/product-photography` → feeds in: product shots reused as focal-point imagery.
- `skills/creative/product-video` → feeds in: hero keyframes reused as post visuals; consumes: nothing.
- `skills/creative/brand-asset` → feeds in: logos/marks to place; consumes: nothing.
- `skills/creative/orchestrator` → routes multi-asset campaigns through this skill per platform.
© sanky369 · MIT · sanky369/vibe-building-skills