126f2a4d-6d2e-461d-af9a-b074ed66dd1b

changelog-automation

Automate changelog generation from commits, PRs, and releases following Keep a Changelog format. Use when setting up release workflows, generating release notes, or standardizing commit conventions.

completed1.0Benchmark generated 2026-02-15 07:11:09.481Z

Core metrics

Task completion

5 / 5

100%

Execution duration

13m 19s

Created 2026-02-15 06:57:36.653Z

Token total

1,930,868

Input 1,909,430 · Output 21,438

Tool calls

43

Retries 5%

Tool success rate

93%

0 permission events

Skill overview

Source: /Users/mingzhe/.agents/skills/changelog-automation/SKILL.md

Automate changelog generation from commits, PRs, and releases following Keep a Changelog format. Use when setting up release workflows, generating release notes, or standardizing commit conventions.

verified

Evidence refs: marker-1, marker-2, marker-3

Can execute: Configure Conventional Commits Validation

verified

Evidence refs: marker-5, marker-20

Can execute: Implement Automated Changelog Generation

verified

Evidence refs: marker-21, marker-28

Can execute: Create GitHub Actions Release Workflow

verified

Evidence refs: marker-29, marker-33

Can execute: Configure git-cliff for Enhanced Changelog

verified

Evidence refs: marker-34, marker-42

Can execute: Create Release Documentation and Guidelines

verified

Evidence refs: marker-43, marker-49

Constraint coverage: Must follow Keep a Changelog format (Added, Changed, Deprecated, Removed, Fixed, Security sections)

verified

Evidence refs: marker-1, marker-2

Constraint coverage: Must implement Conventional Commits validation (feat, fix, docs, etc.)

verified

Evidence refs: marker-1, marker-2

Constraint coverage: Must support semantic versioning (MAJOR.MINOR.PATCH) based on commit types

verified

Evidence refs: marker-1, marker-2

Benchmark taskset (TASKSET.md)

Taskset - changelog-automation

Goal

Implement automated changelog generation following Keep a Changelog format and Conventional Commits specification. Set up tooling to automatically track changes from commits, generate release notes, and manage semantic versioning without manual intervention.

Constraints

  • Must follow Keep a Changelog format (Added, Changed, Deprecated, Removed, Fixed, Security sections)

  • Must implement Conventional Commits validation (feat, fix, docs, etc.)

  • Must support semantic versioning (MAJOR.MINOR.PATCH) based on commit types

  • Must integrate with CI/CD for automated releases

  • Must handle breaking changes explicitly with proper warnings

  • Should validate commit messages before acceptance

  • Should generate both CHANGELOG.md and release notes

  • Must not allow malformed commit messages to be merged

Tasks

Task 1: Configure Conventional Commits Validation

Set up commitlint with husky to enforce Conventional Commits specification. Configure rules for commit message types (feat, fix, docs, style, refactor, perf, test, chore, ci, build, revert), scope validation, subject case requirements, and maximum length constraints. Ensure pre-commit hooks reject non-conforming messages.

Deliverables:

  • commitlint.config.js with custom rules

  • Husky git hooks configured for commit-msg validation

  • Documentation of allowed commit types and scopes

  • Test validation by attempting non-conforming commits

Task 2: Implement Automated Changelog Generation

Set up standard-version or semantic-release to automatically generate CHANGELOG.md from conventional commits. Configure changelog sections mapping (feat→Features, fix→Bug Fixes, perf→Performance), commit grouping, issue linking format, and version bump logic. Include both public-facing changelog and internal release notes templates.

Deliverables:

  • .versionrc.js or release.config.js configuration

  • CHANGELOG.md template structure

  • Scripts for manual and automated releases

  • Example changelog entries from test commits

Task 3: Create GitHub Actions Release Workflow

Build CI/CD pipeline that automatically creates releases on main branch merges. Workflow should analyze commits since last release, determine version bump (major/minor/patch), update CHANGELOG.md, create git tags, generate GitHub releases with categorized notes, and optionally publish packages. Include manual trigger option for emergency releases.

