phly/keep-a-changelog
Generates and maintains a Keep a Changelog–style CHANGELOG.md for PHP projects. Helps you create standardized release notes, add entries, and manage version sections consistently, making it easier to track changes and publish clear, human-readable changelogs.
Install via Composer: composer require --dev phly/keep-a-changelog. Run the CLI to initialize a changelog: vendor/bin/changelog init, which creates a valid CHANGELOG.md with the standard header and ## [Unreleased] section. The first practical use case is adding a new change while developing: vendor/bin/changelog add --type added --desc "New feature X" — this appends to the ## [Unreleased] section under the appropriate category header (e.g., ### Added). Entries are auto-formatted per Keep a Changelog conventions.
composer.json scripts (e.g., "changelog:add": "changelog add") and integrate via husky or Git hooks to validate or pre-format entries.changelog check to fail builds if CHANGELOG.md is out of sync or missing entries before a PR merge.changelog release <version> --date="YYYY-MM-DD" — it promotes ## [Unreleased] content to a new versioned section and starts a fresh ## [Unreleased].changelog list --type fixed to audit recent fixes before a release, or changelog show --version v1.2.3 to preview release notes for a tag.## [Unreleased] and ## [<version>] headers — avoid renaming or changing casing manually, or the tool may misplace entries. Use --type flags strictly (added, changed, fixed, removed, deprecated, security).YYYY-MM-DD) with the --date flag during release; mismatches can cause invalid links or sorting issues.CHANGELOG.md, ensure no extra blank lines break category detection. The parser is fragile around indentation and spacing — use changelog validate to catch issues.changelog add --custom-section "Security" for non-standard categories, but prefer using built-in types for interoperability.release before tagging — if the version already exists in Git, links may point to non-existent tags. Confirm git describe --tags --abbrev=0 matches the release version.How can I help you explore Laravel packages today?