Make Social Post
Skill8 starsChanged 5 months agoMITView on GitHub
Design and render branded social posts (Instagram square/portrait, LinkedIn, X) for your brand using the bundled Social Studio. Headline-first billboard layout with optional product card, stat strip, or testimonial. Browser preview → puppeteer-rendered PNG → optional one-command publish to your Files folder (when connected).
- Installs packages
In this repository101 other files it gives its agents.
- templates/CLAUDE.mdCLAUDE.md
- Add a FieldSkill
- Assemble Content PackSkill
- Assemble PackSkill
- Audit My AutomationsSkill
- Audit My DataSkill
- automate-thisSkill
- Brand My WorkspaceSkill
- Break Down A ChannelSkill
- Build Brand StrategySkill
- Build Customer VoiceSkill
- Build DocumentSkill
- Build FormSkill
- Build Knowledge Base From DocsSkill
- Build My ProofSkill
- Build My VoiceSkill
- Build Social StrategySkill
- Build SpreadsheetSkill
- Build Work Order ProcessSkill
- Cash Flow ForecastSkill
- Coach My CallsSkill
- Compare DocumentsSkill
- Connect A ToolSkill
- Delegate This WorkSkill
- Describe A ProductSkill
- Design My ScenesSkill
- Design Nurture SequenceSkill
- draft-replySkill
- Email Me A ReportSkill
- Estimate My BASSkill
- Extract DocumentSkill
- Find My Next MoveSkill
- Five Day ChallengeSkill
- Follow-up RadarSkill
- Form RadarSkill
- Get Found OnlineSkill
- Grill Me On This DecisionSkill
- import-from-anywhereSkill
- lead-triageSkill
- Learn My BusinessSkill
- Lint DocumentSkill
- Lint FormSkill
- Lint Nurture SequenceSkill
- log-this-callSkill
- make-it-happenSkill
- Make My VideoSkill
- Make Product DemoSkill
- Make ThumbnailSkill
- missed-call-recoverySkill
- Nurture HealthSkill
- Onboard Team MemberSkill
- Outstanding DocumentsSkill
- Outstanding InvoicesSkill
- Package My VideoSkill
- Plan My AdsSkill
- Plan My ContentSkill
- Plan My RoadmapSkill
- Plan My YouTubeSkill
- Prep For CallSkill
- Price My WorkSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 64
Shape guard on the
quotecard (check FIRST): Read the profile's business shape: prefer an explicit Business shape: line in ## How the … - Very specific: line 161
Publish is optional: If they'd rather post by hand, the PNG in studio/social/output/ is the deliverable.
≈ “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.
Files
Make Social Post
You're helping the operator design and render a social post for their own
brand using the bundled studio at studio/social/. It's a Vite + React +
Puppeteer pipeline producing PNGs in four formats that can stay local or be
uploaded to the operator's workspace (when connected).
The design rules + the post anatomy + the data shape live in two canonical files inside the studio (read them BEFORE designing, not after):
| File | What's in it |
studio/social/CLAUDE.md | Post anatomy, the four formats, the questions to ask, brand + content rules, samples.json field table |
studio/social/src/templates/SocialPost.jsx (JSDoc header) | Canonical layout, the FORMATS scale table, the full data shape, brand rules in compact form |
The methodology is summarised at
knowledge/social-post-method.md. The
headline's attention craft — the contrast that opens a curiosity gap, and naming one
idea so it sticks — draws on
knowledge/storytelling-method.md.
Step 1 — Confirm the brief
Ask the operator:
- Which format(s)? Instagram Square (1080×1080), Instagram Portrait (1080×1350), LinkedIn (1200×627), or X (1600×900). A campaign often wants the same message in 2–3 formats — that's one samples.json entry per format, same copy.
- What's the one message? A post is a billboard — 3–8 word headline, one idea. If it won't fit in 8 words, it's two posts.
- Accent + emphasis — which one word gets the brand gradient
(
accentWord), and is there a single serif emphasis word (emphasisWord, optional)? A visual? Optional, pick at most one:
card— a product-ish list (label/value rows), the "look inside the product" feelstats— a 1–3 metric strip ("9x faster", "+34% MoM")quote— a testimonial (initials monogram by default;quote.avatarURL for a real photo)- none — a clean headline-only announcement
Shape guard on the
quotecard (check FIRST). Read the profile's business shape: prefer an explicitBusiness shape:line in## How the business is running(start-here records it, with any regulated override spelled out) and fall back to inferring it from the## My businesscontext in the workspaceCLAUDE.md. Treat the business as regulated if that line carries aRegulated:clause, or (when inferring) the business is a regulated one (clinic / appointment, or the finance / mortgage broking, insurance, or legal verticals). For a regulated business, do NOT offer thequotecard for an outcome or result testimonial. Allow it only for a service-level quote: the logistics, the experience, or the care, never a clinical or financial result. The per-shape overrides live incontent-rules.md§4, which points toindustry-notes.mdandbusiness-method.md§7.2 / §15. For all other shapes, any of the four visuals is fine.
Step 2 — Add the design to samples.json
Edit studio/social/src/data/samples.json. Minimum shape:
"launch-square": {
"template": "social-square",
"data": {
"eyebrow": "Now live",
"headline": "Run your whole business from one place",
"accentWord": "one place",
"emphasisWord": "whole",
"subhead": "Leads, quotes and follow-ups stop slipping through the cracks.",
"handle": "@yourbusiness",
"cta": "Book a demo"
}
}template is one of social-square / social-portrait / social-linkedin
/ social-x. For a multi-format campaign, duplicate the entry with a
different template (and key suffix) and the same copy.
Step 3 — Iterate in the browser
cd studio/social
npm install # first run only
npm run dev # http://localhost:3216The sidebar groups designs into one folder per format. Click the new design;
the right pane renders it at native pixel size. Tweak samples.json or
SocialPost.jsx — Vite hot-reloads.
Quality checks before shipping:
- Headline — 3–8 words, exactly one
accentWordthat appears verbatim, at most oneemphasisWord. - Palette — any visual card chrome stays on the brand palette (teal / green / blue / slate). No red / orange / purple.
- Fits the frame — nothing clipped at the edges (especially LinkedIn's short 627px height).
Step 4 — Render to PNG
npm run shoot <key>Puppeteer + real Chrome writes the PNG to studio/social/output/ and opens
it. Inspect at 100% — the gradient accent word uses background-clip:text,
which ONLY renders correctly in real Chrome, not in-browser rasterisers.
Step 5 — Publish (optional, when connected)
The keyless deliverable is the rendered PNG. If the operator has a connected workspace, you can also one-command publish it straight to their Files folder:
npm run publish <key> # one design
npm run publish -- --all # every design (skip existing)
npm run publish <key> --replace # overwriteUploads to the operator's Files > Images > Social Posts folder. Idempotent:
skip-if-exists by default, --replace to overwrite.
Hard rules
- Content guardrails. Customer-facing copy uses no em dashes, invents no
facts, quotes, or numbers, and names no third-party vendor. Write it in the
owner's brand voice; the framing and the marketing psychology are the owner's
choice. The rules are in
knowledge/content-rules.md. The owner's voice lives inmarketing-strategy/<BrandName>/voice.mdwhen it exists; say so plainly if it does not. - Don't invent design rules. The two canonical files in the studio (CLAUDE.md + the SocialPost.jsx JSDoc) are the source of truth. Read them.
- The operator owns the copy. Draft headlines if asked, but don't ship without their nod.
- Render before declaring done. A design that looks right in the dev
server can misrender in puppeteer. Run
npm run shootand read the PNG. - Publish is optional. If they'd rather post by hand, the PNG in
studio/social/output/is the deliverable.
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
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.

