How to Generate App Store Changelogs from Git History

You can generate App Store changelogs from git history by extracting commit ranges with a Bash script, filtering for user-visible changes according to guidelines, and rewriting messages into benefit-focused bullets suitable for the App Store.

The Dimillian/Skills repository provides an open-source automation framework that transforms raw Git commits into polished "What’s New" text for iOS app releases. This workflow eliminates manual changelog writing by analyzing your repository history and applying structured filtering rules to highlight only customer-relevant updates.

Understanding the Three-Layer Workflow

The App Store Changelog skill implements a pipeline that moves from raw data extraction to polished prose through three distinct stages.

Data Collection with Git

The process begins with app-store-changelog/scripts/collect_release_changes.sh, a Bash script that automatically determines the appropriate commit range and extracts relevant metadata. By default, the script compares the most recent Git tag against HEAD, though you can specify custom start and stop points.

The script outputs two structured sections:

  • A chronological list of commits with hashes, dates, and messages
  • A mapping of which files were modified by each commit

This raw data provides the foundational material for your release notes.

Filtering and Triage

Not every commit deserves a place in your App Store listing. The app-store-changelog/references/release-notes-guidelines.md file establishes strict inclusion criteria that filters out internal-only work such as CI configuration changes, dependency bumps, and code refactors.

The guidelines specify which changes are user-visible (features, performance improvements, bug fixes) versus infrastructure-only, ensuring your changelog communicates actual value to customers rather than implementation details.

Draft Generation

The final layer converts the filtered commit list into customer-friendly language. The app-store-changelog/agents/openai.yaml configuration defines the prompt template used by a language model to rewrite technical commit messages into benefit-focused bullets like "Search your library hands-free with the new voice input option."

Extracting Changes with collect_release_changes.sh

The core utility resides at app-store-changelog/scripts/collect_release_changes.sh. This script handles Git traversal and outputs a structured format that downstream tools can consume.

To generate changelog data using the default range (last tag to HEAD):

./app-store-changelog/scripts/collect_release_changes.sh

To specify a custom range between two tags:

./app-store-changelog/scripts/collect_release_changes.sh v2.5.0 v3.0.0

The script produces output in this format:

Repo: /path/to/your/project
Range: v3.3..HEAD

== Commits ==
a1b2c3|2024-03-14|feat(search): add voice input to search bar
d4e5f6|2024-03-16|perf(timeline): lazy-load images to reduce scroll jank

== Files Touched ==
--- a1b2c3 Add voice input UI
SearchBar.swift
VoiceInputManager.swift
--- d4e5f6 Optimize timeline scrolling
TimelineView.swift
ImageCache.swift

This structured output separates metadata from file changes, making it straightforward to identify which features touched which components.

Filtering for User-Facing Changes

The app-store-changelog/SKILL.md file documents the filtering philosophy that distinguishes changelog-worthy updates from invisible maintenance. According to the Release Notes Guidelines referenced in app-store-changelog/references/release-notes-guidelines.md, you should exclude:

  • Continuous integration and deployment changes
  • Dependency version bumps without feature changes
  • Internal refactoring that doesn't alter user experience
  • Code style and formatting updates

Retained changes typically include new features, performance optimizations, bug fixes, and UI improvements that customers can actually see or feel.

The guidelines also specify linguistic style: use active voice, focus on the benefit rather than the implementation, and keep bullets concise and readable.

Automating the Final Draft

While the Bash script handles data extraction, the transformation into App Store-ready text relies on the configuration defined in app-store-changelog/agents/openai.yaml. This file contains the prompt template that instructs the AI to draft release notes from the raw script output.

The workflow documented in docs/skills.json exposes this skill to the broader system, allowing automation tools to trigger the full pipeline: from Git history analysis to polished release notes ready for App Store Connect.

Summary

  • The App Store Changelog skill in Dimillian/Skills generates release notes by analyzing Git commit ranges via collect_release_changes.sh.
  • The script outputs structured commit data and file change mappings from the last tag to HEAD by default.
  • Release Notes Guidelines in release-notes-guidelines.md filter out internal changes and define customer-focused language rules.
  • AI agents configured in openai.yaml transform the filtered commits into benefit-focused bullet points suitable for App Store listings.

Frequently Asked Questions

How do I specify a custom commit range for changelog generation?

Pass the start and end references as arguments to the script. For example, ./app-store-changelog/scripts/collect_release_changes.sh v2.5.0 HEAD captures all changes between version 2.5.0 and the current branch tip. You can use any valid Git reference including tags, branch names, or commit SHAs.

What types of commits should be excluded from App Store changelogs?

According to the release-notes-guidelines.md in the Dimillian/Skills repository, you should exclude CI/CD configuration changes, dependency updates without user-facing features, internal code refactors, and style-only modifications. The guidelines emphasize keeping only changes that directly impact user experience such as new features, performance improvements, and bug fixes.

Can I use this workflow without AI assistance?

Yes. The collect_release_changes.sh script functions independently as a standalone Bash utility. You can manually review its output and write your own release notes based on the filtered commit list and file changes. The AI agent defined in openai.yaml merely automates the rewriting step but is not required for the core functionality.

Where are the filtering guidelines and workflow documented?

The primary documentation resides in app-store-changelog/SKILL.md, which describes the high-level workflow and sample outputs. Detailed inclusion and exclusion rules are specified in app-store-changelog/references/release-notes-guidelines.md. The complete skill catalog entry is available in docs/skills.json at the repository root.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →