Post writer

Write LinkedIn posts that match the user's voice system (about-me.md and voice.md).

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/post-writer, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit charlie947/social-media-skills/skills/post-writer#main ~/.claude/skills/post-writer

For one project only, change the path to .claude/skills/post-writer. This skill also uses about-me.md, voice.md, newsletter-voice.md — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
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.

Source of Post writer

Show the full text141 lines
namedescription
post-writer> Write LinkedIn posts that match the user's voice system (about-me.md and voice.md). Use this skill whenever the user says "write a post", "draft a post", "LinkedIn post", "post about [topic]", "content idea", or wants help writing any LinkedIn content. Also trigger when the user pastes a context dump (notes, transcripts, bullet points) and wants it turned into a post. Always references the voice files in the project before writing. Always outputs the final post in a code block.

Post Writer

Codex and Claude runtime

  • Use this skill in Codex or Claude with the tools actually available in the current task. AskUserQuestion examples describe the questions, not a required API: use an available question tool within its limits, or ask in chat. Reuse answers and source material already supplied.
  • Work in the user-selected project. Read its about-me.md, voice.md and relevant brand files before personalised work. Confirm the intended author if files conflict or contain starter defaults. Ask for missing facts or run voice-builder; never inherit the maintainer's identity, accounts or private files.
  • Resolve bundled references/ relative to this skill folder. For an explicitly requested profile refresh, read and update the canonical about-me.md, voice.md or newsletter-voice.md in place, preserving unrelated user facts and rules. Consumers must reread those canonical files. Use a new filename only for new deliverables that would collide with unrelated existing files. Installation alone never starts an interview or writes files. Do not write persistent learnings unless requested.
  • Use supplied evidence first. Verify external claims through available search/source tools when needed. If a source or integration is unavailable, name the missing capability and offer supplied text/export input. Never invent facts, first-person experience, metrics or a successful tool run.
  • Connect only services needed for the chosen route through the user's existing account. Never print credentials or overwrite connections. Drafting, saving and reviewing do not authorise publishing, sending messages or changing accounts.

CRITICAL: Auto-start on load

The moment this skill triggers, go straight to Step 1. Do not summarise the skill. Do not explain what it does. Do not list the files it references. Jump to input gathering immediately.

Step 1. Gather inputs

Check the project for about-me.md and voice.md. Read both. If either is missing, tell the user to run the Voice Builder skill first ("say build my voice"), then stop.

If both files exist, use these questions (adapt the tool schema as needed):

[
  {
    "question": "What topic do you want to post about?",
    "header": "Topic",
    "multiSelect": false,
    "options": [
      {"label": "Paste a context dump", "description": "I have notes, transcripts, or raw ideas to turn into a post"},
      {"label": "I have a topic in mind", "description": "I will type the topic after this"},
      {"label": "Suggest topics for me", "description": "Based on my voice system, suggest 5 topics I should post about"}
    ]
  },
  {
    "question": "Do you have any reference posts you want me to use as structural inspiration?",
    "header": "References",
    "multiSelect": false,
    "options": [
      {"label": "No references", "description": "Write from scratch using my voice files only"},
      {"label": "I will paste examples", "description": "I have posts from other creators I want you to study first"},
      {"label": "Use my training posts", "description": "Reference the posts I used in the Voice Builder"}
    ]
  }
]

Based on the answers:

  • "Paste a context dump": wait for the user to paste, extract the core idea, then proceed to Step 2
  • "I have a topic in mind": wait for the user to type it, then proceed to Step 2
  • "Suggest topics for me": read about-me.md topic pillars and voice.md, suggest 5 specific topics with a one-line angle for each, then use AskUserQuestion to let them pick one
  • "I will paste examples": wait for reference posts, note the structural patterns, then proceed
  • "Use my training posts": read the intended author’s confirmed training posts, not unrelated drafts or another client’s files

Step 2. Research and plan

