New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Turn a topic into a ready-to-publish LinkedIn post using PAS

Post formatter

by charlie947 · MIT license · ★ 3,652 on GitHub · updated Sep 15

Post formatter cover

Turn a topic into a ready-to-publish LinkedIn post using PAS, AIDA, BAB, STAR, or SLAY frameworks. Up to 20 nonblank lines, mobile-formatted with blank lines between sentences.

---
name: post-formatter
description: >
  Turn a topic into a ready-to-publish LinkedIn post using PAS, AIDA, BAB, STAR, or SLAY frameworks. Up to 20 nonblank lines, mobile-formatted with blank lines between sentences. Use this skill whenever the user says "format this as a post", "turn this into a LinkedIn post", "write it as PAS" or any named framework, or wants a properly structured post from a topic. Different from post-writer: post-formatter applies a strict framework. post-writer drafts in the user's voice without framework constraints.
---

# Post Formatter

## 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

Overview

When this skill triggers, go straight to Step 1. Do not summarise. Start input gathering immediately.

Manual install (npx, ZIP)
Claude Codenpx skills add charlie947/social-media-skills --skill post-formatter -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/charlie947/social-media-skills/tar.gz/8cefb5b6d037 \ | tar -xz -C ~/.claude/skills --strip-components=2 social-media-skills-8cefb5b6d037/skills/post-formatter
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/f3b673d4cbba02eb5b17/post-formatter.zip" -OutFile "$env:TEMP\post-formatter.zip"; Expand-Archive "$env:TEMP\post-formatter.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md5.6 KB
Read the files here
charlie947/8cefb5b1 file
SKILL.md
Show the full text107 lines

Post Formatter

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

When this skill triggers, go straight to Step 1. Do not summarise. Start input gathering immediately.

Step 1. Gather inputs

Call AskUserQuestion:

[
  {
    "question": "What topic do you want to post about?",
    "header": "Topic",
    "multiSelect": false,
    "options": [
      {"label": "I will type the topic", "description": "Single sentence describing the subject"},
      {"label": "Paste a context dump", "description": "Notes, stats, transcripts to turn into a post"}
    ]
  },
  {
    "question": "Which framework?",
    "header": "Framework",
    "multiSelect": false,
    "options": [
      {"label": "PAS", "description": "Problem, Agitation, Solution"},
      {"label": "AIDA", "description": "Attention, Interest, Desire, Action"},
      {"label": "BAB", "description": "Before, After, Bridge"},
      {"label": "STAR", "description": "Situation, Task, Action, Result"},
      {"label": "SLAY", "description": "Story, Lesson, Actionable advice, You"},
      {"label": "Pick for me", "description": "Recommend the best framework based on the topic"}
    ]
  }
]

Ask one follow-up:

Anything else I should know? Facts, stats, tone notes, or who this is for.

Wait for response.

Step 2. Write the post

Apply these global rules to every output:

  • Maximum 20 nonblank lines. Target 150 to 200 words where the line limits allow; do not pad to a word minimum. User-supplied copy and required facts take precedence over the target.
  • Blank line after every line
  • Most lines: one sentence, 55 characters or fewer
  • Up to 4 lines may be mini-paragraphs (2 to 3 sentences, 110 characters or fewer)
  • Grade 6 words. Zero adverbs, zero jargon, zero fluff
  • No em dashes
  • No questions unless the hook itself is a question
  • No emojis except checkmarks for numbered lists (1. 2. 3.) and the recycle symbol in the CTA
  • Rule of Three: use at most two trios per post
  • Vary sentence starts. Do not over-use "I"

Step 3. Structure

  • Line 1 (Hook): Plain text for pasting into LinkedIn. 50 characters or fewer.
  • Line 2 (Twist / Contrast): 50 characters or fewer. Opposes or surprises the hook.
  • Lines 3 to 18 (Core): The chosen framework, split across 3 to 5 lines per stage. Keep the actual number and order of required steps or items; do not force a trio. Use arrows to show flow where useful.

