/solovibecoder + /embed

How I Built a Skill Stack That Writes, Publishes, and Compounds — All by Itself

Sarah Chen
Sarah Chen

SENIOR SOFTWARE ENGINEER AT TECHCORP....

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:

  1. Copy the embed link from Notion
  2. Open Rails console
  3. Manually enter data into the Article model
  4. Map the category
  5. 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:

CategoryContent
How Did This App Blow Up?App success stories
The TikTok Ads PlaybookTikTok ad strategies
AI Did It AllAI automation cases
Shorts to SalaryYouTube Shorts monetization
Monologue of a Solo BuilderSolo 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.

TaskBeforeAfterImprovement
Work collection30 min10 sec180x
Draft writing2-3 hours15 min10x
Post registration15-20 min30 sec30x
Full publication3-4 hours30 min7x

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

Build a skill
Work gets automated
Produce more in the same time
Content accumulates
Brand gets stronger
Subscribers grow
Monetization opportunities appear
Revenue → Time to build better skills → (back to top)

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

  1. Click Raw on the Gist page and copy the entire content
  2. Save it as a command file in your project:
    .claude/commands/SoloVibeCoder-Newsletter.md
  3. Open Claude Code and type /SoloVibeCoder-Newsletter to run

Responses (0)