Deliverables:

  • .github/workflows/release.yml

  • Automated version bumping logic

  • GitHub Release with generated notes

  • Documentation for manual release triggers

Task 4: Configure git-cliff for Enhanced Changelog

Implement git-cliff as alternative/complementary changelog generator with custom templates. Configure commit parsing rules, changelog structure with grouped sections, GitHub PR linking, contributor attribution, and custom formatting. Enable both full changelog generation and range-based release notes.

Deliverables:

  • cliff.toml configuration file

  • Custom changelog templates

  • Scripts for full and incremental generation

  • Comparison documentation vs standard-version approach

Task 5: Create Release Documentation and Guidelines

Write comprehensive team documentation covering commit message conventions, breaking change procedures, version bumping rules, release process workflows, and troubleshooting guides. Include examples of good/bad commit messages, breaking change format, emergency release procedures, and rollback strategies.

Deliverables:

  • CONTRIBUTING.md with commit guidelines

  • Release process documentation

  • Breaking change template and examples

  • Team training materials with examples

Acceptance Checklist

  • Commitlint rejects commits not following conventional format

  • Husky hooks prevent non-conforming commits from being created

  • CHANGELOG.md automatically updates on version bump with proper sections

  • Semantic version correctly increments (patch for fix, minor for feat, major for breaking)

  • Breaking changes are clearly marked with ! or BREAKING CHANGE footer

  • GitHub Actions workflow creates release on main branch push

  • GitHub Release includes categorized notes (Features, Bug Fixes, etc.)

  • Git tags follow semantic versioning pattern (v1.2.3)

  • Issue references in commits become clickable links in changelog

  • PR numbers are linked in generated release notes

  • Manual release trigger works with specified version type

  • git-cliff generates equivalent changelog to standard-version

  • Documentation includes 5+ examples of valid commit messages

  • Team guidelines specify all allowed commit types and scopes

  • Rollback procedure is documented and tested

Required Output Schema

{
  "taskset_id": "changelog-automation",
  "setup_time_minutes": 0,
  "tasks_completed": 0,
  "validation_results": {
    "commitlint_working": false,
    "hooks_installed": false,
    "changelog_generates": false,
    "versioning_correct": false,
    "breaking_changes_handled": false,
    "ci_workflow_exists": false,
    "releases_automated": false,
    "issue_linking_works": false,
    "documentation_complete": false
  },
  "artifacts_created": {
    "config_files": [],
    "workflows": [],
    "documentation": [],
    "test_commits": []
  },
  "metrics": {
    "commit_types_configured": 0,
    "changelog_sections": 0,
    "automation_coverage_percent": 0,
    "validation_rules_count": 0
  },
  "notes": ""
}

Task execution overview

Configure Conventional Commits Validationcompleted

Start: 2026-02-15 06:58:01.614Z · End: 2026-02-15 07:01:21.493Z

Duration: 3m 20s · Tokens: N/A

Implement Automated Changelog Generationcompleted

Start: 2026-02-15 07:01:21.493Z · End: 2026-02-15 07:02:25.344Z

Duration: 1m 4s · Tokens: N/A

Create GitHub Actions Release Workflowcompleted

Start: 2026-02-15 07:02:25.344Z · End: 2026-02-15 07:03:11.170Z

Duration: 46s · Tokens: N/A

Configure git-cliff for Enhanced Changelogcompleted

Start: 2026-02-15 07:03:11.170Z · End: 2026-02-15 07:04:54.976Z

Duration: 1m 44s · Tokens: N/A

Create Release Documentation and Guidelinescompleted

Start: 2026-02-15 07:04:54.976Z · End: 2026-02-15 07:09:50.342Z

Duration: 4m 55s · Tokens: N/A

Execution timeline

Playback

Timeline selection jumps playback to the corresponding timestamp.