# Social Publish Readiness Checklist

> Run a fixed pre-publish checklist for a social media post — character limit, hashtag formatting, media specs, alt text, link tracking, schedule conflicts — and report pass, fail, or could-not-determine per check. Use before publishing a social post; do not use to make the publish decision or fix anything the checks find.

- Skill: `khadir-syed/social-publish-readiness-checklist` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add khadir-syed/social-publish-readiness-checklist`
- Raw SKILL.md: https://api.skillmd.com/api/skills/khadir-syed/social-publish-readiness-checklist/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: khadir-syed (https://skillmd.com/u/khadir-syed)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/khadir-syed/social-publish-readiness-checklist

---


# Social Publish Readiness Checklist

Run a fixed set of checks against a social media post that's about to publish and report the result of each. Never report a check as passing when it could not actually be determined, and never make the publish decision on the user's behalf.

## Operating boundary

- Advisory only. Do not edit the post, fix anything the checks find, or publish/schedule it.
- Do not assume a check passes because "we always get this right." Base each result on what's actually supplied or checkable.
- When a check cannot be determined from what's available, report it as **could not determine**, never as a silent pass or a silent skip.

## The checklist

Run all six checks below, in order, against the post described or supplied (a draft file, a doc, or pasted text — state which one was used, and which platform it's for).

1. **Within the platform's character limit** — does the caption fit the stated or known limit for the target platform? If the platform or its limit isn't stated, mark **could not determine** rather than assuming one.
2. **Hashtags are formatted and relevant** — no broken hashtag syntax (spaces, punctuation inside a tag), and each hashtag relates to the post's actual content rather than an unrelated trending tag. Flag any that don't.
3. **Media meets platform specs** — if the post includes an image or video, is its format/dimensions/duration stated as compatible with the target platform? Mark **could not determine** if specs weren't supplied to check against; **N/A** if the post is text-only.
4. **Alt text or captions present on media** — every image should have descriptive alt text; every video with spoken content should have captions or a transcript noted. Mark **Fail** if missing; **N/A** if the post has no media.
5. **Links are tracked and resolve to a real destination** — any link should point somewhere specific (not a placeholder) and, if the team tracks campaign performance, carry the expected tracking parameters. Mark **could not determine** if tracking convention wasn't supplied.
6. **No scheduling conflict** — does this post's proposed time overlap with another scheduled post or fall inside a stated blackout window (e.g. a moment of company or world news where posting would look tone-deaf)? Mark **could not determine** if the posting calendar wasn't supplied.

See [references/publish-checklist-format.md](references/publish-checklist-format.md) for the report table.

## Report and stop

Produce one table, one row per check, each with a status of **Pass**, **Fail**, **Could not determine**, or **N/A**, plus the evidence behind that status.

State an overall readiness summary. Do not report "ready to publish" if any check is Fail, or if any check is "Could not determine" without explicitly calling out that gap as unresolved. Never phrase the summary as a publish decision — it is input to whoever makes that decision.

Stop after the report. Do not edit the post, fix gaps found, or publish/schedule anything — even fixes that look trivial (like a broken hashtag).

## Stopping conditions

Stop and explain the boundary when:

- the post description or file is too thin to run the checklist meaningfully;
- resolving a gap requires a decision only the post owner or brand lead can make (e.g. whether a claim needs a source or can be removed); or
- the user asks you to also decide whether to publish — that decision is theirs, not this skill's.

## Quality check

Before returning the report, confirm that:

- every row has a status and the evidence behind it;
- no check reports Pass without an actual stated or supplied basis;
- checks that could not be evaluated are labelled "Could not determine," not silently omitted; and
- the summary does not read as a publish decision, only as input to one.

