Social Kit
A thin orchestrator over three sub-skills — create-x-content (X variants),
create-linkedin-content (LinkedIn variants), and graphics-studio (the graphic) —
with generate-voice-guide as a recommended one-time prerequisite. The bundled
init_run.py scaffolds the run folder and prints the orchestration plan; everything else is
delegation to the sub-skills (the agent drafts/authors).
When to use
- "Give me X + LinkedIn posts and a graphic for [brief]."
- When you want copy and a visual together, in the user's voice.
How to run
- Scaffold the run + get the plan:
python3 ${SKILL_DIR}/scripts/init_run.py --brief "Shipped a 10x faster lead scraper" \
--output ${WORKSPACE}/content
# optional: --skip-x / --skip-linkedin / --skip-graphic, --format poster, --style ...,
# --variants-x N, --variants-linkedin N
Creates content/YYYY-MM-DD-<topic-slug>/ (+ a graphic/ subfolder) and prints
{topic_slug, folder, steps, voice_guide_preflight}.
- Voice-guide pre-flight — for each non-skipped platform, ensure an X and a LinkedIn
voice guide exist; for any missing one, delegate to
generate-voice-guide, paste a path, or skip that platform. Never proceed without resolving it — generic posts are the failure mode. - Draft X variants (unless
--skip-x) viacreate-x-content, writing into the run folder. Capture the most substantive variant for the graphic brief. - Draft LinkedIn variants (unless
--skip-linkedin) viacreate-linkedin-content. - Pick the graphic format — use
--formatif given, else recommend 1–2 from the brief shape (poster / carousel / infographic / tweet / story / slides / chart) and ask. - Pick a style —
--styleif given, else the house default. - Generate the graphic via
graphics-studiofrom a distilled brief (headline + 2–4 key beats + must-appear strings, drawn from the strongest X variant), output tographic/. - Deliver a combined, cross-linked summary; post files as Agent Teams / Slack attachments.
Invoke each sub-skill's scripts by path, e.g.:
python3 ${SKILL_DIR}/../create-x-content/scripts/lint_post.py --file <variant> ...
node ${SKILL_DIR}/../graphics-studio/scripts/render.mjs --html <slide> --out <png> --format <fmt>
python3 ${SKILL_DIR}/scripts/init_run.py --help lists all flags.
Outputs
A single run folder with X variant files, LinkedIn variant files, and a graphic/ subfolder
(HTML source + PNG exports + preview), plus a summary linking drafts to the graphic.
Credentials / env
- Required: none. The agent drafts the copy and authors the graphic HTML; all sub-skill render/lint scripts are keyless — the whole kit runs key-free by default.
- Optional (all paid, all with a fallback; belong to a sub-skill's path; skip flags drop
any arm):
APIFY_API_TOKEN/PHANTOMBUSTER_API_KEY— voice-guide corpus scraping (generate-voice-guide). If set → auto-scrape; if not → paste-text fallback (the default).UNSPLASH_ACCESS_KEYand generative-art keys (LEONARDO/STABILITY/FAL) — graphic image sourcing (graphics-studio). If set → real/generated imagery; if not → keyless picsum/ASCII (the default).
Notes & edge cases
- Never proceed without resolving the voice guide for each non-skipped platform.
- Distill the graphic brief from the strongest X variant (headline + 2–4 beats + verbatim must-keep strings like tool names, commands, prices).
- Pair drafts with graphics intentionally — a long mechanism variant suits a carousel; a short hype variant suits a poster.
- First-time setup is
generate-voice-guideonce; iterate on voice before iterating on copy.