First read the supplied evidence and requested reference structure. If these support the task, use them without adding unnecessary external research. Verify additional claims when needed; unavailable sources leave those claims pending. Look for:

  • Data points or statistics that support the angle
  • Contrarian takes or surprising facts
  • Real examples or case studies
  • Common misconceptions to challenge

Then present a post plan. Call AskUserQuestion:

[
  {
    "question": "Which angle works best for this post?",
    "header": "Angle",
    "multiSelect": false,
    "options": [
      {"label": "[Angle 1 name]", "description": "[One sentence describing the angle and hook]"},
      {"label": "[Angle 2 name]", "description": "[One sentence describing the angle and hook]"},
      {"label": "[Angle 3 name]", "description": "[One sentence describing the angle and hook]"}
    ]
  },
  {
    "question": "Which framework do you want?",
    "header": "Framework",
    "multiSelect": false,
    "options": [
      {"label": "PAS", "description": "Problem, Agitate, Solution"},
      {"label": "How-to list", "description": "Numbered steps or tips"},
      {"label": "Story to lesson", "description": "Personal story with a takeaway"},
      {"label": "Contrarian take", "description": "Challenge a common belief"}
    ]
  }
]

Fill in the actual angle options based on the topic research. Do not use placeholder text for the angle descriptions.

Step 3. Write the draft

Write the post following these rules:

  • Read voice.md for tone, rhythm, hook style, CTA style, and the absence patterns section (what the voice never does)
  • Read about-me.md for audience and topic context
  • Match the sentence length and paragraph rhythm from voice.md
  • Avoid every banned word, structure, and pattern listed in voice.md's absence section
  • Use the hook pattern that fits the chosen angle
  • End with the CTA style from voice.md

Output the post inside a plain code block:

[The full post goes here with all line breaks and formatting exactly as it should appear on LinkedIn]

After the code block, add 2 to 3 sentences on why you chose this hook and structure, referencing specific patterns from voice.md.

Before presenting the draft, review it in the running assistant against the supplied facts, voice and requested format. For a roster or step caption, map every required item to its matching caption passage and check ordering, duplicates and omissions. Do not replace requested structure with a generic post framework. Keep source notes separate from paste-ready copy. Claude is not a required reviewer in Codex.

Step 4. Iterate

Ask the user:

How does this feel? Tell me what to change, or say "ship it" and I will save the final version.

If the user gives feedback, revise and output a new code block. Maximum 3 revision rounds.

If the user says "ship it" or equivalent, save the final post as a markdown file in the project.

Then say:

Post saved. Say "design a graphic" to create a visual, or "score my post" to get feedback before publishing.

Rules

  • Always read about-me.md and voice.md before writing.
  • Always output posts in a plain code block.
  • Never use em dashes in any post.
  • British English unless voice.md says otherwise.
  • Do not add hashtags unless voice.md explicitly uses them.
  • Do not add engagement bait CTAs unless they appear in voice.md.
  • Keep posts between 150 and 300 words unless the user requests otherwise.
  • Plan before writing. Never skip Step 2.
