vensas/Auto Changelog
AI-powered changelog generator using the GitHub Models API. Analyzes PR diffs and updates CHANGELOG.md files with Keep a Changelog-formatted entries.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| ai-api-key | GitHub Models API key (a PAT with models:read permission, or a GitHub Copilot token) | yes | — |
| github-token | GitHub token used to fetch linked issue details and post a PR comment. If omitted, no PR comment is posted. | no | — |
| pr-number | Pull request number | yes | — |
| pr-title | Pull request title | yes | — |
| pr-body | Pull request body/description (used to extract closing-keyword issue references) | no | "" |
| base-ref | Base branch name (e.g. main) | yes | — |
| packages | JSON array of package configurations. Each entry must include: - name: Short identifier for the package (e.g. "frontend") - path: Relative path to the package root (e.g. "src/frontend") - changelogFile: Changelog filename inside that path (usually "CHANGELOG.md") - description: One-line description used as context for the AI - patterns: Array of regex patterns matching files that belong to this package Example: '[{"name":"api","path":"src/api","changelogFile":"CHANGELOG.md","description":"Node.js REST API","patterns":["^src/api/"]}]' | yes | — |
| project-context | Short description of your project, included in the AI prompt for more accurate entries | no | "" |
| model | GitHub Models model identifier to use for generation | no | gpt-4.1 |
| github-models-api | GitHub Models API endpoint URL | no | https://models.github.ai/inference/chat/completions |
| max-diff-chars | Maximum number of characters from the per-package diff to send to the AI | no | 8000 |
| dry-run | When "true", generates entries and prints them to the workflow summary without modifying any CHANGELOG.md files | no | false |
| branch-ref | Branch name to commit and push changelog changes back to (e.g. github.event.pull_request.head.ref). If empty, files are updated but no commit is made. | no | "" |
| commit-message | Commit message used when pushing generated changelog entries | no | chore: update changelogs with AI-generated entries |
Outputs
| name | description |
|---|---|
| has-changes | "true" if any CHANGELOG.md files were updated, "false" otherwise |
| updates | Comma-separated list of packages updated with their version bump type (e.g. "frontend: minor, api: patch") |
| error-message | Error message if changelog generation failed |
| generated-entry | Raw markdown text of the generated changelog entries (set even in dry-run mode) |
| skipped | "true" if the action was skipped due to bot-loop detection |
| committed | "true" if a changelog commit was pushed to the branch |
| cleared | "true" if the [Unreleased] sections were cleared because no source-file changes were detected |