Social kit

End-to-end composite that turns a single brief into voice-tuned X post variants, LinkedIn post variants, and a matching social graphic.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/social/composites/social-kit#main ~/.claude/skills/social-kit

For one project only, change the path to .claude/skills/social-kit.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text221 lines
social-kit/SKILL.md221 lines7.2 KBpushed 96d agoRawView on GitHub

Social Kit

One command → X variants + LinkedIn variants + a graphic. A thin orchestrator that chains create-x-content, create-linkedin-content, and goose-graphics, with sensible defaults and a pre-flight check for voice guides.

Invocation

Full args:

/social-kit --brief "..." --format poster --style matt-gray --output ./content/2026-04-21-my-topic/

Partial (asks for format):

/social-kit --brief "..."

Interactive:

/social-kit

Inputs

Flag Required Default
--brief Yes (asked if missing)
--format No Asked with recommendations
--style No matt-gray if the user has no stated preference; otherwise asked
--output No ./content/YYYY-MM-DD-<topic-slug>/
--variants-x No create-x-content decides
--variants-linkedin No create-linkedin-content decides
--skip-graphic No false
--skip-x No false
--skip-linkedin No false

Workflow

Step 1 — Intake

  1. Resolve the brief (prompt if missing).
  2. Derive a topic-slug from the brief (short kebab-case, 2–4 words).
  3. Resolve <output> — default ./content/YYYY-MM-DD-<topic-slug>/. Create the directory if it doesn't exist.

Step 2 — Pre-flight voice guide check

Check ~/.goose-skills/config.json for voice_guides.x and voice_guides.linkedin. If either is missing and that platform isn't skipped:

Missing voice guide for <platform>.
  (a) Generate one now via /generate-voice-guide --platforms <platform>
  (b) Paste an existing path
  (c) Skip <platform> for this run

Do not proceed without resolving every non-skipped platform.

Step 3 — Draft X variants

Invoke /create-x-content with:

--brief "<brief>"
--output <resolved-output>
[--variants <N>]

Wait for completion. Capture the list of created files + the most substantive variant for use in Step 5's graphic brief.

Skip if --skip-x.

Step 4 — Draft LinkedIn variants

Invoke /create-linkedin-content with the same args. Wait for completion.

Skip if --skip-linkedin.

Step 5 — Pick a graphic format

If --format was passed, use it.

Otherwise, analyse the brief and recommend 1–2 formats using this heuristic:

Brief shape Recommended format
One strong claim, stat, or launch announcement poster (1080×1350)
Numbered steps, how-to, or sequential process carousel (1080×1080 per slide)
Mechanism/data/timeline with multiple sections infographic (1080×variable)
Single testimonial, quote, or result metric tweet (1080×1080)
Vertical, mobile-first, under 6 beats story (1080×1920)
Widescreen presentation or demo slides (1920×1080)
Chart or data visualization chart (1080×1080)

Present recommendations as a short menu:

Based on the brief, I'd recommend one of these:
  1. poster — single strong claim, fits the "X costs $0.01 to run" shape
  2. carousel — if you want to walk through the how-it-works steps

Which? (or paste another format name)

Skip this step if --skip-graphic.

Step 6 — Pick a style

If --style was passed, use it.

Otherwise, default to matt-gray unless the user stops the skill to pick another. To change the default per-user, a future enhancement can add a style_default key to ~/.goose-skills/config.json.

Step 7 — Generate the graphic

Invoke /goose-graphics with:

--style <style>
--format <format>
--brief "<distilled-brief>"

Point output at <resolved-output>/graphic/. The distilled brief should include:

  • The headline/hook from the most substantive X variant
  • 2–4 key beats (steps, numbers, or sections)
  • Any specific strings that must appear verbatim (tool names, commands, prices)

Wait for completion. Capture paths to PNG exports + index.html.

Skip if --skip-graphic.

Step 8 — Deliver

Print a summary:

Social kit ready at <resolved-output>/

X drafts (N variants):
  - variant-a-<framing>.md
  - variant-b-<framing>.md
  - ...

LinkedIn drafts (N variants):
  - linkedin-a-<framing>.md
  - linkedin-b-<framing>.md
  - ...

Graphic (<format>, <style>):
  - graphic/slides/          (HTML source)
  - graphic/exports/         (PNG files, N files)
  - graphic/index.html       (preview in browser)

Next steps:
  - Open graphic/index.html to review visuals
  - Open any variant-*.md to copy/paste
  - Pair a variant with a graphic for LinkedIn/X

Output Layout

content/YYYY-MM-DD-<topic>/
├── variant-a-<framing>.md        # X drafts
├── variant-b-<framing>.md
├── ...
├── linkedin-a-<framing>.md       # LinkedIn drafts
├── linkedin-b-<framing>.md
└── graphic/
    ├── slides/                   # HTML source (1+ files depending on format)
    ├── exports/                  # PNG exports
    └── index.html                # preview

Dependencies

Required skills:

  • create-x-content
  • create-linkedin-content
  • goose-graphics

