Hey, it's Jennie.
Let me tell you about Justin Welsh. He was a VP at a SaaS company, burned out, and went solo. He started a newsletter. Today he has 550,000 subscribers, makes ~$4.5 million a year, and employs zero people.
Sounds like a genius, right?
But here's the thing — he only spends 4-5 hours per week on content.
His secret? He built what he calls a “Content Operating System.” He didn’t get better at writing — he built a structure where content writes itself. LinkedIn posts get repurposed into newsletters, newsletters drive digital product sales. Set it up once, and it repeats every week.
James Clear did something similar. He runs a newsletter called “3-2-1 Thursday” — the format is “3 ideas from me, 2 quotes from others, 1 question for you.” That simple structure brought his production cost close to zero, and his subscriber count grew to 3 million. He launched Atomic Habits off that subscriber base — it sold 15 million copies.
See the pattern?
The person who writes better didn’t win. The person who built the system did.
But I Took It One Step Further
I write a daily newsletter too. It’s called SoloVibeCoder, and in the beginning, it took me 3-4 hours just to organize a single day’s work.
Digging through commit logs, re-reading conversations with Claude, asking myself “wait, what did I do today?” — and then rewriting all of that in my newsletter style. Once commits hit double digits, just organizing everything became a job in itself.
But then a problem showed up.
If I spent 3-4 hours writing every day, I had no time left to actually code. If I cut coding to write the newsletter, I had nothing to write about. If I kept coding, I had no time for the newsletter. A perfect deadlock.
So I thought — Justin Welsh built a Content Operating System. James Clear made production cost near-zero with his “3-2-1” format.
I’m a developer. Why not just build it in code?
/solovibecoder — A Skill That Collects My Work and Drafts the Newsletter Automatically
That’s how /solovibecoder was born.
Type /SoloVibeCoder-Newsletter in Claude Code, and here’s what happens:
Step 1 — Auto-collection
It pulls git commit logs and reads through all my Claude session conversations. There’s a file called sessions-index.json that records every conversation I’ve had with Claude — which projects, how many sessions, how many messages, what the first prompt was. It extracts everything.
Today's work:
## Git Commits
1. [00671c1] refactor: design token improvements
2. [8e268b5] feat: DB backup system
## Claude Sessions
1. LMS project - 5 sessions, 42 messages
2. Newsletter project - 2 sessions, 15 messages
It doesn’t just read commits — it reads Claude sessions too, catching work-in-progress that hasn’t been committed yet. I used to spend 30 minutes trying to remember what I did. Now it takes 10 seconds.
Step 2 — Draft in my newsletter style
It auto-generates a newsletter draft based on the collected data. Conversational tone, hook patterns, at least 3 data points, Before/After comparisons — the style guide is embedded right inside the skill.
Step 3 — Edit loop → one-click publish
Review the draft, say “fix this part” and it updates instantly. Say “OK” and it publishes via API automatically.
Collection to publication in 30 minutes. Down from 3-4 hours.
/embed — One Notion Link Becomes a Newsletter Post
The second skill is /embed.
Say I write a case study in Notion — “How Did This App Blow Up?” To get that into my newsletter, I used to:
- Copy the embed link from Notion
- Open Rails console
- Manually enter data into the Article model
- Map the category
- Record it in the category’s MD file
That took 15-20 minutes every time. And I’d occasionally put it in the wrong category or forget to update the MD file.
Now I just do this:
/embed https://notion.site/ebd/330d3a5... --category app-success --title "How Duolingo Grew"
That’s it.
The Article gets created in the DB, auto-assigned to the right category, and recorded in the markdown file — all at once. 15-20 minutes became 30 seconds.
The categories are clean and organized:
| Category | Content |
|---|---|
| How Did This App Blow Up? | App success stories |
| The TikTok Ads Playbook | TikTok ad strategies |
| AI Did It All | AI automation cases |
| Shorts to Salary | YouTube Shorts monetization |
| Monologue of a Solo Builder | Solo dev stories |
But Here’s What Really Matters
I’ve introduced two skills, but the point isn’t “these skills are convenient.”
The point is that these skills compound into a moat.
You know Warren Buffett’s “economic moat”? A structural competitive advantage that competitors can’t easily cross. Usually moats mean brand, network effects, patents — none of which apply to a solo developer.
But “your own skill stack” is a moat.
Here’s why, in three parts.
1. They Compound
The patterns I learned building /solovibecoder (session reading, API publishing, embedded style guides) were directly reused when building /embed. Each skill cuts the build time for the next one in half.
My Claude Code setup now has dozens of skills beyond newsletters — /blog (marketing blog writer), /remotion (YouTube video automation), /tiktok-story (TikTok story creator), /capture (screenshot automation). Each skill references and reuses patterns from the others.
2. Nobody Can Copy Them
My /solovibecoder skill has a custom style guide called “Josh hybrid tone” baked in. Rules for when to use conversational endings, how to weave numbers into stories, when to use hook reversals — all codified.
This comes from my own writing experience. Even if someone copies the skill file, it won’t match their voice. A skill optimized for my workflow can only be used by me.
3. Production Cost Approaches Zero
Just like James Clear’s “3-2-1” format brought production cost near zero, my skill stack slashed newsletter production costs dramatically.
| Task | Before | After | Improvement |
|---|---|---|---|
| Work collection | 30 min | 10 sec | 180x |
| Draft writing | 2-3 hours | 15 min | 10x |
| Post registration | 15-20 min | 30 sec | 30x |
| Full publication | 3-4 hours | 30 min | 7x |
When production cost drops, you unlock “the ability to publish every day.” Daily publishing means content accumulates, content means subscribers grow, subscribers mean the brand gets stronger. That’s compounding.
Justin Welsh making $4.5M/year on 4-5 hours of content per week? Same principle. The system that lowers production cost IS the moat.
So Here’s the Structure Where Skills Become Your Moat
This is the solo developer’s moat. It’s not about writing better code — it’s about building systems with code that simultaneously accumulate content and brand.
And once this flywheel starts spinning, it can’t stop. The more skills stack up, the faster the next one gets built, the lower production costs go, the more output increases.
It Starts with One Skill
If you’re thinking “should I try this?” — don’t try to build something big.
I started with just “a script that pulls today’s commit logs.” Then session reading got added. Then the style guide. Then API publishing. That’s how it became /solovibecoder.
Building one skill takes an hour or two. But that hour or two gives you back 3 hours every day going forward. That’s 21 hours a week, 90 hours a month.
90 hours is enough to build 45 more skills. That’s compounding.
— Jennie
Get the Skills
Want to try these skills yourself? Here are the full source files:
- /solovibecoder — Auto-collects git commits + Claude sessions, drafts newsletter in your style, publishes via API
- /embed — Registers Notion embed links as categorized newsletter articles with one command
How to use
- Click Raw on the Gist page and copy the entire content
- Save it as a command file in your project:
.claude/commands/SoloVibeCoder-Newsletter.md - Open Claude Code and type
/SoloVibeCoder-Newsletterto run
Responses (0)