publish-sociallisted
Install: claude install-skill hungv47/meta-skills
# Publish Social — Integration-Aware Bundle Emitter
Converts a write-social artifact (+ optional media manifests) into a per-platform draft bundle + scheduler-import files. Auto-detects credentials, picks highest non-publish mode. Routing: [`routing.yaml`](routing.yaml) · agents + 4-route dispatch: [`references/agent-manifest.md`](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`](references/procedures/critical-gates.md).
1. **Auto-detect never publishes** — `export`/`draft` only; live needs `--mode=publish`.
2. **Publish opt-in and gated** — critic PASS + two-stage confirmation; `--dry-run` posts nothing.
3. **Credential safety** — values NEVER logged/written; `.forsvn/credentials/platforms.json` gitignored; dim 6 greps `_KEY`/`_TOKEN`/`_SECRET`.
4. **Char-cap** — X 280 · Threads 500 · Bluesky 300 · LinkedIn 3000 · IG 2200 · FB 63206 · YouTube 5000 · TikTok 2200 · Reddit 300+40000. One over = FAIL.
5. **Scheduler-format validation** — Typefully JSON + Buffer/Hootsuite/generic CSVs parse cleanly (columns, UTF-8, ISO-8601).
6. **Provenance** — `input_artifacts` = write-social + media manifests + `brand/BRAND.md`; `output_eval: null` until `evaluate-content`.
7. **Browser-automation confirm gate (D17)** — preview + single-confirm; declined/timeout → export. [`ref