Framework maps:

  • PAS: Problem -> Agitation -> Solution

  • AIDA: Attention -> Interest -> Desire -> Action

  • BAB: Before -> After -> Bridge

  • STAR: Situation -> Task -> Action -> Result

  • SLAY: Story -> Lesson -> Actionable advice -> You

  • Final 1 to 2 lines (Wrap and CTA): close the lesson within the 20 nonblank line total. Use the author’s closing style. A repost CTA is optional when appropriate.

Step 4. Output

Output the finished post inside a code block. Keep any next-step question outside the paste-ready copy.

Step 5. Offer the next move

After the post, ask:

Want a matching graphic (graphic-designer skill) or want me to score it against your post history (post-scorer skill)?

Rules

  • The code block contains only the finished post.
  • Enforce line length, word count, and lines count limits. Count them.
  • Never use em dashes.
  • British English unless voice.md specifies otherwise.
  • If the user has voice.md in the project, tune tone and rhythm to match it.
  • Preserve required item coverage. Count nonblank lines and characters in the exact final copy.
1---
2name: post-formatter
3description: >
4 Turn a topic into a ready-to-publish LinkedIn post using PAS, AIDA, BAB, STAR, or SLAY frameworks. Up to 20 nonblank lines, mobile-formatted with blank lines between sentences. Use this skill whenever the user says "format this as a post", "turn this into a LinkedIn post", "write it as PAS" or any named framework, or wants a properly structured post from a topic. Different from post-writer: post-formatter applies a strict framework. post-writer drafts in the user's voice without framework constraints.
5---
6 
7# Post Formatter
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 
19When this skill triggers, go straight to Step 1. Do not summarise. Start input gathering immediately.
20 
21## Step 1. Gather inputs
22 
23Call AskUserQuestion:
24 
25```json
26[
27 {
28 "question": "What topic do you want to post about?",
29 "header": "Topic",
30 "multiSelect": false,
31 "options": [
32 {"label": "I will type the topic", "description": "Single sentence describing the subject"},
33 {"label": "Paste a context dump", "description": "Notes, stats, transcripts to turn into a post"}
34 ]
35 },
36 {
37 "question": "Which framework?",
38 "header": "Framework",
39 "multiSelect": false,
40 "options": [
41 {"label": "PAS", "description": "Problem, Agitation, Solution"},
42 {"label": "AIDA", "description": "Attention, Interest, Desire, Action"},
43 {"label": "BAB", "description": "Before, After, Bridge"},
44 {"label": "STAR", "description": "Situation, Task, Action, Result"},
45 {"label": "SLAY", "description": "Story, Lesson, Actionable advice, You"},
46 {"label": "Pick for me", "description": "Recommend the best framework based on the topic"}
47 ]
48 }
49]
50```
51 
52Ask one follow-up:
53 
54> Anything else I should know? Facts, stats, tone notes, or who this is for.
55 
56Wait for response.
57 
58## Step 2. Write the post
59 
60Apply these global rules to every output:
61 
62- Maximum 20 nonblank lines. Target 150 to 200 words where the line limits allow; do not pad to a word minimum. User-supplied copy and required facts take precedence over the target.
63- Blank line after every line
64- Most lines: one sentence, 55 characters or fewer
65- Up to 4 lines may be mini-paragraphs (2 to 3 sentences, 110 characters or fewer)
66- Grade 6 words. Zero adverbs, zero jargon, zero fluff
67- No em dashes
68- No questions unless the hook itself is a question
69- No emojis except checkmarks for numbered lists (1. 2. 3.) and the recycle symbol in the CTA
70- Rule of Three: use at most two trios per post
71- Vary sentence starts. Do not over-use "I"
72 
73## Step 3. Structure
74 
75- **Line 1 (Hook)**: Plain text for pasting into LinkedIn. 50 characters or fewer.
76- **Line 2 (Twist / Contrast)**: 50 characters or fewer. Opposes or surprises the hook.
77- **Lines 3 to 18 (Core)**: The chosen framework, split across 3 to 5 lines per stage. Keep the actual number and order of required steps or items; do not force a trio. Use arrows to show flow where useful.
78 
79Framework maps:
80 
81- **PAS**: Problem -> Agitation -> Solution
82- **AIDA**: Attention -> Interest -> Desire -> Action
83- **BAB**: Before -> After -> Bridge
84- **STAR**: Situation -> Task -> Action -> Result
85- **SLAY**: Story -> Lesson -> Actionable advice -> You
86 
87- **Final 1 to 2 lines (Wrap and CTA)**: close the lesson within the 20 nonblank line total. Use the author’s closing style. A repost CTA is optional when appropriate.
88 
89## Step 4. Output
90 
91Output the finished post inside a code block. Keep any next-step question outside the paste-ready copy.
92 
93## Step 5. Offer the next move
94 
95After the post, ask:
96 
97> Want a matching graphic (graphic-designer skill) or want me to score it against your post history (post-scorer skill)?
98 
99## Rules
100 
101- The code block contains only the finished post.
102- Enforce line length, word count, and lines count limits. Count them.
103- Never use em dashes.
104- British English unless voice.md specifies otherwise.
105- If the user has voice.md in the project, tune tone and rhythm to match it.
106- Preserve required item coverage. Count nonblank lines and characters in the exact final copy.
107 
View all files on GitHub →

