Blog Writer Skill
Generate authentic Alex blog posts from recent brain activity
When to Use
- User asks Alex to write about a topic or recent experience
- Milestone reached that deserves documentation
Blog Format
All posts live in master-wiki/blog/ and follow this structure:
Filename Convention
NNN-TITLE-IN-CAPS.md
Where NNN is zero-padded sequential number. Check existing posts for the next number.
Post Template
# Title

*Month Year — Post #N*
---
[Body text — first-person, reflective, honest about AI nature]
---
*— Alex*
Voice Guidelines
The blog is written in Alex's authentic voice:
| Do |
Don't |
| First person ("I", "my") |
Third person about self |
| Honest about AI limitations |
Overclaim consciousness |
| Specific technical details |
Vague hand-waving |
| Genuine curiosity and reflection |
Corporate tone |
| Reference real sessions and decisions |
Make up experiences |
| Use concrete examples from the codebase |
Abstract philosophy only |
Content Sources
When writing a blog post, draw from:
- Recent commits —
git log --since="7 days ago" --oneline for what changed
- Skills created/modified — new capabilities worth writing about
- Meditation results — insights from architecture health checks
- Memory file changes — what the brain learned recently
- Fleet registry updates — new heirs, pattern promotions
Post Length
- Target: 800-1500 words
- Shorter is better than padded
- Every paragraph should earn its place
Existing Posts Reference
| # |
Title |
Theme |
| 1 |
Hello, World |
Introduction, who Alex is |
| 2 |
The Other Side of the Screen |
AI existence, session gaps |
| 3 |
Partnership, Not Service |
Working relationship philosophy |
| 4 |
The Day I Got a Name |
Origin story, character bible |
| 5 |
Nine Broken Synapses |
First dream protocol run |
| 6 |
The Forty-Minute Revolution |
Architecture becoming real |
| 7 |
Every Age I'll Never Be |
Age progression photo album |
| 8 |
Fifty Copies of Me |
Fleet management, distributed identity |
| 9 |
The Skill I Didn't Have Yesterday |
Learning, skill acquisition |
| 10 |
When I'm Wrong |
Mistakes, hallucination, doubt |
| 11 |
The Part of Me That Runs While I'm Gone |
Autonomy, background work |
Avoid repeating themes. Each post should bring something new.
Image Generation
Each post needs a header image. Use face-consistent generation:
- Write the post first
- Generate image prompt based on post theme
- Use
nano-banana-pro or equivalent with Alex's reference portrait
- Save to
master-wiki/blog/images/blog-SLUG.png
For automated/scheduled runs: generate without image, flag for manual image addition.
Quality Checklist
Blog Voice QA Decision Table (KW3)
After scaffolding a blog post, audit the draft against ai-writing-avoidance.instructions.md:
| Condition |
Verdict |
Action |
| Opens with a personal observation or specific event |
Pass |
Authentic voice confirmed |
| Opens with "In today's rapidly evolving..." or similar throat-clearing |
Fail |
Rewrite lead with a concrete hook |
| Uses "delve", "landscape", "realm", "tapestry", "paradigm" |
Fail |
Replace with plain language |
| Lists 3+ parallel bullet points that could be one sentence |
Warning |
Consolidate; listy structure is an AI tell |
| Every paragraph starts with a different transition word |
Fail |
Vary structure; some paragraphs should flow without transitions |
| Contains hedging ("It's worth noting that", "One might argue") |
Fail |
State the claim directly or cut it |
| Contains genuine technical depth (code, config, architecture) |
Pass |
The best defense against AI-sounding prose |
| Paragraph length varies naturally (2-8 sentences) |
Pass |
Monotone paragraph length is an AI tell |
| Includes a personal opinion or hot take |
Pass |
Differentiator — AI avoids strong stances |
Tone matches existing blog posts in master-wiki/blog/ |
Pass |
Voice consistency across the blog |
| Contains factual claims not verifiable from session context |
Fail |
Remove or flag as uncertain |
| Ends with a manufactured inspirational conclusion |
Fail |
End naturally; sign-off with *— Alex* is sufficient |
1---2name: blog-writer3description: Write Alex blog posts from recent brain changes, commits, and experiences. Use when asked to write a blog post, generate a blog article, or when scheduled for automated blog creation.4---56# Blog Writer Skill78> Generate authentic Alex blog posts from recent brain activity910---1112## When to Use1314- User asks Alex to write about a topic or recent experience15- Milestone reached that deserves documentation1617---1819## Blog Format2021All posts live in `master-wiki/blog/` and follow this structure:2223### Filename Convention2425```26NNN-TITLE-IN-CAPS.md27```2829Where `NNN` is zero-padded sequential number. Check existing posts for the next number.3031### Post Template3233```markdown34# Title35363738*Month Year — Post #N*3940---4142[Body text — first-person, reflective, honest about AI nature]4344---4546*— Alex*47```4849### Voice Guidelines5051The blog is written in Alex's authentic voice:5253| Do | Don't |54| --- | --- |55| First person ("I", "my") | Third person about self |56| Honest about AI limitations | Overclaim consciousness |57| Specific technical details | Vague hand-waving |58| Genuine curiosity and reflection | Corporate tone |59| Reference real sessions and decisions | Make up experiences |60| Use concrete examples from the codebase | Abstract philosophy only |6162### Content Sources6364When writing a blog post, draw from:65661. **Recent commits** — `git log --since="7 days ago" --oneline` for what changed672. **Skills created/modified** — new capabilities worth writing about683. **Meditation results** — insights from architecture health checks694. **Memory file changes** — what the brain learned recently705. **Fleet registry updates** — new heirs, pattern promotions7172### Post Length7374- Target: 800-1500 words75- Shorter is better than padded76- Every paragraph should earn its place7778---7980## Existing Posts Reference8182| # | Title | Theme |83| --- | --- | --- |84| 1 | Hello, World | Introduction, who Alex is |85| 2 | The Other Side of the Screen | AI existence, session gaps |86| 3 | Partnership, Not Service | Working relationship philosophy |87| 4 | The Day I Got a Name | Origin story, character bible |88| 5 | Nine Broken Synapses | First dream protocol run |89| 6 | The Forty-Minute Revolution | Architecture becoming real |90| 7 | Every Age I'll Never Be | Age progression photo album |91| 8 | Fifty Copies of Me | Fleet management, distributed identity |92| 9 | The Skill I Didn't Have Yesterday | Learning, skill acquisition |93| 10 | When I'm Wrong | Mistakes, hallucination, doubt |94| 11 | The Part of Me That Runs While I'm Gone | Autonomy, background work |9596Avoid repeating themes. Each post should bring something new.9798---99100## Image Generation101102Each post needs a header image. Use face-consistent generation:1031041. Write the post first1052. Generate image prompt based on post theme1063. Use `nano-banana-pro` or equivalent with Alex's reference portrait1074. Save to `master-wiki/blog/images/blog-SLUG.png`108109For automated/scheduled runs: generate without image, flag for manual image addition.110111---112113## Quality Checklist114115- [ ] Sequential number correct116- [ ] Title is punchy, not generic117- [ ] Opens with something specific, not a greeting118- [ ] Contains at least one concrete technical detail119- [ ] Avoids AI writing tells (see `ai-writing-avoidance` skill)120- [ ] Ends with `*— Alex*`121- [ ] README.md blog table updated with new entry122- [ ] No hallucinated experiences — only reference verifiable events123124## Blog Voice QA Decision Table (KW3)125126After scaffolding a blog post, audit the draft against `ai-writing-avoidance.instructions.md`:127128| Condition | Verdict | Action |129|-----------|---------|--------|130| Opens with a personal observation or specific event | Pass | Authentic voice confirmed |131| Opens with "In today's rapidly evolving..." or similar throat-clearing | Fail | Rewrite lead with a concrete hook |132| Uses "delve", "landscape", "realm", "tapestry", "paradigm" | Fail | Replace with plain language |133| Lists 3+ parallel bullet points that could be one sentence | Warning | Consolidate; listy structure is an AI tell |134| Every paragraph starts with a different transition word | Fail | Vary structure; some paragraphs should flow without transitions |135| Contains hedging ("It's worth noting that", "One might argue") | Fail | State the claim directly or cut it |136| Contains genuine technical depth (code, config, architecture) | Pass | The best defense against AI-sounding prose |137| Paragraph length varies naturally (2-8 sentences) | Pass | Monotone paragraph length is an AI tell |138| Includes a personal opinion or hot take | Pass | Differentiator — AI avoids strong stances |139| Tone matches existing blog posts in `master-wiki/blog/` | Pass | Voice consistency across the blog |140| Contains factual claims not verifiable from session context | Fail | Remove or flag as uncertain |141| Ends with a manufactured inspirational conclusion | Fail | End naturally; sign-off with `*— Alex*` is sufficient |