← Back to projects
mdrelease: Markdown-Driven Release Automation
Jan 20, 2026 2 min read

mdrelease: Markdown-Driven Release Automation

A zero-dependency Go CLI that parses your changelog and automates getting version as well as git commits, tags, and pushes

View Live →

This tool exists because I wanted one boring job to stop being my job.

I use changelog.md as the source of truth for both the version and the release notes. That meant I kept needing the same tiny bit of automation: read the latest version, use it for tags and deploys, and optionally do the git ceremony without me poking at it like a raccoon in a toolbox.

mdrelease started as a Bun script, then became a little Go helper that lived inside each repo, and eventually turned into a small global CLI. The more I use Go, the more I like tools that are just one binary and no drama.

The changelog format is intentionally simple:

# 1.2.3 - Release title here
- First change
- Second change
- Third change

# 1.2.2 - Previous release
- Previous change

In practice, I use it in two ways:

  • as a normal CLI when I want a quick release helper
  • inside a Taskfile, Dockerfile, or deploy flow when I need the current version without duplicating it somewhere else

With my usual defaults, mdrelease reads changelog.md, grabs the newest version, and can handle the commit, tag, and push flow too. Nothing clever. That’s the appeal.

This is not a grand platform. It is a tiny release robot that reads markdown and minds its business. I like those kinds of tools.