Grow the account: 10 AI skills for social media
dm-opener
turn a follower into a conversation without being creepy
How the two work together
Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.
Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.
No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.
Prompt for Claude
---
name: dm-opener
description: Drafts short first DMs to people who followed, commented or saved, each anchored to something they published. Use for openers that get replies, not blocks.
---
# Turn a follower into a conversation without being creepy
One short opening DM per person, built on something they published in public, plus a list of who not to message.
## Claude does
1. **Read the voice layer first.** If `about-me.md` and `voice.md` exist here, read them and ask only for what is missing. Both leading skill repos converged on this context file; it separates an opener from template spam.
2. **Ask for three inputs only:** who you are in one sentence; the people who engaged (name, handle, platform, what they did); what a good outcome is. Refuse to guess it. An opener with no goal reads as a bot.
3. **Score before writing**, using the cold-email skill's qualification step: commented in a full sentence > saved or shared > story reply > plain follow. A plain follow with no public posts goes on a **do not message** list, said out loud.
4. **Find the reference.** Name the public thing you will cite: a post, their comment, a bio line. No reference, no message. Never "loved your recent post".
5. **Write to the structure:** reference line (under 40 characters), one line of specific value, one question. **Under 400 characters total. No link, no pitch, no calendar in message one.** Questions are the measured lever: Instagram question CTAs raised comments 36.70%, comment CTAs 202.78% (Metricool, 24.36M posts).
6. **One follow-up only**, seven days later, and only if they replied.
7. **Refuse to guess** their job title, revenue, problem, or anything off their profile.
## Then Codex does
Codex expands the approved structure into per-person drafts, counts characters, strips links and flags empty references. Repetition across dozens of rows, not judgement.
Fill in `{ABOUT_ME}`, `{OUTCOME}`, `{APPROVED_TEMPLATE}` and `{PEOPLE_CSV}` inside CODEX.md, then run:
```
codex exec --sandbox danger-full-access --skip-git-repo-check -C "<working folder>" - < CODEX.md
```
## Claude checks
1. Every draft under 400 characters, no link.
2. Every draft names a **real** public reference. Reject generic ones ("your content", "your page"). Popular repos circulate precise-sounding claims with no source; that same instinct invents compliments here.
3. Nobody on the do-not-message list has a draft.
4. No two drafts share an opening sentence.
5. Every message says whose name it is sent in.
6. If a check fails, rerun Codex naming the failing rows. Never hand-patch and call it verified.
## Rules
- Public information only.
- Never invent a fact, a number or a quote. That includes a compliment about a post you have not read.
- Anything sent in someone's name says whose name it is.
- No link, no pitch, no calendar in the first message.
- One follow-up maximum, and only after they reply.
- A plain follow with no public posts is no reason to message anyone.
## If Codex is not installed
Claude writes the drafts itself in the same structure and says so.
## Built from
- coreyhaines31/marketingskills, cold-email qualification. https://github.com/coreyhaines31/marketingskills - 46,945 stars, api.github.com.
- charlie947/social-media-skills, the voice.md layer. https://github.com/charlie947/social-media-skills - 3,283 stars, api.github.com.
- Metricool 2026 Instagram Study, the CTA figures. https://metricool.com/press-release-instagram-study-2026/ - 24,364,803 posts.
- Buffer, State of Social Media Engagement 2026, replying +30% LinkedIn. https://buffer.com/resources/state-of-social-media-engagement-2026/ - 52M+ posts.
Prompt for Codex
# Turn a follower into a conversation without being creepy - Codex task
You are drafting first-contact direct messages for social media. Nothing has been written yet. Work only from what is below.
## You are given
- `{ABOUT_ME}` - one sentence saying who the sender is and what they do. Every message is sent in this person's name.
- `{OUTCOME}` - what a good result is: a reply, a call, or a collaboration. Message one aims only at the reply.
- `{APPROVED_TEMPLATE}` - the three-part structure already signed off: reference line, one line of specific value or observation, one question.
- `{PEOPLE_CSV}` - one row per person, columns: `name, handle, platform, signal, public_reference`. `signal` is one of: commented, saved, shared, story_reply, follow. `public_reference` is the exact public thing they published.
## Produce
Write `drafts.csv` in the working folder, one row per person, columns:
`name, handle, platform, signal, tier, char_count, draft, flag`
- `tier`: A if signal is `commented`, B if `saved` or `shared`, C if `story_reply`, D if `follow`.
- `draft`: the message, following `{APPROVED_TEMPLATE}` exactly. Under 400 characters including spaces. Three sentences maximum. Ends with one question.
- `char_count`: the real counted length of `draft`.
- `flag`: `OK`, or `NO_REFERENCE` if `public_reference` is empty or generic ("your content", "your page", "your posts"), or `TIER_D_NO_REFERENCE` if tier is D and `public_reference` is empty.
Rows flagged `NO_REFERENCE` or `TIER_D_NO_REFERENCE` get an empty `draft` field. Do not write a message for them.
Also write `do-not-message.csv` listing every flagged row with the reason.
## Rules
- Use only the text in `public_reference`. Do not search, infer, or embellish it.
- Never invent a compliment, a statistic, a job title, a company size or a problem the person has.
- No links. No pricing. No calendar or booking mention. No attachment.
- No two drafts may share the same opening sentence. Vary the reference line per row.
- Every draft must make clear it comes from `{ABOUT_ME}`.
- Reference line under 40 characters.
- British English. No em dash characters.
- If `{PEOPLE_CSV}` is empty or malformed, write nothing and say so.
## Return
Print to stdout:
1. Total rows processed.
2. Count of `OK`, `NO_REFERENCE` and `TIER_D_NO_REFERENCE` rows.
3. The longest `char_count` produced, and confirmation it is under 400.
4. Count of duplicate opening sentences found (must be 0).
5. The first three `OK` drafts in full, so they can be read and checked.
6. The full contents of `do-not-message.csv`.
Built from the best public work on this
Sources
- **coreyhaines31/marketingskills** - https://github.com/coreyhaines31/marketingskills - 46,945 stars and 7,317 forks, confirmed twice (WebFetch of api.github.com and an independent raw curl + json parse). Created 2026-01-15, pushed 2026-09-05. Its `cold-email` skill supplies the qualification-before-writing step, the personalisation requirement and the deliverability thresholds this skill borrows for DMs.
- **charlie947/social-media-skills** - https://github.com/charlie947/social-media-skills - 3,283 stars and 771 forks, confirmed twice by the same two methods. GitHub user `charlie947` resolves to Charlie Hills; the repo is the working skill set behind a system running 415k+ followers and 100m+ views a year. Source of the persistent `about-me.md` / `voice.md` context layer that every skill reads before drafting.
- **Metricool 2026 Instagram Study** - https://metricool.com/press-release-instagram-study-2026/ - 24,364,803 posts from 375,118 accounts worldwide, Jan-Feb 2025 against Jan-Feb 2026. Source of the two CTA effects used here: question CTAs raised comments 36.70%, comment-focused CTAs 202.78%.
- **Buffer State of Social Media Engagement 2026** - https://buffer.com/resources/state-of-social-media-engagement-2026/ - 52M+ posts across 10 platforms, with a reply sub-study of roughly 2M posts and 220,000+ accounts across 6 platforms. The only source found that isolates the effect of replying: +30% on LinkedIn, +42% on Threads. It is why this skill treats conversation, not broadcast, as the growth lever.
Best public prompt we found for this job
**https://github.com/coreyhaines31/marketingskills** - the `skills/cold-email/SKILL.md` file. It is the strongest publicly available prompt for first-contact outreach: it forces qualification before drafting, insists the personalisation line come from something the recipient actually published, and holds hard limits rather than adjectives.
The research summary records its core lesson as the reason it beats the noise: hard-code counts and character limits, not adjectives. Vague guidance such as "write a punchy hook" is exactly what these repos beat.
Note on numbers: several popular caption and outreach repos circulate precise-sounding figures with no traceable source. Only the Buffer and Metricool figures above are used in this skill; anything else is treated as folklore.
Want this running in your business?
I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.
Foxera