AI Skill Report Card

Updating Changelog

A90·Sep 24, 2026·Source: Web

Updating Changelog

Maintains a CHANGELOG.md following Keep a Changelog format. Combines git history analysis with a short Q&A to produce accurate, human-readable release notes — not just a copy of commit messages.

14 / 15
  1. Detect the new version (from package.json, git tag, or ask the user).
  2. Run git diff <last_tag>..HEAD and git log <last_tag>..HEAD --oneline to gather raw changes.
  3. Ask the user clarifying questions (see Workflow).
  4. Categorize changes into: Added, Changed, Fixed, Deprecated, Removed, Security.
  5. Insert a new version block at the top of CHANGELOG.md (below [Unreleased] if present).
Recommendation▾
Add an example showing handling of an existing [Unreleased] section being merged into a new version block
15 / 15

Progress:

  • Step 1: Identify current version and previous release tag/commit
  • Step 2: Gather git evidence (diff + log)
  • Step 3: Ask the user targeted questions
  • Step 4: Draft categorized entries
  • Step 5: Write/update CHANGELOG.md
  • Step 6: Show the diff of the changelog file to the user for approval

Step 1: Identify version

  • Look for a version file (package.json, pyproject.toml, VERSION) or ask: "What version are you publishing? (e.g. 1.3.0)"
  • Find the previous tag: git describe --tags --abbrev=0 (fallback: ask user or use first commit).

Step 2: Gather git evidence

Run and read, don't just summarize blindly:

git log <prev_tag>..HEAD --oneline
git diff <prev_tag>..HEAD --stat
git diff <prev_tag>..HEAD

Use the diff to understand what actually changed (files, functions, logic), not just commit message text — commit messages are often vague or wrong.

Step 3: Ask the user

Ask concise, specific questions based on what the diff shows. Don't ask generic questions — reference the actual changes found. Examples:

  • "I see changes in cart.js and a new Cart model — is this the new 'persistent shopping cart' feature? How would you describe it to a user?"
  • "I see a price calculation change in products.js — was this a bug fix? What was wrong (e.g., wrong price for an item)?"
  • "Any breaking changes, deprecations, or security fixes I should highlight?"
  • "Is this release public-facing (customers see it) or internal-only?"

Keep it to 3-5 questions max. Infer as much as possible from the diff first so you don't ask about things you can already tell.

Step 4: Draft categorized entries

Map to standard categories:

  • Added — new features
  • Changed — changes to existing functionality
  • Fixed — bug fixes
  • Deprecated — soon-to-be removed features
  • Removed — removed features
  • Security — vulnerability fixes

Write entries in plain, user-facing language, one line per change, imperative or past tense, consistent across the file. Reference issue/PR numbers if available in commits.

Step 5: Write CHANGELOG.md

If the file doesn't exist, create it with this header:

Markdown
# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Insert the new version block right after the header (or after [Unreleased] if present):

Markdown
undefined
Recommendation▾
Include guidance for edge case of no prior tags (first release)

Added

  • Persistent shopping cart: items saved to a user's cart now remain even after they leave the site.

Fixed

  • Corrected incorrect price display for cucumbers in the product catalog.
Use today's date (`YYYY-MM-DD`) unless told otherwise. Keep newest version at top.

### Step 6: Confirm
Show the added block (or a diff) and ask for confirmation before considering the task done.
17 / 20

Example 1: Input: Version 1.3.0. Git diff shows new Cart model + cart.js routes, and a fixed unit price constant in products.js (cucumber price corrected from wrong value). Output:

Markdown
undefined
Recommendation▾
Add a brief note on handling monorepos or multiple changelogs

Added

  • Persistent shopping cart: items saved to a user's cart now remain even after they leave the site.

Fixed

  • Corrected incorrect price for cucumbers in the product catalog.

**Example 2:**
Input: Version 2.0.0. Diff shows removed legacy `/api/v1` endpoints and a new auth middleware.
Output:
```markdown

Added

  • New authentication middleware for all API routes.

Removed

  • Legacy /api/v1 endpoints (use /api/v2 instead).
  • Write for humans reading the release, not for developers reading the diff — avoid raw function/variable names unless relevant.
  • One bullet per distinct change; don't merge unrelated changes into one line.
  • Keep tense and style consistent throughout the file (recommend past tense: "Fixed", "Added").
  • Always link to real evidence (diff/commits) before asking questions — don't guess.
  • If unsure whether something is "Added" vs "Changed", ask the user rather than assume.
  • Preserve any existing [Unreleased] section structure; move its contents into the new version block if applicable.
  • Don't paste raw git commit messages verbatim — they're often too technical or vague ("fix bug", "wip").
  • Don't skip reading the actual diff and rely only on commit messages — messages can be misleading.
  • Don't invent changes that aren't in the diff, even if the user's description hints at more.
  • Don't create duplicate version entries — check if the version already exists in the file first.
  • Don't forget the date, or use an inconsistent date format.
0
Grade AAI Skill Framework
Scorecard
Criteria Breakdown
Quick Start
14/15
Workflow
15/15
Examples
17/20
Completeness
15/20
Format
15/15
Conciseness
14/15