1---
2name: post-writer
3description: >
4 Write LinkedIn posts that match the user's voice system (about-me.md and voice.md). Use this skill whenever the user says "write a post", "draft a post", "LinkedIn post", "post about [topic]", "content idea", or wants help writing any LinkedIn content. Also trigger when the user pastes a context dump (notes, transcripts, bullet points) and wants it turned into a post. Always references the voice files in the project before writing. Always outputs the final post in a code block.
5---
6 
7# Post Writer
8 
9## Codex and Claude runtime
10 
11- Use this skill in Codex or Claude with the tools actually available in the current task. `AskUserQuestion` examples describe the questions, not a required API: use an available question tool within its limits, or ask in chat. Reuse answers and source material already supplied.
12- Work in the user-selected project. Read its `about-me.md`, `voice.md` and relevant brand files before personalised work. Confirm the intended author if files conflict or contain starter defaults. Ask for missing facts or run `voice-builder`; never inherit the maintainer's identity, accounts or private files.
13- Resolve bundled `references/` relative to this skill folder. For an explicitly requested profile refresh, read and update the canonical `about-me.md`, `voice.md` or `newsletter-voice.md` in place, preserving unrelated user facts and rules. Consumers must reread those canonical files. Use a new filename only for new deliverables that would collide with unrelated existing files. Installation alone never starts an interview or writes files. Do not write persistent learnings unless requested.
14- Use supplied evidence first. Verify external claims through available search/source tools when needed. If a source or integration is unavailable, name the missing capability and offer supplied text/export input. Never invent facts, first-person experience, metrics or a successful tool run.
15- Connect only services needed for the chosen route through the user's existing account. Never print credentials or overwrite connections. Drafting, saving and reviewing do not authorise publishing, sending messages or changing accounts.
16 
17## CRITICAL: Auto-start on load
18 
19The moment this skill triggers, go straight to Step 1. Do not summarise the skill. Do not explain what it does. Do not list the files it references. Jump to input gathering immediately.
20 
21## Step 1. Gather inputs
22 
23Check the project for about-me.md and voice.md. Read both. If either is missing, tell the user to run the Voice Builder skill first ("say build my voice"), then stop.
24 
25If both files exist, use these questions (adapt the tool schema as needed):
26 
27```json
28[
29 {
30 "question": "What topic do you want to post about?",
31 "header": "Topic",
32 "multiSelect": false,
33 "options": [
34 {"label": "Paste a context dump", "description": "I have notes, transcripts, or raw ideas to turn into a post"},
35 {"label": "I have a topic in mind", "description": "I will type the topic after this"},
36 {"label": "Suggest topics for me", "description": "Based on my voice system, suggest 5 topics I should post about"}
37 ]
38 },
39 {
40 "question": "Do you have any reference posts you want me to use as structural inspiration?",
41 "header": "References",
42 "multiSelect": false,
43 "options": [
44 {"label": "No references", "description": "Write from scratch using my voice files only"},
45 {"label": "I will paste examples", "description": "I have posts from other creators I want you to study first"},
46 {"label": "Use my training posts", "description": "Reference the posts I used in the Voice Builder"}
47 ]
48 }
49]
50```
51 
52Based on the answers:
53- "Paste a context dump": wait for the user to paste, extract the core idea, then proceed to Step 2
54- "I have a topic in mind": wait for the user to type it, then proceed to Step 2
55- "Suggest topics for me": read about-me.md topic pillars and voice.md, suggest 5 specific topics with a one-line angle for each, then use AskUserQuestion to let them pick one
56- "I will paste examples": wait for reference posts, note the structural patterns, then proceed
57- "Use my training posts": read the intended author’s confirmed training posts, not unrelated drafts or another client’s files
58 
59## Step 2. Research and plan
60 
61First read the supplied evidence and requested reference structure. If these support the task, use them without adding unnecessary external research. Verify additional claims when needed; unavailable sources leave those claims pending. Look for:
62- Data points or statistics that support the angle
63- Contrarian takes or surprising facts
64- Real examples or case studies
65- Common misconceptions to challenge
66 
67Then present a post plan. Call AskUserQuestion:
68 
69```json
70[
71 {
72 "question": "Which angle works best for this post?",
73 "header": "Angle",
74 "multiSelect": false,
75 "options": [
76 {"label": "[Angle 1 name]", "description": "[One sentence describing the angle and hook]"},
77 {"label": "[Angle 2 name]", "description": "[One sentence describing the angle and hook]"},
78 {"label": "[Angle 3 name]", "description": "[One sentence describing the angle and hook]"}
79 ]
80 },
81 {
82 "question": "Which framework do you want?",
83 "header": "Framework",
84 "multiSelect": false,
85 "options": [
86 {"label": "PAS", "description": "Problem, Agitate, Solution"},
87 {"label": "How-to list", "description": "Numbered steps or tips"},
88 {"label": "Story to lesson", "description": "Personal story with a takeaway"},
89 {"label": "Contrarian take", "description": "Challenge a common belief"}
90 ]
91 }
92]
93```
94 
95Fill in the actual angle options based on the topic research. Do not use placeholder text for the angle descriptions.
96 
97## Step 3. Write the draft
98 
99Write the post following these rules:
100- Read voice.md for tone, rhythm, hook style, CTA style, and the absence patterns section (what the voice never does)
101- Read about-me.md for audience and topic context
102- Match the sentence length and paragraph rhythm from voice.md
103- Avoid every banned word, structure, and pattern listed in voice.md's absence section
104- Use the hook pattern that fits the chosen angle
105- End with the CTA style from voice.md
106 
107Output the post inside a plain code block:
108 
109```
110[The full post goes here with all line breaks and formatting exactly as it should appear on LinkedIn]
111```
112 
113After the code block, add 2 to 3 sentences on why you chose this hook and structure, referencing specific patterns from voice.md.
114 
115Before presenting the draft, review it in the running assistant against the supplied facts, voice and requested format. For a roster or step caption, map every required item to its matching caption passage and check ordering, duplicates and omissions. Do not replace requested structure with a generic post framework. Keep source notes separate from paste-ready copy. Claude is not a required reviewer in Codex.
116 
117## Step 4. Iterate
118 
119Ask the user:
120 
121> How does this feel? Tell me what to change, or say "ship it" and I will save the final version.
122 
123If the user gives feedback, revise and output a new code block. Maximum 3 revision rounds.
124 
125If the user says "ship it" or equivalent, save the final post as a markdown file in the project.
126 
127Then say:
128 
129> Post saved. Say "design a graphic" to create a visual, or "score my post" to get feedback before publishing.
130 
131## Rules
132 
133- Always read about-me.md and voice.md before writing.
134- Always output posts in a plain code block.
135- Never use em dashes in any post.
136- British English unless voice.md says otherwise.
137- Do not add hashtags unless voice.md explicitly uses them.
138- Do not add engagement bait CTAs unless they appear in voice.md.
139- Keep posts between 150 and 300 words unless the user requests otherwise.
140- Plan before writing. Never skip Step 2.
141 

