publish-social
Installation
SKILL.md
Publish Social — Integration-Aware Bundle Emitter
Converts a write-social artifact into a per-platform draft bundle + scheduler-import files. Auto-detects credentials, picks highest non-publish mode. Routing: routing.yaml · agents + 4-route dispatch: references/agent-manifest.md.
Core question: Can the operator paste one file into their scheduler (or find X drafts in Typefully) without formatting another line?
Critical Gates — load first
Non-negotiable. Full: references/procedures/critical-gates.md.
- Auto-detect never publishes —
export/draftonly; live needs--mode=publish. - Publish opt-in and gated — critic PASS + two-stage confirmation;
--dry-runposts nothing. - Credential safety — values NEVER logged/written;
.forsvn/credentials/platforms.jsongitignored; dim 6 greps_KEY/_TOKEN/_SECRET. - Char-cap — X 280 · Threads 500 · Bluesky 300 · LinkedIn 3000 · IG 2200 · FB 63206 · YouTube 5000 · TikTok 2200 · Reddit 300+40000. One over = FAIL.
- Scheduler-format validation — Typefully JSON + Buffer/Hootsuite/generic CSVs parse cleanly (columns, UTF-8, ISO-8601).
- Provenance —
input_artifacts= write-social + media manifests +brand/BRAND.md;output_eval: nulluntilevaluate-content. - Browser-automation confirm gate (D17) — preview + single-confirm; declined/timeout → export.
references/confirmation-gate.md. - Two-stage gate for
--mode=publish(D18) — dims 1-7 PASS, Stage 1 body review + Stage 2 typedPUBLISH. Abort → export.references/publish-confirmation-gate.md.