Recommended:

  • generate-voice-guide (create voice guides once before first use of social-kit)

Voice guides + config at ~/.goose-skills/voice-guides/ and ~/.goose-skills/config.json are discovered automatically.

Examples

Typical run (format asked):

/social-kit --brief "Claude can now verify email deliverability for $0.01 per check. Install gooseworks and ask. Runs MX, SMTP, RCPT TO, catch-all, disposable, blocklist checks."

→ Drafts X + LinkedIn variants → asks "poster or carousel?" → generates graphic → delivers.

Full args (one-shot):

/social-kit --brief "Someone vibe-coded a full lead gen tool in Claude Code in 2 weeks. Scrapes every business off Google Maps with 30+ data fields, pulls verified emails, reads up to 50 reviews to find pain points. Running $4200 ACV deals." --format carousel --style heatwave-orange

→ Runs end-to-end with no prompts.

Skip graphic:

/social-kit --brief "..." --skip-graphic

→ Just the X + LinkedIn drafts.

Tips

  • First-time users: run /generate-voice-guide once before your first /social-kit invocation. This is a one-time setup.
  • When the recommended format feels off, it probably is. The heuristic is a starting point — trust your read of the brief more than the recommendation.
  • Pair drafts with graphics intentionally. A long mechanism-breakdown X variant pairs with a carousel. A short hype variant pairs with a poster. The file naming makes these pairings easy to spot.
  • Iterate on voice before iterating on content. If your drafts feel off, 80% of the fix is re-running /generate-voice-guide with more recent posts or more iterations — not rewriting the skill prompts.
  • Output path convention: uses a standard content/YYYY-MM-DD-<topic>/ layout. Keep it consistent for easier cross-referencing later.