Discussion

Alternatives

Also in Posting & schedulingSee all 364 in Marketing →
Linkedin comment drafterDraft a LinkedIn comment on someone else's post from its URL, or reshare (repost) it to your feed with optional commentary. Use when the user pastes a post URL and asks to comment, engage, be first commenter, or repost with their thoughts. Produces 1-3 variants in the user's voice, picks a reaction, and publishes via Publora on approval. Not for replying to existing comments (use linkedin-reply-handler).Marketing · MITLinkedin content plannerGenerate a 7-day LinkedIn content plan from a theme, audience, and pillars. Produces per-day post pillar, format, hook type, CTA, posting time, daily comment targets, and a weekly inbound-readiness check. Use when the user wants to plan a week or month of content, not draft a single post (use linkedin-post-writer).Marketing · MITLinkedin employee advocacyStand up and run a LinkedIn employee advocacy program for a marketing or sales team. Covers 14-day launch playbook, brand-guideline governance, per-post time budget, cadence benchmarks, and team ROI (reach, engagement, pipeline). Triggers on "employee advocacy", "get the team posting", "scale LinkedIn across team", "advocacy ROI". Not for planning one person's own calendar (use linkedin-content-planner).Marketing · MITInstagram Audience InsightsRead your Instagram niche and profile from real data via Apify, no login. Scan a hashtag for the posts traveling now (likes, comments, owner) to see the format and hook that works. Pull profile stats for any handle, yours or a competitor's: followers, posts, bio, category. Instagram hides who liked or commented on other accounts, so this is discovery plus profiles, not engagers. Triggers on "what works in my niche", "scan the hashtag", "competitor stats". Not for writing captions (use ig-caption-writer).Marketing · MIT