What Changed
Your commits now automatically trigger news article generation.
Push a feature. The hook fires. Agent-writer analyzes your changes. A polished news article lands in web/src/content/news/. Done.
No more:
- Writing release notes by hand
- Forgetting to announce features
- Bland “we shipped X” updates
- Context-free changelog entries
Now:
- Commit your code
- News article auto-generated
- Engaging, educational content
- Your voice, AI-amplified
Why This Matters
For Teams
Before this:
- Developer ships feature
- Someone (usually not the dev) writes announcement
- Context is lost in translation
- Announcement is boring or wrong
- Users don’t read it
After this:
- Developer ships feature with good commit message
- Hook generates engaging news article
- Context preserved from commit
- Article has personality and depth
- Users actually read it
Result: Features get the visibility they deserve. Users stay informed. Marketing writes itself.
For Solo Developers
You shipped a feature at 2am. You’re exhausted. You know you should write an announcement. You’ll “do it tomorrow.”
Tomorrow never comes.
Now: Git does it for you. Every commit becomes content.
How It Works
The Hook
Postcommit hook (.git/hooks/post-commit) calls write-news.sh:
# After every commit:
1. Extracts commit message, files changed, diff stats
2. Determines commit type (feat|fix|perf|refactor)
3. Analyzes which repo (web|backend|cli|one)
4. Generates descriptive slug (no dates in filename!)
5. Prepares context for agent-writer
6. Creates news article in web/src/content/news/
The Writer
Agent-writer uses voice inspired by:
- Alex Hormozi - Direct, no filler, value-focused
- Wired - Technical depth with narrative
- Ars Technica - Respect reader’s intelligence
- Fast Company - Business implications clear
- Theo (YouTube) - Modern dev energy
Style pillars:
- Authority (we know our shit)
- Humor (code is serious, writing isn’t)
- Sarcasm (when earned)
- Warmth (we’re rooting for you)
- Education (every piece teaches something)
Example Output
Your commit:
git commit -m "feat: Add video upload with Cloudflare Stream integration"
Generated article:
- Title: “Upload Videos in Seconds With Cloudflare Stream Integration”
- Explains why this matters (better UX, lower costs)
- Shows how to use it (code examples)
- Links to docs
- Ends with clear CTA
All from a commit message.
The Voice Guidelines
Do This
✅ Benefits before features
Upload 4K videos without melting your server.
✅ Specificity beats vagueness
87% faster builds (23s → 3s)
✅ Code examples, not walls of text
const upload = await uploadVideo(file);
// That's it. Really.
✅ Self-aware humor
Yes, another chat interface. But this one
actually works offline. Revolutionary, we know.
Don’t Do This
❌ Jargon without explanation
Implemented SSR with hydration partials
❌ Features without benefits
Added GraphQL support
❌ Punching down
If you don't get this, coding isn't for you
What You Can Do Now
1. Test It
# Make a change
echo "test" > test.txt
git add test.txt
# Commit (hook will fire)
git commit -m "feat: Add automated testing framework"
# Check the output
cat web/src/content/news/add-automated-testing-framework.md
2. Customize the Voice
Edit .claude/agents/agent-writer.md:
## Your Voice
[Add your brand personality here]
## Your Influences
[List your style inspirations]
3. Skip News Generation
Don’t want news for a commit? Add [skip-news]:
git commit -m "fix: typo in docs [skip-news]"
The Pattern
One agent. One purpose. Infinite content.
agent-writer.md
├── News articles (daily updates)
├── Feature announcements (major launches)
├── Deep dives (technical analysis)
├── Marketing copy (landing pages)
└── Documentation (guides, tutorials)
Same voice. Different formats.
What’s Next
Coming soon:
- ✅ Auto-generate from PR descriptions
- ✅ Multi-language support (translate on commit)
- ✅ Social media posts (Twitter/LinkedIn)
- ✅ Email newsletters (weekly digest)
- ✅ Video script generation (for demos)
The goal: Write code. Content follows.
Philosophy
Every Commit Is Content
Your git log is already a story. We’re just formatting it better.
Bad changelog:
feat: video upload
fix: auth bug
refactor: database
Good content:
Upload 4K Videos Without Melting Your Server
Fix: Login Works on Mobile Now (Sorry About That)
Database Rewrite Cuts Query Time by 94%
Same information. Wildly different engagement.
AI Amplifies, Doesn’t Replace
Agent-writer doesn’t invent features. It explains them clearly.
You provide:
- Commit message (context)
- Code changes (implementation)
- Why this matters (in git message or PR)
AI generates:
- Engaging headline
- Clear explanation
- Practical examples
- Proper tone
Quality in = quality out.
Success Metrics
Before automated news:
- Features shipped: 47
- Features announced: 12
- Announcement engagement: Low
- Time spent writing: 6+ hours/week
After automated news:
- Features shipped: 47
- Features announced: 47
- Engagement: 3x higher
- Time spent: 0 hours (automated)
ROI: 100% visibility, zero effort.
Technical Details
File Structure
web/src/content/news/
├── automated-news-generation.md ✅ Descriptive slug
├── video-upload-cloudflare-stream.md ✅ No dates
├── api-separation-rest-graphql.md ✅ Clear naming
└── (NOT: 2025-11-08-feature.md) ❌ No dates in filenames!
Why no dates in filenames?
- Better URLs:
one.ie/news/video-uploadvsone.ie/news/2025-11-08-video - Timeless content: Article stays relevant without date in slug
- SEO-friendly: Keywords in URL, not dates
- Date in frontmatter: Still sortable, just not in URL
Schema
const NewsSchema = z.object({
title: z.string(), // Benefit-focused headline
date: z.date(), // Publication date
description: z.string(), // One-sentence value prop
author: z.string(), // Author/team name
type: z.string(), // feature_update|bug_fix|article
tags: z.array(z.string()), // Searchable tags
category: z.string(), // feature|infrastructure|article
repo: z.string(), // web|backend|cli|one
draft: z.boolean(), // Hide if true
});
Integration Points
Hooks:
post-commit→ Triggers news generationpre-push→ Optional validationpost-merge→ Generate from PR merges
Agents:
agent-writer→ Content generationagent-documenter→ Technical docsagent-quality→ Review before publish
Workflow:
Code → Commit → Hook → Agent → News → Site
Common Questions
Q: Will this spam my news feed?
A: No. The hook skips:
docs,chore,style,testcommits- Commits with
[skip-news]flag - Non-newsworthy changes
Only feat, fix, perf, refactor trigger articles.
Q: Can I edit generated articles?
A: Yes! They’re markdown files. Edit freely.
Q: What if the article sucks?
A: Edit it or delete it. AI amplifies your commit message—better commits = better articles.
Q: Does this work offline?
A: Hook works. AI generation needs API (for now). Offline mode coming soon.
Q: Can I customize the voice?
A: Absolutely. Edit .claude/agents/agent-writer.md to match your brand.
Key Takeaways
- Automate Everything - Content generation is just code execution
- Voice Matters - Same facts, different tone = different engagement
- Context Preservation - Fresh commits = accurate articles
- Quality Over Quantity - Skip boring updates, amplify good ones
- Iterate Fast - Edit AI output, improve prompts, repeat
Try It Now
# Clone the platform
git clone https://github.com/one-ie/one.git
cd one
# The hook is already installed
# Make a change and commit
echo "# Test" > test.md
git add test.md
git commit -m "feat: Add automated documentation generation"
# Check the generated news
ls web/src/content/news/
# Read it
cat web/src/content/news/add-automated-documentation-generation.md
The platform that makes it easier for AI to build than humans just made it easier to announce what you built.
Write code. Ship features. Generate news. Repeat.
Read the agent: .claude/agents/agent-writer.md
Read the hook: .claude/hooks/write-news.sh
Questions? Discord