Automated summary
Drafts or repairs the X, LinkedIn, and Bluesky social copy in a blog post's frontmatter `social:` block, looping through self-critique until the copy passes review.
Strengths
- Sorts each platform into one of three paths: draft fresh, minimum-change repair of a broken rule, or leave working copy untouched
- Traces every number, name, and attribution back to the article body instead of trusting the title, slug, or meta_desc
- Actually enforces character limits (X 255, LinkedIn 2950, Bluesky 300) by counting through Python before critique
- Capped three-round critique loop with a clean-slate sub-agent, plus a separate advisory pass that never edits kept copy
Limitations
- Relies on external reference files (writing-guide.md, critique-rubric.md, suggestions-rubric.md) that are not shipped with the skill
- Covers only X, LinkedIn, and Bluesky, and depends on Claude Code sub-agents and `.claude/commands/` paths
- Automatic file resolution via `git status` stalls whenever zero or several blog posts are modified, requiring the user to choose
Use it when a blog post is finished and you want its frontmatter social copy drafted or cleaned up fast without rewriting copy that already works.
Skip it if the critique reference files are missing from the repo, or if you need social copy for platforms beyond X, LinkedIn, and Bluesky.
Security analysis
SafeThe skill only reads a blog post, performs local git status and character counting via python3, spawns internal sub-agents for critique, and edits frontmatter in the repo. It does not execute destructive commands, exfiltrate data, or disable safety features. The use of python3 and git is for legitimate local file inspection and validation.
No concerns found
How this analysis is madeExamples
Draft the social copy for content/blog/why-we-moved-off-kubernetes/index.md — fill in the social block for X, LinkedIn and Bluesky.Write the social copy for the blog post I just changed (pick it from git status).Review the social copy in content/blog/observability-costs/index.md and repair anything that breaks the rules — don't rewrite what already reads well.user-invocable: true
description: Draft (or revise) the X / LinkedIn / Bluesky social copy in a blog post's frontmatter, looping with self-critique until it would pass review.
argument: optional file path to a blog post (e.g., content/blog/my-post/index.md). If omitted, picks the blog file currently changed in git status.
Draft social post
Read a blog post, write or revise social copy into its frontmatter social: block, and loop with self-critique until each platform passes review. Preserve existing copy that already works — only repair or draft fresh when there's a real problem.
Flow
-
Resolve the target file.
- If the user passed a path, use it.
- Otherwise: run
git status --porcelainand pick the single modifiedcontent/blog/*/index.md. If zero or more than one match, ask the user which file.
-
Read the blog post in full and any existing
social:block. The blog body is the source of truth for every specific you'll use — read it before drafting, not after. Title, URL slug,meta_desc, and tags are not authoritative; the body is. -
Per-platform: classify and act. For each of X, LinkedIn, Bluesky:
-
Empty (
""), missing key, or LLM-fill junk — draft fresh from the blog body using.claude/commands/social-media-review/references/writing-guide.md(see "Drafting from a blanksocial:block" — it includes the verify-specifics-against-body checklist). Honor platform structure: X = 2 paragraphs, LinkedIn = multiple short paragraphs, Bluesky = 2 paragraphs. Voice: if a single named author wrote a personal-experience post, name them in third person; otherwise corporate "we". -
Existing copy that breaks a hard rule (banned phrases, "I" voice, URL in body, hashtags, markdown, paragraph structure, char limits — see
.claude/commands/social-media-review/references/critique-rubric.md) — minimum-change repair. Drop the hashtag, swap the "I" to "we", trim the over-limit tail. Don't recast paragraphs or "improve" the voice. The original specifics and structure stay. -
Existing copy that passes hard rules and reads naturally — leave it. Do not rewrite for taste.
For LLM-fill recognition (staccato fragments as drama, em-dash chains, generic openers like "In today's cloud landscape…", buzzword stacks), see
.claude/commands/social-media-review/references/writing-guide.md"Spotting and replacing LLM-fill copy". Don't try to patch around LLM patterns; throw them out and draft fresh from the article.For any platform you draft fresh, verify each specific against the blog body before moving on. Every number, name, and attribution must appear in the body — not the title, slug, or
meta_desc. If a claim doesn't trace, drop it or replace it. -
-
Verify character counts before critique. Pipe each draft into
python3 -c "import sys; print(len(sys.stdin.read().rstrip('\n')))"(avoids quoting/escaping problems with apostrophes or triple quotes in copy). Body limits: X = 255, LinkedIn = 2950, Bluesky = 300. Revise any over-limit copy here. -
Critique loop. Spawn a sub-agent (Agent tool,
general-purposesubagent_type) with a clean slate. Brief: read.claude/commands/social-media-review/references/critique-rubric.md, evaluate the copy only (not the blog post), return PASS or FAIL per platform. Default verdict is PASS — only FAIL on hard-rule breaks.- All three PASS → go to step 6.
- Any FAIL → repair based on the cited reasons (minimum-change semantics from step 3), repeat from step 4.
- Cap at 3 critique rounds. If still failing, keep the most recent draft and note the open issues in the report.
-
Advisory pass — only on
keptplatforms. For each platform whose existing copy passed hard rules and you left untouched, spawn a sub-agent against.claude/commands/social-media-review/references/suggestions-rubric.mdto surface stylistic notes (weak opener, summarizes article, missing pointer, etc.). Do NOT modify the kept copy — surface the notes in step 8's report so the user can decide whether to apply them. PASS stays PASS. Skip this pass on platforms you repaired or drafted — the new copy is the actionable feedback already; layering advisory notes on top is noise. -
Write the final copy into the frontmatter. Use the Edit tool to replace (or insert) the
social:block. Use 4-space indent and|block-literal style for multi-line copy — seecontent/blog/neo-integration-catalog/index.mdfor a well-formatted example. Only touch platforms whose copy actually changed. -
Report. Show the path written to and per-platform status using paired verdict + action tokens (verdict from the critic, action you took):
PASS, kept— critic passed the original; preserved as-isFAIL, repaired (N chars changed)— critic failed the original; minimum-change fixmissing, drafted— no original (or unsalvageable LLM-fill); wrote fresh- Final character counts for each platform
- Iteration count ("converged in N rounds" or "stopped at 3, X open issue")
- For each
PASS, keptplatform with advisory notes, list them under "Suggestions for kept platforms (advisory — not applied)" so the user can decide whether to address them in a follow-up. Omit the section if all kept platforms returned "no suggestions".
Edge cases
- If the blog post has no body content yet (only frontmatter), tell the user — drafting against an empty post produces generic copy.
- If the user wants the existing copy preserved verbatim regardless of issues, they should say so in the invocation; otherwise this skill applies the classification above.
- If all three platforms classify as
kept, report that and exit without writing — no edit is needed.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/draft-social-posts-for-blog-posts-ms9wnyrw/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/draft-social-posts-for-blog-posts-ms9wnyrw' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/draft-social-posts-for-blog-posts-ms9wnyrw/download' --output '.skill-downloads/draft-social-posts-for-blog-posts-ms9wnyrw/SKILL.md.part' && mv '.skill-downloads/draft-social-posts-for-blog-posts-ms9wnyrw/SKILL.md.part' '.skill-downloads/draft-social-posts-for-blog-posts-ms9wnyrw/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.
Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/draft-social-posts-for-blog-posts-ms9wnyrw/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
Writing Fragments
Content
Mine raw writing fragments through a relentless interview, without imposing structure. Capture ideas, quotes, and leading words for later use.
UI Copywriting & Auditing
Content
Write or audit user-facing UI copy including buttons, errors, empty states, and tooltips across the monorepo, following the design system source of truth.
Music MIDI Extraction
Content
Extracts the MIDI or score from an existing music production via the CogMusic MCP tool and confirms availability.