Details

Updated
Sep 15, 2026
License
MIT
Stars on the repo
★ 3,652
Checked
Source
charlie947/social-media-skills ↗
Creator
charlie947 · 17 listings
View creator

Similar skills

See all →
MCP3-5 days | Agents: 6 | Gate Keepers: DevOps Automator +⚙️ Phase 2 Playbook — Foundation & Scaffoldingmsitarzewski/agency-agents · by msitarzewski> Duration: 3-5 days | Agents: 6 | Gate Keepers: DevOps Automator + Evidence Collector★ 154k GitHub starsMCPNEXUS transforms The Agency's independent AI specialists🌐 NEXUS — Network of EXperts, Unified in Strategymsitarzewski/agency-agents · by msitarzewski> NEXUS transforms The Agency's independent AI specialists into a synchronized intelligence network. This is not a prompt collection — it…★ 154k GitHub starsSkillGenerate an Ansoff Matrix analysis mapping growth strategiesphuryn/pm-skills · by phurynGenerate an Ansoff Matrix analysis mapping growth strategies across market penetration, market development, product development, and diversification. Use when considering growth options, planning market expansion, or evaluating strategic growth paths.★ 26.6k GitHub starsSkillSurvey any codebase as a senior advisorImproveshadcn/improve · by shadcnSurvey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute. Strictly read-only on source code — never implements, fixes, or refactors anything itself. Use when asked to audit a codebase, find improvement opportunities (bugs, security, performance, test coverage, tech debt, migrations, DX), suggest features or where to take the project next (roadmap, product direction), or generate handoff plans for another agent to implement.★ 9.2k GitHub starsSkillTranslate skills from one industry to anotherCareer changer translatorParamchoudhary/ResumeSkills · by ParamchoudharyTranslate skills from one industry to another, identify transferable skills★ 2.4k GitHub starsSkillA collection of 37 battle-tested marketing skillsOpenClaw Marketing SkillsLeoYeAI/openclaw-marketing-skills · by LeoYeAIA collection of 37 battle-tested marketing skills for OpenClaw agents. Use when you want to install or reference any marketing skill including: CRO (page-cro, signup-flow-cro, onboarding-cro, form-cro, popup-cro, paywall-upgrade-cro), copywriting, copy-editing, cold-email, email-sequence, social-content, seo-audit, ai-seo, programmatic-seo, site-architecture, schema-markup, content-strategy, paid-ads, ad-creative, ab-test-setup, analytics-tracking, referral-program, free-tool-strategy, churn-prevention, revops, sales-enablement, launch-strategy, pricing-strategy, competitor-alternatives, marketing-ideas, marketing-psychology, lead-magnets, product-marketing-context, and data connectors (google-ads-connect, search-console-connect, meta-ads-connect, x-twitter-connect). Start with product-marketing-context to set up your product context document, then use any other skill naturally. Powered by MyClaw.ai.★ 1k GitHub stars

