Finch is a CLI tool written in Swift that generates well-formatted changelogs by comparing two versions of a project (git tags or branches). It parses commit messages using either the Conventional Commits specification or a custom delimited tag convention, then organizes entries into configurable sections with customizable formatting templates. The tool can automatically resolve the two most recent semantic version tags or branches, fetch from remote, and output a changelog with contributor handles, pull request links, and breaking change descriptions. The architecture is a monolith with clear separation into three layers: FinchApp (application logic, command routing, configuration loading), FinchCore (core models, commit parsing, section formatting, regex utilities), and FinchUtilities (shell execution, file resolution, output handling). It uses Swift's package manager with dependencies on ArgumentParser, Yams (YAML), and Version (semver). The codebase demonstrates strong engineering practices with comprehensive tests, snapshot testing, and a well-designed configuration merging system. Key features include support for both Conventional Commits and delimited tag styles, multi-entry commits (one commit appearing in multiple sections), breaking change detection via `!` or `BREAKING CHANGE:` footers, configurable output templates with placeholders for tags, message, contributor, and hyperlinks, and cascading configuration from home directory, project directory, environment variables, and command-line arguments.