socials — decide → optimize → draft → post (the human posts)
Authored 2026-07-11 from a four-source research pass: the longform-factory skill
(VideoCreator2, its stage architecture and export format), a live review of real
LinkedIn posts, and two web sweeps (LinkedIn algorithm, GitHub discoverability) —
raw (2026-07). Platform mechanics rot fast: each platform reference separates
evergreen mechanism facts from dated snapshots. Re-verify anything dated older
than ~6 months before a high-stakes post.
What the user gates (hard rules)
- The user picks WHAT to post, from a shortlist — never solo.
- The user approves final wording, and their edits are canon: a later formatting or
export pass must never silently regress words the user touched.
- The user does the actual posting. NEVER auto-post, never drive a browser or API to
publish — the deliverable is a paste-ready package.
- Posts contain no em dashes and no en dashes (user rule — restructure the sentence
instead). Repo docs keep house style; the rule is for post text only.
The workflow
| Step |
What happens |
Produces |
| 1. Decide |
score 2-4 candidate angles on the axes below, recommend one, STOP — user picks |
chosen topic + angle |
| 2. Optimize |
load the platform reference; none exists → generic checklist below, offer to research + author one |
constraints the draft must obey |
| 3. Draft |
hook first (it must fit the platform's fold), preview digest before full text, asset brief via references/visuals.md |
draft in docs/posts/ |
| 4. Post |
paste-ready package (format below), user posts, outcome noted in the draft file |
posted + one log line |
When the "post" is a page that just needs to be findable (a GitHub repo, a profile),
decide and draft collapse — step 2 with the right reference is the whole job.
Decide axes (evidence, not vibes — cite why for each):
- Demand proof — has this angle worked for someone else, or does it answer
something people actually ask?
- Substance density — enough concrete numbers, artifacts, or moments to fill it
without padding? If not, the draft will starve.
- Audience payoff — who is this for and what do they walk away with?
- Timing — is there a hook now (launch, milestone, fresh lesson), or does it keep?
Generic optimize checklist (any platform without a reference)
- The first visible line carries the whole hook — assume readers never expand.
- One idea per post. The second idea is the next post.
- Native format beats a bare external link everywhere; treat any outbound link as a
reach cost and decide whether it earns its place.
- Concrete beats abstract: real numbers, real filenames, real failures.
- End with a CTA a reader can actually answer, not applause bait.
- Match the visual to the point (decision table in references/visuals.md).
Voice guardrails (all platforms)
Write for the skim: short lines, no buried subclauses, key numbers on their own line,
rounded the way people say them. Second person where natural; concrete metaphor over
essay-explainer. Banned: "delve", "landscape", "it's important to note", filler
rhetorical questions, engagement bait ("comment YES", "tag someone who"), fake humility
openers, generic superlatives, hashtag walls. The test: if a stranger could have written
it about any project, cut until only this project's post remains.
Full punctuation and manner mechanics: references/voice.md. A
project may add a personal voice.local.md overlay beside it. That overlay is the author's
own voice: private, never synced, loaded when present.
The paste-ready package (step 4 format)
Drafts live in docs/posts/YYYY-MM-DD-slug.md (gitignored — drafts are local).
Frontmatter: platform, status: draft | approved | posted, date, assets.
Body rules, in this order:
- Hook options — 2-3 variants, the user picks one (wording gate).
- The post — every paste-able field in its own fenced code block (fenced blocks
render with click-to-copy); explanation lives between blocks, never inside them.
- First comment (only if the link-placement decision put anything there) — own block.
- Asset brief or image prompt — own block, per references/visuals.md.
- Numbered posting checklist, ending with "report back how it did" — the outcome line
goes back into this file and, if a lesson landed, through skill-manager evolve.
Lazy parts (load only on trigger)
| Trigger |
Load |
| LinkedIn post: drafting, hooks, timing, link placement, media choice |
references/linkedin.md |
| GitHub discoverability: repo invisible in search, topics, description, social preview, awesome lists |
references/github.md |
| Any post visual: explainer image, GIF, carousel, animation, prompt for an image model |
references/visuals.md |
| A platform with no reference yet (X, Reddit, HN, ...) |
generic checklist above; offer to research and author references/<platform>.md per skill-manager authoring standards |
1---2name: socials3description: Publishing and discoverability - fire whenever the user wants to post, announce, launch, or promote anything (a LinkedIn post, an X thread, a Show HN, a launch/reflection draft), wants something findable (GitHub repo invisible in search, topics/description/social preview), or asks for a hook, post draft, or post image/GIF. Runs decide -> optimize -> draft -> post; the human always does the actual posting. Load references/linkedin.md, references/github.md, references/visuals.md on their triggers. Not for long-form video production, and not for in-repo docs (workflow step 4 owns those).4---5# socials — decide → optimize → draft → post (the human posts)67> Authored 2026-07-11 from a four-source research pass: the longform-factory skill8> (VideoCreator2, its stage architecture and export format), a live review of real9> LinkedIn posts, and two web sweeps (LinkedIn algorithm, GitHub discoverability) —10> raw (2026-07). Platform mechanics rot fast: each platform reference separates11> evergreen mechanism facts from dated snapshots. Re-verify anything dated older12> than ~6 months before a high-stakes post.1314## What the user gates (hard rules)1516- The user picks WHAT to post, from a shortlist — never solo.17- The user approves final wording, and their edits are canon: a later formatting or18 export pass must never silently regress words the user touched.19- The user does the actual posting. NEVER auto-post, never drive a browser or API to20 publish — the deliverable is a paste-ready package.21- Posts contain no em dashes and no en dashes (user rule — restructure the sentence22 instead). Repo docs keep house style; the rule is for post text only.2324## The workflow2526| Step | What happens | Produces |27|---|---|---|28| 1. Decide | score 2-4 candidate angles on the axes below, recommend one, **STOP — user picks** | chosen topic + angle |29| 2. Optimize | load the platform reference; none exists → generic checklist below, offer to research + author one | constraints the draft must obey |30| 3. Draft | hook first (it must fit the platform's fold), preview digest before full text, asset brief via [references/visuals.md](references/visuals.md) | draft in `docs/posts/` |31| 4. Post | paste-ready package (format below), user posts, outcome noted in the draft file | posted + one log line |3233When the "post" is a page that just needs to be findable (a GitHub repo, a profile),34decide and draft collapse — step 2 with the right reference is the whole job.3536**Decide axes** (evidence, not vibes — cite why for each):371. **Demand proof** — has this angle worked for someone else, or does it answer38 something people actually ask?392. **Substance density** — enough concrete numbers, artifacts, or moments to fill it40 without padding? If not, the draft will starve.413. **Audience payoff** — who is this for and what do they walk away with?424. **Timing** — is there a hook now (launch, milestone, fresh lesson), or does it keep?4344## Generic optimize checklist (any platform without a reference)4546- The first visible line carries the whole hook — assume readers never expand.47- One idea per post. The second idea is the next post.48- Native format beats a bare external link everywhere; treat any outbound link as a49 reach cost and decide whether it earns its place.50- Concrete beats abstract: real numbers, real filenames, real failures.51- End with a CTA a reader can actually answer, not applause bait.52- Match the visual to the point (decision table in [references/visuals.md](references/visuals.md)).5354## Voice guardrails (all platforms)5556Write for the skim: short lines, no buried subclauses, key numbers on their own line,57rounded the way people say them. Second person where natural; concrete metaphor over58essay-explainer. Banned: "delve", "landscape", "it's important to note", filler59rhetorical questions, engagement bait ("comment YES", "tag someone who"), fake humility60openers, generic superlatives, hashtag walls. The test: if a stranger could have written61it about any project, cut until only this project's post remains.6263Full punctuation and manner mechanics: [references/voice.md](references/voice.md). A64project may add a personal `voice.local.md` overlay beside it. That overlay is the author's65own voice: private, never synced, loaded when present.6667## The paste-ready package (step 4 format)6869Drafts live in `docs/posts/YYYY-MM-DD-slug.md` (gitignored — drafts are local).70Frontmatter: `platform`, `status: draft | approved | posted`, `date`, `assets`.71Body rules, in this order:72731. Hook options — 2-3 variants, the user picks one (wording gate).742. The post — **every paste-able field in its own fenced code block** (fenced blocks75 render with click-to-copy); explanation lives between blocks, never inside them.763. First comment (only if the link-placement decision put anything there) — own block.774. Asset brief or image prompt — own block, per [references/visuals.md](references/visuals.md).785. Numbered posting checklist, ending with "report back how it did" — the outcome line79 goes back into this file and, if a lesson landed, through skill-manager evolve.8081## Lazy parts (load only on trigger)8283| Trigger | Load |84|---|---|85| LinkedIn post: drafting, hooks, timing, link placement, media choice | [references/linkedin.md](references/linkedin.md) |86| GitHub discoverability: repo invisible in search, topics, description, social preview, awesome lists | [references/github.md](references/github.md) |87| Any post visual: explainer image, GIF, carousel, animation, prompt for an image model | [references/visuals.md](references/visuals.md) |88| A platform with no reference yet (X, Reddit, HN, ...) | generic checklist above; offer to research and author `references/<platform>.md` per skill-manager authoring standards |