Post Writer logo

Post Writer

CommunityPopular
charlie947
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.

Overview

Publishercharlie947
Repositorysocial-media-skills
Skill namepost-writer
Stars
3.6K
Forks
836
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by charlie947 on GitHub. Read the source before you install it.

Installation

Install the Post Writer AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/charlie947/social-media-skills.git /tmp/social-media-skills
mkdir -p .claude/skills
cp -r /tmp/social-media-skills/skills/post-writer .claude/skills/post-writer
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Post Writer in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Post Writer on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Post Writer is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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):

json
[
  {
    "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:

json
[
  {
    "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.

Frequently asked questions

What does the Post Writer AI skill do?

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.

Why use Post Writer on TypingMind?

Because you install it once and use it with any model. Post Writer is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Post Writer in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/charlie947/social-media-skills/tree/main/skills/post-writer. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Post Writer?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Post Writer?

As many as you like. As long as a model supports skills, you can use Post Writer with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Post Writer AI skill free?

Yes. It is published on GitHub by charlie947 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