Developers Just Got a Superpower: Meet CodeFlex, the CLI That Writes Your Blog Posts From Git History
Published on 3/12/2026

Shipping code is one thing. Telling the world about it is another. Most developers have a graveyard of unreleased changelogs, half-finished release notes, and "I'll write that post later" intentions that never quite materialize. The gap between "what you built" and "what your users know about" is real, and it costs you.
That's exactly the problem this latest batch of changes sets out to solve.
The CodeFlex team just landed the foundation for CodeFlex — a CLI tool that sits inside any git repository, reads your commit history and diffs, calls an LLM via OpenRouter, and generates a polished, publication-ready blog post. Right from your terminal.
The Core Idea: Your Git History Is Already a Blog Post
Every commit message, every changed file, every line added or removed — it's all structured data. It tells a story. The problem is that extracting that story and shaping it into something readable has always been a manual, time-consuming process that developers deprioritize in the rush to ship the "next" thing.
CodeFlex changes the equation. Instead of starting from a blank page, you start from a git log. The tool does the heavy lifting: it analyzes what changed, builds a context-rich prompt, streams a response from your LLM of choice, and drops a formatted Markdown file into your output directory. The whole flow is interactive, running inside a rich terminal UI built with Ink.js and React.
What Landed in This Release
The generate preview Command
The headline feature in this commit range is the generate preview command, along with all the dependencies it needs to run. This is the beating heart of the CodeFlex workflow.
Here's the full interactive flow a developer experiences when they run flex generate:
-
Diff Summary — The tool shows you exactly what changed: commits detected since the last tag, files touched, lines added and removed. You confirm the range or adjust it before anything gets sent to an LLM.
-
Tone Selection — Choose from changelog, deep-dive, casual, announcement, or technical. This isn't just a label — each tone maps to distinct prompt instructions that shape the voice and structure of the output.
-
Model Selection — Because CodeFlex routes through OpenRouter, you're not locked into a single model. Pick GPT-4o, Claude, Gemini, or whatever suits the task.
-
Live Streaming Preview — The generated post streams directly into the terminal as it's being written. You're watching it compose in real time, word by word.
-
Confirm & Save — Once generation is complete, you choose: save as
.md, copy to clipboard, regenerate with a different tone or model, or discard entirely.
The whole experience is designed to feel like a first-class development tool, not an afterthought.
The Design Philosophy Behind CodePost
Model flexibility over lock-in. By routing through OpenRouter instead of hardcoding a specific provider, CodeFlex lets you use whatever LLM gives you the best results for the task. A technical deep-dive might benefit from a more reasoning-heavy model. A casual announcement might not need GPT-4o at all.
Interactive by default, scriptable by design. The full TUI is the primary experience, but the architecture supports non-interactive usage with flags like --from, --to, --tone, and --no-preview. That means CodeFlex can also slot into a CI pipeline to auto-generate a draft post on every release tag.
Output that works everywhere. The generated files are plain Markdown with YAML frontmatter — compatible with Hugo, Jekyll, Astro, Ghost, Notion imports, or a simple copy-paste into Medium. No proprietary format, no vendor dependency.
Conclusion
This release establishes CodeFlex as a fully functional, architecturally sound developer tool. The core generate flow is in place, the LLM integration is streaming and model-agnostic, and the terminal UI is genuinely good. The repository is cleanly structured and ready for contributors.
The gap between shipping code and communicating about it just got a lot narrower.
Next steps to watch for
flex historycommand for browsing and reopening past generated postsflex initwizard for first-time project setup- Direct publishing integrations (Medium API, Dev.to, Hashnode)
- Git hook support for auto-triggering generation on tag push
If you want to follow along or contribute, the implementation plan is in the repository. The architecture is laid out, the first major feature is working, and there's plenty of interesting surface area left to build.