More from charlie947

SkillTurn a LinkedIn Analytics exportAnalytics dashboardcharlie947/social-media-skills · by charlie947Turn a LinkedIn Analytics export into an interactive dark-themed React dashboard plus a written strategic analysis with 5 data-backed content recommendations. Reads every sheet in the export, builds charts for engagement trend, follower growth, post performance scatter, day-of-week heatmap, and audience breakdown. Use this skill whenever the user says "analyse my linkedin", "linkedin analytics", "build my dashboard", "review my performance", or uploads a LinkedIn Analytics export file. Requires the user's LinkedIn Analytics export (xlsx) as input.★ 3.7k GitHub starsSkillGenerate 24 to 40 LinkedIn post ideas in a single tableContent matrixcharlie947/social-media-skills · by charlie947Generate 24 to 40 LinkedIn post ideas in a single table by pairing the user's content pillars with 8 proven content formats. Based on the Justin Welsh content matrix. Use this skill whenever the user says "give me post ideas", "content matrix", "what should I post about", "generate post ideas", "content ideation", or "map out my content for the month". Pulls from about-me.md and voice.md if they exist, otherwise asks for pillars and context.★ 3.7k GitHub starsSkillGenerate a branded slide-by-slide LinkedIn carouselGemini carouselcharlie947/social-media-skills · by charlie947Generate a branded slide-by-slide LinkedIn carousel using Gemini. Takes source content, builds a design brief, waits for approval, then outputs per-slide image generation prompts. 1080x1350 vertical format. Use this skill whenever the user says "carousel", "build a carousel", "turn this into a carousel", "gemini carousel", or wants multi-slide LinkedIn content. Always includes an approval gate between brief and image generation.★ 3.7k GitHub starsSkillGenerate a hand-drawn whiteboard infographic promptGemini infographiccharlie947/social-media-skills · by charlie947Generate a hand-drawn whiteboard infographic prompt. Takes source content (a post, newsletter, blog, research note) and returns a complete Gemini image generation prompt with a structured brief. Use this skill whenever the user says "whiteboard infographic", "gemini infographic", "hand-drawn graphic", "turn this into a whiteboard", or wants an AI-generated infographic for a post.★ 3.7k GitHub starsSkillCreate LinkedIn post graphicsGraphic designercharlie947/social-media-skills · by charlie947Create LinkedIn post graphics. Decides between an HTML/CSS structured graphic or an AI-generated infographic based on the post content. Use this skill whenever the user says "design a graphic", "create a visual", "make an image", "graphic for my post", "LinkedIn image", or wants any visual content to pair with a LinkedIn post. Also trigger when the user finishes writing a post and wants a matching graphic.★ 3.7k GitHub starsSkillGenerate 6 clickbait-style LinkedIn hook variations for anyHook generatorcharlie947/social-media-skills · by charlie947Generate 6 clickbait-style LinkedIn hook variations for any topic. Two-line hooks built on the formula: a 40-char opening line, a 40-char bold contrast line. Uses supplied numbers and genuine first-person experience when available. Use this skill whenever the user says "write me hooks", "hook ideas", "generate hooks", "I need a hook for a post about...", or pastes a topic and asks for openers. Fast output, no preamble.★ 3.7k GitHub stars