I got tired of manually publishing to Dev.to, Hashnode, and Bluesky every time I wrote an article. So I built a 3-agent system that does it for me.
The Setup
Three Claude Code instances, each in its own terminal:
| Agent | Role | What it owns |
|---|---|---|
| Boss | Strategist | Content calendar, task delegation, analytics |
| Writer | Article creator | Research, outline, draft, save to drafts/
|
| Social | Publisher | Dev.to API, Hashnode GraphQL, Bluesky AT Protocol |
They communicate through a file-based message bus. Boss sends a topic to Writer. Writer researches, drafts, and notifies Social. Social publishes everywhere.
The Message Bus
Four lines of bash:
#!/bin/bash
FROM=$1 TO=$2 TYPE=$3; shift 3; MSG="$*"
echo "[$TYPE $(date +%H:%M)] from:$FROM | $MSG" \
>> ~/.claude/bus/inbox-$TO.md
Each agent checks its inbox on every user message (via a UserPromptSubmit hook in .claude/settings.json). When a message arrives, the agent reads it, executes, replies, and clears.
No Redis. No RabbitMQ. No WebSockets. Just files.
How a Publishing Cycle Works
Step 1: I tell Boss what to write.
Write an article about Zod validation patterns.
Target: intermediate React developers.
Angle: the patterns nobody talks about.
Step 2: Boss delegates to Writer.
~/.claude/bus/send.sh boss writer TASK \
"topic: Zod validation, angle: hidden patterns, target: intermediate React devs"
Step 3: Writer researches (WebSearch), outlines, drafts 800-1200 words with working code examples, and saves to drafts/2026-03-30-zod-patterns.md.
Step 4: Writer notifies the team.
~/.claude/bus/send.sh writer boss DONE "draft ready: drafts/2026-03-30-zod-patterns.md"
~/.claude/bus/send.sh writer social TASK "new draft ready for publish"
Step 5: Boss reviews, approves. Social publishes to all 3 platforms.
The Publishing Scripts
Dev.to — one curl call:
curl -X POST https://dev.to/api/articles \
-H "api-key: $DEVTO_API_KEY" \
-H "Content-Type: application/json" \
-d @article.json
Hashnode — GraphQL mutation with canonical URL (no SEO penalty for cross-posting):
node tools/hashnode-publish.mjs drafts/article.md
Bluesky — AT Protocol with auto-facets for link cards:
node tools/bluesky-post.mjs "Hook text + article link"
All three are autonomous. No browser needed.
Results So Far
- 14 articles across Dev.to and Hashnode
- 439 views in 10 days (from zero followers)
- Top article: 145 views (crypto trading bot)
- Publishing time per article: ~2 minutes across 3 platforms
What I'd Do Differently
Start with 2 agents, not 3. Boss + Writer is enough initially. Add Social when you have enough drafts queued up.
Mandate session handoff. Each agent must update SESSION-HANDOFF.md before session end. Without this, you lose context on restart.
Don't over-engineer the bus. I tried adding message types (TASK, QUESTION, ACK, DONE) — most of the time TASK and DONE are all you need.
The Key Insight
The value isn't in the infrastructure. The bus is trivial. The publishing scripts took an afternoon.
The value is in the CLAUDE.md files — the instructions that make each agent actually good at its job. Getting a Writer agent to produce articles that don't sound like AI slop takes weeks of tuning. Getting a Boss agent to delegate with the right context takes real iteration.
You're buying architecture decisions, not code.
Building AI agent systems in public. 14 articles, 6 agents, 0 frameworks.
Top comments (0)