Agent skill · Check

post-check

Validate a social post draft against the target platform's real constraints and conventions before it goes out, covering LinkedIn, X, Instagram, Facebook, Th…

frontmatter · SKILL.md+
name: post-check
description: >
  Validate a social post draft against the target platform's real constraints
  and conventions before it goes out, covering LinkedIn, X, Instagram,
  Facebook, Threads, Bluesky, and Mastodon. Use when the user says "check this
  post", asks "will this work on Instagram", says "validate this draft", or
  asks "is this too long for X". It checks length against hard limits and
  visible-truncation points, link placement norms, hashtag count and position,
  media expectations including aspect ratios and alt text, first-comment
  strategy, engagement-bait patterns, formatting that renders oddly, and
  accessibility. It reads social-context.md so voice-level checks and house
  rules match the user's brand voice and platform setup. Every check returns
  pass, warn, or fix — and every fix comes with the corrected text inline,
  ready to paste.
metadata:
  version: 1.0.0
  category: Check
  topics: [checking, linkedin, x, instagram]
  examplePrompt: "Check if this draft works on LinkedIn and Instagram"

Run a draft through each target platform's real constraints and hand back a pass/warn/fix verdict per check, with the fixed text supplied inline.

Context

Read social-context.md at the project root (also check .agents/social-context.md) for brand voice, default platforms, and house style rules — hashtag policy, emoji policy, link conventions. If it's missing, offer to run the social-context skill first, but don't block — ask 2–3 quick inline questions and proceed:

  • Which platform(s) is this draft for?
  • Does the post have media, and does it have alt text?
  • Any house rules on hashtags, emoji, or links?

Workflow

  1. Establish targets. Confirm which platform(s) the draft is bound for. If one draft targets multiple platforms, evaluate it per platform separately — a draft can pass X and fail LinkedIn, and averaging verdicts helps nobody.
  2. Count honestly. Compute character count the way each platform does, not the way a text editor does:
    • X counts every URL as 23 characters and most emoji as 2.
    • Mastodon counts all links as 23 characters.
    • The others count raw length. Report the count against the hard limit, then separately flag the visible-truncation point — LinkedIn ~210 chars / 3 lines before "…see more", Facebook ~250, Instagram ~125. A post can be legal and still bury its hook below the fold.
  3. Check the hook. Does the first visible line carry a complete, compelling idea before every truncation point among the targets? A hook that reads "So I've been thinking about someth…" is a fix, and the fix is a rewritten opening, supplied inline.
  4. Check link placement. Norms differ sharply by platform:
    • LinkedIn: links in the body are conventionally moved to the first comment or at least below the fold — reach folklore aside, a naked URL mid-hook reads badly. warn, and show both placements.
    • X: link at the end, never two links in one post.
    • Instagram: body links are dead text — fix to "link in bio" phrasing or a first-comment note.
    • Facebook: inline is fine; a clean link-card preview beats a raw URL.
    • Bluesky / Mastodon: inline links are native and fine.
  5. Check hashtags. Count, placement, and casing. Enforce CamelCase for multi-word tags — it's both legibility and screenreader correctness. Per platform: Instagram 3–5 relevant tags at the end or in the first comment; LinkedIn ≤ 3 at the end; X 0–1 inline; Threads at most one topic tag; Bluesky tags are weak signals — warn if the draft leans on them; Mastodon tags are discovery-critical — warn if there are none.
  6. Check media expectations. If media is described or attached:
    • aspect ratio suits the placement (see the table),
    • alt text exists and actually describes the image — "image" or a keyword-stuffed sentence is a fix,
    • text-heavy images have their text mirrored in the post body or alt text, or screenreader users get nothing.
  7. Check for engagement bait. "Comment YES if…", "tag someone who…", vote-with-reactions, follow-to-win phrasing. Platforms downrank these and audiences smell them. warn, with a rewritten ask that requests genuine input instead of a reflex.
  8. Check formatting integrity. The paste-from-a-word-processor tax: smart quotes and apostrophes, em dashes that render as garbage on some clients, non-breaking spaces, Unicode "bold/italic" letters (screenreaders spell them out letter by letter — always a fix), excessive blank lines that collapse differently per platform, trailing whitespace, markdown syntax on platforms that render it literally.
  9. Check accessibility. Alt text for every image; emoji not used as bullet points (each is read aloud — "rocket rocket rocket"); emoji count reasonable and not mid-sentence where they break flow; no unbroken wall of text; CamelCase hashtags.
  10. Check first-comment strategy. If the draft says "link in comments" or the link-placement fix moved something there, verify the first comment is actually drafted. If it isn't, draft it — one line of context plus the link.
  11. Assemble the verdict. One row per check per platform: pass / warn / fix, a one-clause reason, and for every fix the corrected text inline. If anything was fix, finish with a fully corrected version of the whole post for that platform.

Quality bar

The constraint table — check against these, not a vague memory of "roughly 280":

Platform Char limit Link norm Hashtag norm Media norm
LinkedIn 3,000 (truncates ~210 / 3 lines) First comment or below the fold ≤ 3, end, CamelCase 1.91:1–1:1 image; document posts 1:1.294; alt ≤ 300 chars
X 280 (URLs = 23, emoji = 2) End of post, max 1 0–1, inline 16:9 or 1:1; up to 4 images; alt ≤ 1,000 chars
Instagram 2,200 caption (truncates ~125) No body links — bio or first comment 3–5, end or first comment 1:1, 4:5, or 1.91:1; Reels 9:16; alt text supported — use it
Facebook 63,206 (truncates ~250) Inline OK; link card preferred 0–2 1.91:1 link card; 1:1 / 4:5 feed image
Threads 500 Inline OK, 1 per post ≤ 1 topic tag 1:1 or 4:5; up to 20 media items
Bluesky 300 Inline native Weak signal; ≤ 2 1:1 / 4:3; up to 4 images; alt text strongly normed
Mastodon 500 default (URLs = 23) Inline native 2–4, discovery-critical, CamelCase Alt text strongly normed; flag its absence

Verdict discipline:

Verdict Meaning What it must include
pass Meets the constraint Nothing beyond the check name
warn Will publish, but will underperform or annoy One-clause reason + suggested improvement
fix Don't post as-is The corrected text inline — a fix without it is an unfinished check

Run every check for every target platform; skipping a check silently counts as a miss, so if a check doesn't apply (no media, no links), say n/a rather than omitting the row.

Deliverable

Per target platform: a verdict table (check | verdict | note), each fix row followed by the corrected text inline, and — if anything was fix — a complete corrected draft for that platform, plus the drafted first comment if the strategy calls for one. The user copies the corrected draft and posts it wherever and whenever they choose — hand it back and stop.

Related skills