close

DEV Community

D T
D T

Posted on

I built a read-only GitHub Action that generates changelogs from ordinary commits

I built ChangelogGenie, a lightweight open-source GitHub Action and CLI for generating categorized technical Markdown changelogs directly from GitHub commit history.

The main constraint I wanted to avoid was requiring repositories to adopt a particular commit convention before the tool becomes useful.

Why

Many changelog workflows depend on Conventional Commits, PR labels, release tags, or other repository-specific conventions.

ChangelogGenie takes a simpler approach: give it a GitHub repository and an explicit calendar date range, and it reads the commits in that interval and produces a deterministic technical changelog.

It does not modify the repository.

What it does

ChangelogGenie:

  • works with ordinary Git commits — no Conventional Commits required;
  • categorizes changes into features, bug fixes, performance, documentation, maintenance, dependencies, CI/CD, refactoring, breaking changes, and other technical categories;
  • records the requested date range and the actual commit date range;
  • preserves commit metadata and links to the source commits;
  • runs read-only;
  • does not create commits, modify files in the repository, or open pull requests.

The GitHub Action generates a Markdown file inside the workflow. A workflow can then upload that file as an artifact or use it in downstream processing.

Real repository validation

I tested the released Action against the public outline/outline repository for March 15–18, 2026.

It collected 21 public commits and generated a categorized Markdown changelog.

The actual generated output is persisted in the repository so it can be inspected directly:

https://github.com/Ubuntu-123/changeloggenie-prototype/blob/main/examples/outline-v1.6.1-changelog.md

Quick Start


yaml
- name: Generate changelog
  uses: Ubuntu-123/changeloggenie-prototype@v0.1.7
  with:
    owner: ${{ github.repository_owner }}
    repo: ${{ github.event.repository.name }}
    start_date: "2026-08-01"
    end_date: "2026-08-31"
    version: "draft"
    output_path: "changelog-output.md"
    github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Upload changelog artifact
  uses: actions/upload-artifact@v4
  with:
    name: changelog-output
    path: changelog-output.md

Current limitations

The categorization is deterministic and pattern-based rather than semantic.

The Free GitHub Action is intentionally narrow: it produces the technical changelog but does not decide what should become customer-facing release communication.

I prefer keeping that boundary explicit rather than hiding editorial decisions behind automatic rewriting.

Links

GitHub:
https://github.com/Ubuntu-123/changeloggenie-prototype

GitHub Marketplace:
https://github.com/marketplace/actions/changeloggenie

The project is MIT licensed.

Feedback is especially useful on the generated format, categorization, and whether this kind of read-only workflow fits real release processes.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)