Your post isn’t underperforming. It’s being graded on the wrong scoreboard.
Every platform rewards a different action, so one formula pasted into five boxes and measured by likes reads a number that barely counts anywhere. post-writer drafts each post — and now each long-form Article — against the scoreboard that surface actually uses, checks it with five scripts that return PASS or FAIL, and knows the cases where it should add nothing at all.
For founders and small teams posting on more than one platform, who suspect cross-posting is costing them reach but do not want a tool that turns every human moment into a funnel.

opvs-skills install @di-atomic/post-writerThen say: “draft a LinkedIn post about this”, “write a LinkedIn article about this” or “score this post”
Why cross-posting quietly caps your reach
write once → paste ×5 → publish check likes ✓ feels efficient (X ranks replies + bookmarks, Threads ranks reply-to-like ratio, Instagram ranks saves, LinkedIn ranks dwell + comments)
Likes rank lowest on most of them. The post did not fail. You read the one number that platform cares about least.
pick platform → load its recipe → structure + CTA tuned to ITS KPI verify-post-structure PASS lint-ai-slop PASS lint-tone-drift PASS → or: no-mechanics-mode, add nothing
A save request on LinkedIn is noise. A comment request on Instagram is a wasted line. The CTA changes because the KPI changes.
Every platform keeps its own scoreboard. One formula cannot win them all.
What you actually get
A different post per platform, on purpose
Eleven recipes covering LinkedIn posts and Articles, X posts, threads and Articles, Instagram caption and carousel, Threads, Facebook, YouTube and Reddit. Structure, length band and call-to-action all move with the surface, because what that surface counts moves too.
It knows when to stop optimizing
The most-liked posts ever recorded carry no hook framework, no call to action and no growth mechanic. For emotional, reactive or announcement posts the skill drops its own machinery, because adding it there makes the post worse.
Five scripts that will tell your agent no
Length band and hook truncation, a 55-entry zero-tolerance slop blacklist, a tone check against your own voice file, an Article CTA gate, and a coordination check. They exit 1 and print the numbers, so a draft cannot talk its way to shipped.
New in v1.6.0 — the Article is its own artifact
no article recipe anywhere in the fleet
→ invent the process live
2,894w → 1,440 → 1,306 → 1,459
→ 1,592 → 850 (six drafts)
verify-post-structure FAIL
reason: over the 3,000-char POST ceiling
Graded against a post’s length ceiling, a real Article fails for the wrong reason — and editing it until it passes destroys the piece.
recipes/linkedin-article.md cover 1920×1080 16:9 desktop/tablet web editor only post verifier: explicitly excluded verify-article-cta ....... PASS recipes/x-article.md every number: hypothesis-stamped
Its own structure, length regime, media spec and publish route. The X recipe ships with no measured corpus behind it, and says so on every number rather than borrowing LinkedIn’s.
An Article is a different artifact from a post. v1.6.0 stops pretending otherwise.
Why the closing ask changed
> which CTA closes an ICP-pillar article?
corpus ............ 328 posts / 12 queries / 299 authors
compliance ........ median 0 comments 68% zero c:l 0.000
buyer-language .... median 1 comment 42% zero c:l 0.057
practitioner ...... median 15 comments c:l 0.42
→ the audience READS. buyer-language out-reads compliance.
it just will not perform in public.
→ the gate cannot be baited: found in 2 of 151 and 5 of 177
verify-article-cta comment-gate ..... FAIL
direct message ... PASS
On an ICP-pillar article the conversion event is a direct message, not a comment. Success counts as connection requests, DM replies and profile views — and because LinkedIn exposes no clean API read for those on a personal profile, that counting is manual, which the skill says out loud rather than implying a dashboard.
The rules that make it different


A real run — same news, two platforms, two answers
> draft a post about our new pricing page. LinkedIn and Threads.
read voice.md ........ first person, short sentences ✓
LinkedIn → recipes/linkedin-post.md
KPI: dwell + comments → longer setup, CTA asks a question
verify-post-structure .. 1 CTA, hook survives 140c PASS
lint-ai-slop ........... 0 of 55 banned terms PASS
lint-tone-drift ........ Flesch 68, first-person 4.1 PASS
Threads → recipes/threads-post.md
KPI: reply-to-like ratio → shorter, self-reply planned (+42%)
3 scripts .............. PASS
Two posts. Different length, different CTA, same voice.
post-writer is guidance-only. Your agent writes the words following SKILL.md; the scripts grade them. Nothing is sent to a model of mine.
I built this to run my own channels, in seven languages.
post-writer is one skill in the system behind Di-Atomic — the marketing and compliance agency that runs cognitoAI, SpiderIQ and OPVS. The slop blacklist is English-only and the skill says so instead of pretending, and the X Article recipe ships stamped as untested because I own no X corpus. That is the same honesty I owe a client. If you want this run properly for your brand, that is the day job. Let’s talk.
Book a 30-min call with Di-AtomicJust want the skill? Install @di-atomic/post-writer free.