I Built the Distribution Tools My Blog Needed
Ten skills my coding agent runs to fact-check drafts and find where my posts stop reaching people, tested on my own site before I sold them.
In this post
TL;DR: I graded my own blog against a 2014 marketing course and it failed on distribution, not writing. So I turned the fixes into ten skills my coding agent runs, ran them on this site, and now sell them as The Distribution Stack. That’s the disclosure: I make money if you buy it. On a 2026-09-20 run, the audit skill found a promotion entry for 4 of my 145 published posts. The fact-check skill caught a wrong attribution in a draft before it went live. The audit skill is free for an email address at /tools/distribution-audit; the full ten-skill pack is paid, at /distribution-stack.
This isn’t the follow-up that post promised; I have no results to report yet. It’s the tooling.
The diagnosis was already written
I don’t want to retell what I found grading my own blog against a decade-old marketing course — read that post for the diagnosis. The short version: I write posts well and distribute almost nothing. This post is the follow-through. I turned the gaps that post named into skills my coding agent runs, ran them against my own site, and I’m shipping the pack.
The skills grew out of the same agent pipeline I run this blog on. That pipeline checks the writing and stops at publish; the audit starts where it stops.
What the audit found on this blog
I ran an early version of the Distribution Audit skill against sublimecoding.com on 2026-09-20, against partial Search Console data. The audit says so up front, and I’m repeating that qualifier here because it matters: the search figures would change with a full export; the promotion figures wouldn’t.
Promotion coverage: 4 of 145 published posts, or 2.8%, had an entry in my promotion log. In the last 90 days it was 3 of 78. Every share in the log, four on LinkedIn and one on X, went to my own profiles. None reached anyone else’s audience: no newsletter swap, no podcast, no community post.
The signup situation wasn’t better. At the time of that run, the
email form was missing on /resume,
/consulting, /faq, the homepage, and the
/tools index. /resume alone drew 276
impressions in the audit’s partial search export; the homepage and
/tools index aren’t in that partial export at all, so I
can’t put a number on them, only that the form is missing there too.
And one page’s search numbers stopped me:
/tools/vciso-cost was pulling 624 impressions in the export
window at an average position of 80.2, with zero clicks. Position 80 is
page 8. No title rewrite fixes that. It’s not a copy problem, it’s a
ranking problem, and the fix isn’t a fix, it’s a decision about whether
to keep investing in that page at all.
Not everything in the audit was a gap. On the post pages that do work, a reader who finishes an article already has three ways back: an email signup, an RSS link, and my profile links — the audit checked that on three separate post pages before calling it a pattern rather than a one-off.
One fix was already in place before this run: after the first audit
on 2026-09-15, I added a promotion step to my publishing checklist, so a
post isn’t done until its LinkedIn copy is drafted. The 4-of-145 above
is what that looked like five days in. The signup gap on
/resume, /consulting, /faq, the
homepage, and /tools is still open as I write this.
If you want to see whether your own blog has the same gap before you decide anything else, Distribution Audit is free. It’s the same skill, and it runs on your files and your pages, not mine.
What Claim Gate caught before I published
The second skill in the pack checks drafts against their own sources before they go live. I ran it against the draft of a post on why your personal brand is an attack surface on 2026-09-15, and it came back with 1 high finding, 12 medium, and 4 low.
The high one mattered. The draft credited the attribution of the Lazarus Group hack to “sources who spoke to The Block,” but The Block’s own article attributes that specific claim to the US government, not to its anonymous sources. The sources described the fake-recruiter approach and the malicious PDF; the government made the attribution. My draft had quietly merged the two, crediting the stronger claim to the weaker source. I fixed the sentence before scheduling the post.
Most of the medium findings were one pattern repeated: a real citation, followed by a sentence that quietly says more than the source does. A GitHub post describing “a low-volume social engineering campaign” against accounts connected to crypto and gambling became, in my draft, “your GitHub makes you the target,” dropping the qualifiers the source actually used. A LastPass report about an employee noticing an unusual channel and forced urgency became, in my draft, a claim about “a known, boring rule,” which the source never says. None of these are lies. They’re the kind of small upgrade a claim gets every time you paraphrase it once more than you should, and they’re exactly the kind of thing a second pass by the person who wrote the sentence tends to miss, because you already believe it.
The run also shows what “say plainly what it couldn’t check” looks like in practice: that draft cited 14 external links, the gate opened 10 of them directly, worked around a 403 on three more through a summarizing fetch tool, flagged as close but not verbatim-confirmed, and left one OpenAI page it never got past a 403 on at all, marked not checked rather than guessed at.
That’s the standard the pack holds every draft to before it ships: open every source, mark every claim it doesn’t support, and say plainly what it couldn’t check at all.
What’s actually in the pack
Ten skills, grouped by the job they do:
Find the gaps. Distribution Audit — the one above. Checks promotion, search clicks, email capture, and whether a reader can find your offer, and ends with up to five fixes tied to evidence.
Before and after you publish. Claim Gate catches unsupported claims and dropped qualifiers before a post ships. GEO Pass proposes edits so each section still reads correctly when an AI answer engine or a search snippet lifts it out on its own. Post Promo Drafter turns a published post into drafts for LinkedIn, a thread, a newsletter, a community, and short video, with every figure traced back to the post itself.
Other people’s audiences. Curator Target List finds newsletters and communities for your topics, with dated proof each one is active and how submissions actually work. Show Pitch Drafter reads a podcast’s recent episodes and drafts a pitch shaped like one of them. Advocate Map works locally on your contacts export to find who’s likely to vouch for you inside their own company, and drafts no-ask check-ins.
Positioning and proof. Positioning Workshop turns your bio, services, and recent posts into a one-sentence position you can actually test on people. Identity Consistency Check compares your name, role, and links across your site and profiles and hands you a hardening checklist for the accounts your reputation actually depends on. Case Study Capture turns engagement notes and a client’s sharing terms into a redaction list and an anonymized case study.
The installer sets all ten up for Claude Code, OpenAI Codex, Cursor, Gemini CLI, and GitHub Copilot CLI, on macOS, Linux, or WSL. Most of the ten only touch your own files. A few need your agent’s web access to do their job: Claim Gate’s link checks, Identity Consistency Check, Curator Target List, and Show Pitch Drafter all fetch outside pages, the rest work on your own files and your own public pages.
Three rules run under all ten, and they’re not optional per-skill settings, they’re the reason I built this:
- It never invents a number. Every figure comes from a file it opened or a page it fetched. Anything it couldn’t check gets marked missing, not filled in.
- It drafts, it doesn’t send. No skill posts, pitches, or emails on your behalf. You read the draft and decide.
- Contacts stay local. Advocate Map never uploads your list or looks anyone up online.
The claim I got wrong wasn’t a lie. It was the kind of upgrade a sentence gets every time you paraphrase it once too many.
Do I need to run all ten to get anything out of this?
No — start with the free one. Distribution Audit is the first skill, and it’s free for an email address, because it’s the one that tells you whether the rest is worth your time. Run it against your own blog first. If the gaps it finds look like mine, unpromoted posts, missing signups, a page ranking nowhere a title rewrite can fix, the other nine are the rest of The Distribution Stack, and they’re the follow-through: fact-checking, promotion drafts, outreach to other people’s audiences, and the positioning work behind all of it.
Honest limits
This isn’t an autoposter, and I’d rather say that plainly than have you find out after buying it. Every skill drafts; none of them posts, pitches, or emails anything without you reading it first and hitting send yourself. If what you actually want is something that publishes on a schedule without you, this is the wrong tool.
The skills are plain Markdown files. That’s a feature, you can read every instruction your agent follows and change it for your own use, but it also means they’re easy to copy and hand to someone else. I priced and licensed the pack around that reality rather than pretending it isn’t true: one license covers one person, client work included, but not resale or redistribution. That’s a policy, not a technical lock I don’t have.
And it needs a coding agent that reads Agent Skills — if you’re not already running one, you’ll get much less out of the Markdown than someone who is.
What I’d actually check first
If you’re deciding whether to spend the time: run the free audit skill against your own blog before you read anything else about the pack. The fixes it handed me (promote what I ship, add the signup where it’s missing, stop expecting a title change to fix a page on page 8) are ones I’m still working through. If your blog has the same three gaps, that’s the signal to look at the rest of the pack. If it doesn’t, the audit cost you an email address and one run.