1---
2name: social-kit
3description: >
4 End-to-end composite that turns a single brief into voice-tuned X post variants,
5 LinkedIn post variants, and a matching social graphic. Orchestrates
6 create-x-content + create-linkedin-content + goose-graphics in one invocation.
7 Asks about graphic format when not specified, with heuristic-driven
8 recommendations.
9tags: [content, social]
10---
11 
12# Social Kit
13 
14One command → X variants + LinkedIn variants + a graphic. A thin orchestrator that chains `create-x-content`, `create-linkedin-content`, and `goose-graphics`, with sensible defaults and a pre-flight check for voice guides.
15 
16## Invocation
17 
18Full args:
19```
20/social-kit --brief "..." --format poster --style matt-gray --output ./content/2026-04-21-my-topic/
21```
22 
23Partial (asks for format):
24```
25/social-kit --brief "..."
26```
27 
28Interactive:
29```
30/social-kit
31```
32 
33## Inputs
34 
35| Flag | Required | Default |
36|------|----------|---------|
37| `--brief` | Yes (asked if missing) | — |
38| `--format` | No | Asked with recommendations |
39| `--style` | No | `matt-gray` if the user has no stated preference; otherwise asked |
40| `--output` | No | `./content/YYYY-MM-DD-<topic-slug>/` |
41| `--variants-x` | No | `create-x-content` decides |
42| `--variants-linkedin` | No | `create-linkedin-content` decides |
43| `--skip-graphic` | No | false |
44| `--skip-x` | No | false |
45| `--skip-linkedin` | No | false |
46 
47## Workflow
48 
49### Step 1 — Intake
50 
511. Resolve the brief (prompt if missing).
522. Derive a `topic-slug` from the brief (short kebab-case, 2–4 words).
533. Resolve `<output>` — default `./content/YYYY-MM-DD-<topic-slug>/`. Create the directory if it doesn't exist.
54 
55### Step 2 — Pre-flight voice guide check
56 
57Check `~/.goose-skills/config.json` for `voice_guides.x` and `voice_guides.linkedin`. If either is missing and that platform isn't skipped:
58 
59```
60Missing voice guide for <platform>.
61 (a) Generate one now via /generate-voice-guide --platforms <platform>
62 (b) Paste an existing path
63 (c) Skip <platform> for this run
64```
65 
66Do not proceed without resolving every non-skipped platform.
67 
68### Step 3 — Draft X variants
69 
70Invoke `/create-x-content` with:
71```
72--brief "<brief>"
73--output <resolved-output>
74[--variants <N>]
75```
76 
77Wait for completion. Capture the list of created files + the most substantive variant for use in Step 5's graphic brief.
78 
79Skip if `--skip-x`.
80 
81### Step 4 — Draft LinkedIn variants
82 
83Invoke `/create-linkedin-content` with the same args. Wait for completion.
84 
85Skip if `--skip-linkedin`.
86 
87### Step 5 — Pick a graphic format
88 
89If `--format` was passed, use it.
90 
91Otherwise, analyse the brief and recommend 1–2 formats using this heuristic:
92 
93| Brief shape | Recommended format |
94|-------------|-------------------|
95| One strong claim, stat, or launch announcement | **poster** (1080×1350) |
96| Numbered steps, how-to, or sequential process | **carousel** (1080×1080 per slide) |
97| Mechanism/data/timeline with multiple sections | **infographic** (1080×variable) |
98| Single testimonial, quote, or result metric | **tweet** (1080×1080) |
99| Vertical, mobile-first, under 6 beats | **story** (1080×1920) |
100| Widescreen presentation or demo | **slides** (1920×1080) |
101| Chart or data visualization | **chart** (1080×1080) |
102 
103Present recommendations as a short menu:
104 
105```
106Based on the brief, I'd recommend one of these:
107 1. poster — single strong claim, fits the "X costs $0.01 to run" shape
108 2. carousel — if you want to walk through the how-it-works steps
109 
110Which? (or paste another format name)
111```
112 
113Skip this step if `--skip-graphic`.
114 
115### Step 6 — Pick a style
116 
117If `--style` was passed, use it.
118 
119Otherwise, default to `matt-gray` unless the user stops the skill to pick another. To change the default per-user, a future enhancement can add a `style_default` key to `~/.goose-skills/config.json`.
120 
121### Step 7 — Generate the graphic
122 
123Invoke `/goose-graphics` with:
124```
125--style <style>
126--format <format>
127--brief "<distilled-brief>"
128```
129 
130Point output at `<resolved-output>/graphic/`. The distilled brief should include:
131- The headline/hook from the most substantive X variant
132- 2–4 key beats (steps, numbers, or sections)
133- Any specific strings that must appear verbatim (tool names, commands, prices)
134 
135Wait for completion. Capture paths to PNG exports + index.html.
136 
137Skip if `--skip-graphic`.
138 
139### Step 8 — Deliver
140 
141Print a summary:
142 
143```
144Social kit ready at <resolved-output>/
145 
146X drafts (N variants):
147 - variant-a-<framing>.md
148 - variant-b-<framing>.md
149 - ...
150 
151LinkedIn drafts (N variants):
152 - linkedin-a-<framing>.md
153 - linkedin-b-<framing>.md
154 - ...
155 
156Graphic (<format>, <style>):
157 - graphic/slides/ (HTML source)
158 - graphic/exports/ (PNG files, N files)
159 - graphic/index.html (preview in browser)
160 
161Next steps:
162 - Open graphic/index.html to review visuals
163 - Open any variant-*.md to copy/paste
164 - Pair a variant with a graphic for LinkedIn/X
165```
166 
167## Output Layout
168 
169```
170content/YYYY-MM-DD-<topic>/
171├── variant-a-<framing>.md # X drafts
172├── variant-b-<framing>.md
173├── ...
174├── linkedin-a-<framing>.md # LinkedIn drafts
175├── linkedin-b-<framing>.md
176└── graphic/
177 ├── slides/ # HTML source (1+ files depending on format)
178 ├── exports/ # PNG exports
179 └── index.html # preview
180```
181 
182## Dependencies
183 
184Required skills:
185- `create-x-content`
186- `create-linkedin-content`
187- `goose-graphics`
188 
189Recommended:
190- `generate-voice-guide` (create voice guides once before first use of social-kit)
191 
192Voice guides + config at `~/.goose-skills/voice-guides/` and `~/.goose-skills/config.json` are discovered automatically.
193 
194## Examples
195 
196**Typical run (format asked):**
197```
198/social-kit --brief "Claude can now verify email deliverability for $0.01 per check. Install gooseworks and ask. Runs MX, SMTP, RCPT TO, catch-all, disposable, blocklist checks."
199```
200→ Drafts X + LinkedIn variants → asks "poster or carousel?" → generates graphic → delivers.
201 
202**Full args (one-shot):**
203```
204/social-kit --brief "Someone vibe-coded a full lead gen tool in Claude Code in 2 weeks. Scrapes every business off Google Maps with 30+ data fields, pulls verified emails, reads up to 50 reviews to find pain points. Running $4200 ACV deals." --format carousel --style heatwave-orange
205```
206→ Runs end-to-end with no prompts.
207 
208**Skip graphic:**
209```
210/social-kit --brief "..." --skip-graphic
211```
212→ Just the X + LinkedIn drafts.
213 
214## Tips
215 
216- **First-time users:** run `/generate-voice-guide` once before your first `/social-kit` invocation. This is a one-time setup.
217- **When the recommended format feels off, it probably is.** The heuristic is a starting point — trust your read of the brief more than the recommendation.
218- **Pair drafts with graphics intentionally.** A long `mechanism-breakdown` X variant pairs with a carousel. A short `hype` variant pairs with a poster. The file naming makes these pairings easy to spot.
219- **Iterate on voice before iterating on content.** If your drafts feel off, 80% of the fix is re-running `/generate-voice-guide` with more recent posts or more iterations — not rewriting the skill prompts.
220- **Output path convention:** uses a standard `content/YYYY-MM-DD-<topic>/` layout. Keep it consistent for easier cross-referencing later.
221 

Discussion

Alternatives

Also in Graphics & banners