Agent skill

Generate Changelog

by open-edge-platform in open-edge-platform/edge-ai-libraries

Generates or updates CHANGELOG.md by analyzing git commit history between two branches, tags, or revisions in ANY git repository or folder.

Apache-2.0Auto-check passedDevelopment

Install Generate Changelog

skills CLI
$ npx skills add open-edge-platform/edge-ai-libraries --skill generate-changelog -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install open-edge-platform/edge-ai-libraries generate-changelog --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/open-edge-platform/edge-ai-libraries.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/generate-changelog .claude/skills/generate-changelog && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
generate-changelog
GitHub stars
171
Token cost
~3.1k tokens
SKILL.md length
1,275 words
Files
3 (incl. scripts, references)
Skills in repo
29
Repo updated
First seen
Licence
Apache-2.0

At a glance

Generates or updates CHANGELOG.md by analyzing git commit history between two branches, tags, or revisions in ANY git repository or folder.

  • Works in 7 steps: Resolve folder path and validate → Infer version and release date → Detect existing CHANGELOG format → …
  • The user asks to create
  • SKILL.md covers Inputs, Workflow, Edge cases and Script reference
  • Runs Shell scripts from its folder; calls git and bash

What it does

Generate Changelog is an agent skill from open-edge-platform/edge-ai-libraries. Generates or updates CHANGELOG.md by analyzing git commit history between two branches, tags, or revisions in ANY git repository or folder. Use this skill whenever the user asks to create, update, generate changelog, draft release notes from git history, or compare branches/tags (e.g., "generate changelog comparing release-2026.0.0 and release-2026.1.0", "update CHANGELOG.md for the time-series-analytics folder", "what changed between v1.0.0 and main", "create release notes for this project"). The skill…

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts and reference files (for example `references/changelog-format.md` and `scripts/extract_commits.sh`).

It sits in Development, covering Changelog and release notes, Git workflow and Forecasting and time series. It works with Git. The repository describes itself as: Libraries, microservices, tools, and other reference software, supporting development of performance-optimized Edge AI applications. The licence is Apache-2.0.

When your agent uses it

  • The user asks to create
  • Generate changelog
  • Draft release notes from git history
  • Compare branches/tags (e.g.

Example prompts

  • “generate changelog comparing release-2026.0.0 and release-2026.1.0”
  • “update CHANGELOG.md for the time-series-analytics folder”
  • “what changed between v1.0.0 and main”
  • “/generate-changelog”

Requirements

  • A Bash shell

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Resolve folder path and validate
  2. Infer version and release date
  3. Detect existing CHANGELOG format
  4. Extract and categorize commits
  5. Format the entry
  6. Write or update CHANGELOG.md
  7. Confirm output

What it can do on your machine

Read from SKILL.md and the folder at commit 0ed0479. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • keepachangelog.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Generate Changelog loads about 3.1k tokens when it runs, and up to ~4.1k if it reads all its reference files. Until then it costs about 206 tokens; SKILL.md has 1,275 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~206
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from open-edge-platform/edge-ai-libraries at commit 0ed0479, republished under its Apache-2.0 licence (© open-edge-platform). 1,275 words, ~3,131 tokens.

Download SKILL.mdSave it as .claude/skills/generate-changelog/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
generate-changelog
description
Generates or updates CHANGELOG.md by analyzing git commit history between two branches, tags, or revisions in ANY git repository or folder. Use this skill whenever the user asks to create, update, generate changelog, draft release notes from git history, or compare branches/tags (e.g., "generate changelog comparing release-2026.0.0 and release-2026.1.0", "update CHANGELOG.md for the time-series-analytics folder", "what changed between v1.0.0 and main", "create release notes for this project"). The skill auto-detects folder paths, infers version numbers from branch/tag names, detects existing CHANGELOG format, and produces well-categorized entries (Added, Changed, Removed, Fixed, Security, Documentation) matching the repository's established style. Works with ANY folder structure or repository.
license
Apache-2.0
metadata.tags
changelog release-notes

Changelog Generator

Generates or updates CHANGELOG.md by extracting and categorizing commits between two git branches or tags. Follows the Keep a Changelog style used by the current repository.

Inputs

Collect from the user (or infer from context):

ParameterDescriptionExample
folder_pathPath to the repository root or to a folder inside the repository; a subfolder automatically scopes commit extraction to that path/path/to/repo, microservices/time-series-analytics, ./my-project
base_refStarting branch, tag, or commitrelease-2026.0.0, v1.0.0, main, commit SHA
target_refEnding branch, tag, or commitrelease-2026.1.0, v2.0.0, develop
version_labelVersion string for CHANGELOG entry2026.1.0, v1.2.0
release_dateRelease month and year (optional)June 2026, January 2024
changelog_pathOutput path for CHANGELOG.md<folder_path>/CHANGELOG.md (default)
Path Semantics
  • If folder_path points to the repository root, changelog generation covers the entire repository unless a narrower scope is supplied.
  • If folder_path points to a subfolder inside the repository, that subfolder becomes the default commit scope automatically.
  • If the user wants to write CHANGELOG.md in one location but scope commits to another path, call extract_commits.sh with the repository root as the first argument and the scope path as the optional fourth argument.
Folder Path Resolution

If folder_path is not fully specified:

  1. Search by name: If user says "time-series-analytics" but relative path isn't found, search the workspace recursively for a matching folder name.

    bash
    find <workspace_root> -type d -name "*time-series-analytics*" 2>/dev/null | head -1
  2. Resolve relative paths: If a relative path is given, resolve it from current working directory:

    bash
    cd <workspace_root> && realpath <relative_path>
  3. Validate: Confirm the folder is a git repository:

    bash
    git -C <folder_path> rev-parse --is-inside-work-tree
  4. Determine commit scope:

    • If <folder_path> is the repository root, the default scope is the full repository.
    • If <folder_path> is a repository subfolder, use that subfolder as the default scope.
    • If needed, keep both values: repo_root for git operations and scope_path for path-limited history queries.
Version Label Inference

If version_label is not provided, attempt to infer from target_ref:

  1. From branch name: Extract version from naming patterns:

    • release-2026.1.0 → 2026.1
    • release-2026.1.0 → 2026.1.0
    • v1.2.0 → 1.2.0
    • v2.0.0-rc1 → 2.0.0-rc1
  2. From git tag: If target_ref is a tag like v2.1.0, strip the v prefix.

  3. Fallback: If inference fails, ask the user:

    "I couldn't infer a version from <target_ref>. What version label should I use? (e.g., 2026.1.0, v1.2.0)"

If release_date is not provided, use the commit date of the target commit.

GitHub/Remote URL Detection
bash
git -C <folder_path> remote get-url origin

Strip .git suffix. Supports GitHub, GitLab, Gitea, and other hosting platforms.

Workflow

Step 1 – Resolve folder path and validate
  1. If folder_path is incomplete or ambiguous, use the folder path resolution logic from the Inputs section.

  2. Validate the path is inside a git repository:

    bash
    git -C <folder_path> rev-parse --is-inside-work-tree

    If this fails, inform the user the path is not a git repository or repository subfolder.

  3. Resolve the repository root and the effective commit scope:

    bash
    repo_root=$(git -C <folder_path> rev-parse --show-toplevel)

    Treat <folder_path> as the scope when it is a subfolder. If <folder_path> equals repo_root, use the full repository unless the user supplied a narrower scope.

  4. Verify both base_ref and target_ref exist:

    bash
    git -C "$repo_root" rev-parse <base_ref> >/dev/null 2>&1
    git -C "$repo_root" rev-parse <target_ref> >/dev/null 2>&1

    If either fails, list available branches and tags:

    bash
    git -C "$repo_root" branch -a && git -C "$repo_root" tag
Step 2 – Infer version and release date
  1. If version_label is missing, apply the version inference logic from the Inputs section.
  2. If release_date is missing, extract the commit date of target_ref:
    bash
    git -C "$repo_root" log -1 --format=%cs <target_ref>
    Format as "Month Year" (e.g., "June 2026").
Step 3 – Detect existing CHANGELOG format

Before categorizing commits, read the existing CHANGELOG.md (if present):

  1. Check if <folder_path>/CHANGELOG.md exists.

  2. If it exists, analyze its structure:

    • Look for section headers: Scan for patterns like ## [Version], ### Added, ### Fixed, etc.
    • Infer category order: Note which sections appear and in what order.
    • Detect categorization style: Is it Keep a Changelog style? Custom sections? Hybrid?
    • Example inference:
      # Changelog
      ## [2.0.0]
      ### Added
      ### Changed
      ### Fixed
      → Infer: Use Added, Changed, Fixed (no Security, Documentation, Removed)
  3. If no CHANGELOG.md exists or it has no clear structure, use the default keyword-based categorization (described in Step 4).

Step 4 – Extract and categorize commits
  1. Get the commit list between base and target refs:

    bash
     bash .github/skills/generate-changelog/scripts/extract_commits.sh \
        <folder_path> <base_ref> <target_ref> [scope_path]

    Usage notes:

    • Use <folder_path> only for full-repository changelogs when it points to the repo root.
    • Use a repository subfolder as <folder_path> for folder-specific changelogs.
    • Use [scope_path] only when <folder_path> is the repo root but commit extraction should be narrowed to a different path.
  2. For each commit, classify into a section based on the detected format from Step 3.

  3. If using default keyword-based categorization, apply these rules in order (first match wins):

    SectionKeywords / patterns (case-insensitive)
    Securitysecurity, cve, vulnerability, bump, trivy, patch, upgrade (dependency)
    Fixedfix, fixed, repair, resolve, hotfix, revert
    Addedadd, added, new, introduce, enable, support, feature, implement
    Removedremove, removed, delete, deleted, drop, deprecat
    Documentationdoc, docs, documentation, readme, changelog, typo, spelling
    Changedeverything else

    [!TIP] If a commit is ambiguous, prefer the section that better serves the reader. Merge commits and automated bot commits (e.g., Dependabot) should go in Security or Changed as appropriate.

  4. Also collect PR numbers referenced in commit messages (pattern (#\d+) or #\d+).

Show full SKILL.md (511 more words)Show less
Step 5 – Format the entry

Format reference: See references/changelog-format.md for the exact CHANGELOG structure and style template used by this repository.

Format the new version block using the detected CHANGELOG style from Step 3:

If Keep a Changelog or similar style:

markdown
## [<version>] - <release_date>

### Added
- Feature one ([#123])
- Feature two ([abc1234])

### Changed
- Behavior updated ([#124])

### Fixed
- Bug resolved ([#125])

### Security
- Vulnerability patched ([#126])

[#123]: <repo_url>/pull/123
[#124]: <repo_url>/pull/124
[#125]: <repo_url>/pull/125
[#126]: <repo_url>/pull/126
[abc1234]: <repo_url>/commit/abc1234

If custom sections detected: Match the detected sections and order.

Formatting rules:

  • Write each bullet in past tense, sentence case.
  • Append PR/commit reference at the end: ([#NN]) for PRs, ([hash]) for commits.
  • Omit sections with no entries.
  • Include reference links at the bottom of the block.
Step 6 – Write or update CHANGELOG.md
  1. If CHANGELOG.md does not exist: Create it with a header + new version block:

    markdown
    # Changelog
    
    All notable changes to this project will be documented in this file.
    
    ## [<version>] - <release_date>
    ...
  2. If CHANGELOG.md exists: Insert the new version block immediately after the introductory paragraph (or after # Changelog header) and before any existing ## [...] sections. Preserve all existing content exactly.

  3. If version already exists in CHANGELOG.md: Ask the user whether to replace or skip:

    "Version <version> already exists in CHANGELOG.md. Replace it, append a new entry, or skip?"

  4. Write to <folder_path>/CHANGELOG.md (or custom changelog_path if provided).

Step 7 – Confirm output

Print a summary:

Changelog generated: <folder_path>/CHANGELOG.md
Version: <version> (<release_date>)
Commits processed: <count>
  Added: N | Changed: N | Fixed: N | Security: N | Documentation: N | Removed: N

Comparison: <base_ref>...<target_ref>
Repository: <repo_url>

Edge cases

  • Folder path not found: If searching for a folder name returns multiple matches or no matches, list results and ask the user to clarify which one to use.

  • Repo root vs scoped folder: If the user asks for a folder-specific changelog but gives the repository root, either resolve a narrower folder path or call extract_commits.sh <repo_root> <base_ref> <target_ref> <scope_path> explicitly.

  • Detached HEAD or missing refs: If base_ref or target_ref don't exist, list available branches and tags:

    bash
     git -C "$repo_root" branch -a && git -C "$repo_root" tag

    Ask the user to provide valid refs.

  • No commits found: If git log <base_ref>..<target_ref> returns nothing, the refs may be identical or in the wrong order. Suggest:

    • Running git fetch --all to ensure all remote branches are available
    • Reversing the ref order if needed
    • Confirming the refs point to different commits
  • Shallow clone: If the repository is a shallow clone, commit history may be incomplete. Suggest running:

    bash
     git -C "$repo_root" fetch --unshallow
  • Duplicate version in CHANGELOG.md: If the version already exists, ask the user:

    "Version <version> is already in CHANGELOG.md. Should I replace it, append a new entry, or skip?"

  • Empty or malformed existing CHANGELOG.md: If the existing CHANGELOG.md has no clear structure, treat it as a new file and use the default keyword-based categorization. Warn the user that the new entry may not match the existing format.

  • No GitHub/remote URL: If git remote get-url origin fails or returns a non-standard URL (e.g., SSH, local path), skip reference links or ask the user for the repository URL.

Script reference

The helper script supports both repository-wide and folder-scoped extraction:

bash
bash .github/skills/generate-changelog/scripts/extract_commits.sh <repo_or_folder_path> <base_ref> <target_ref> [scope_path]
  • <repo_or_folder_path> may be the repository root or a subfolder inside the repository.
  • When <repo_or_folder_path> is a subfolder, that subfolder is used as the commit scope automatically.
  • [scope_path] is optional and is only needed when the first argument is the repository root but a narrower commit scope is desired.

© open-edge-platform, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts, references) in .github/skills/generate-changelog of open-edge-platform/edge-ai-libraries.

  • SKILL.md
  • references/changelog-format.md
  • scripts/extract_commits.sh

Open the folder on GitHubat commit 0ed0479

Compare with similar skills

Generate Changelog next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Generate Changelog compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Generate Changelog this skillopen-edge-platform/edge-ai-libraries171—~3.1kAutomated safety check: PassApache-2.0
Release Bumpjamiepine/voicebox57k—~1.1kAutomated safety check: PassMIT
Git Workflow and Versioningaddyosmani/agent-skills104k2 repos~3.5kAutomated safety check: NotesMIT
Go-Redis Release Preparationredis/go-redis22k—~1.1kAutomated safety check: PassBSD-2-Clause
Hunk Release Workflowmodem-dev/hunk9.6k—~3.8kAutomated safety check: PassMIT
pybind11 Release Preparationpybind/pybind1118k—~1.7kAutomated safety check: PassCustom licence

Similar skills

  • Release Bump

    jamiepine/voicebox

    Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.

    57k GitHub stars~1.1k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Git Workflow and Versioning

    addyosmani/agent-skills

    Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.

    104k GitHub starsUsed in 2 repos~3.5k tokens
    DevelopmentAuto-check: notes
  • Official

    Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.

    22k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Hunk Release Workflow

    modem-dev/hunk

    Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.

    9.6k GitHub stars~3.8k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Opens the pybind11 release-preparation pull request: picking the release base, bumping the version in common.h and integrating the changelog, following docs/release.rst.

    18k GitHub stars~1.7k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • AionUi Version Bump

    iOfficeAI/AionUi

    Automates an AionUi release: checks the latest AionCore release and its artifacts, updates package.json, writes the changelog, opens a PR and tags the release.

    33k GitHub stars~2.1k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from open-edge-platform/edge-ai-libraries

All 29 skills in this repo
  • Time Series Analytics User

    open-edge-platform/edge-ai-libraries

    Build a new time-series analytics use case on top of the deployed Time Series Analytics microservice — bring it up with Docker Compose (from a repo clone, or by fetching the compose files from…

    171 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Vss Add Nest Module

    open-edge-platform/edge-ai-libraries

    Scaffolds and wires a new NestJS service/module for the Video Search & Summarization sample app's pipeline-manager using the repo's real conventions.

    171 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Chatqna Helm Deploy

    open-edge-platform/edge-ai-libraries

    Deploy Chat Question-and-Answer Core to Kubernetes using Helm (OpenVINO CPU, OpenVINO GPU, or Ollama), including values.yaml configuration, helm install/upgrade, deployment verification, uninstall…

    171 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Vss Deploy

    open-edge-platform/edge-ai-libraries

    Deploys and manages VSS through setup.sh and its Docker Compose overlays.

    171 GitHub stars~4.1k tokensUpdated today
    Auto-check passed
  • Vss Deploy Helm

    open-edge-platform/edge-ai-libraries

    A skill your agent uses whenever a developer needs to deploy VSS to Kubernetes, helm install VSS, configure values.yaml for VSS, or run VSS on k8s with GPU/vLLM for the…

    171 GitHub stars~3.8k tokensUpdated today
    Auto-check passed
  • Vss Dlstreamer Pipeline

    open-edge-platform/edge-ai-libraries

    Helps developers understand and safely modify the DLStreamer/GStreamer Pipeline Server (EVAM) video ingestion pipelines in the video-search-and-summarization sample app.

    171 GitHub stars~1.8k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Generate Changelog

What does Generate Changelog do?

Generates or updates CHANGELOG.md by analyzing git commit history between two branches, tags, or revisions in ANY git repository or folder. Generate Changelog is an agent skill from open-edge-platform/edge-ai-libraries.md by analyzing git commit history between two branches, tags, or revisions in ANY git repository or folder.

When should I use Generate Changelog?

Generate Changelog fits situations like: the user asks to create; generate changelog; draft release notes from git history; compare branches/tags (e.g.

How do I install Generate Changelog in Claude Code?

Run `npx skills add open-edge-platform/edge-ai-libraries --skill generate-changelog -a claude-code`. Or copy the skill folder (.github/skills/generate-changelog in open-edge-platform/edge-ai-libraries) into .claude/skills/generate-changelog in your project. Claude Code loads it when a task matches its description.

How do I install Generate Changelog in Codex?

Run `npx skills add open-edge-platform/edge-ai-libraries --skill generate-changelog -a codex`. Or copy the skill folder (.github/skills/generate-changelog in open-edge-platform/edge-ai-libraries) into .agents/skills/generate-changelog in your project. Codex loads it when a task matches its description.

Can I use Generate Changelog in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add open-edge-platform/edge-ai-libraries --skill generate-changelog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-changelog, .gemini/skills/generate-changelog, .github/skills/generate-changelog and .opencode/skills/generate-changelog in your project.

What does Generate Changelog need to run?

Going by SKILL.md and its folder, Generate Changelog needs a shell for the scripts in its folder and the command-line tools its instructions call (git and bash). Our summary lists: A Bash shell.

Does Generate Changelog access the network?

SKILL.md names 1 domain. As links in the text: keepachangelog.com. This is read from the text; nothing was executed.

Is Generate Changelog safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Generate Changelog use?

Generate Changelog is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Generate Changelog use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 984 tokens, read only when the agent opens those files.

What are the alternatives to Generate Changelog?

Skills that share tags, products or a category with Generate Changelog: Release Bump (jamiepine/voicebox, 57k stars), Git Workflow and Versioning (addyosmani/agent-skills, 104k stars), Go-Redis Release Preparation (redis/go-redis, 22k stars) and Hunk Release Workflow (modem-dev/hunk, 9.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Generate Changelog?

open-edge-platform (a GitHub organization) maintains it in open-edge-platform/edge-ai-libraries, which has 171 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 10, 2026.

Source: open-edge-platform/edge-ai-libraries on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.