make-changelog
Skill2 starsChanged 43 days agoMITView on GitHub
Create initial CHANGELOG.md with unreleased features using Keep a Changelog format
1 other project uses a version of this.
Adopted by
Most recently taken up by
- diegoos/skillstheir own version, first seen Nov 2, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- diegoos/skills★ 3same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- AGENTS.mdAGENTS.md
- changelog-bump-verSkill
- gh-copilot-review-readSkill
- gh-copilot-review-resolveSkill
- gh-copilot-reviewSkill
- gh-cr-submitSkill
- gh-issue-fixSkill
- gh-issueSkill
- gh-pr-mergeSkill
- gh-protect-default-branchSkill
- gh-pr-reviewSkill
- gh-prSkill
- gh-releaseSkill
- git-branchSkill
- git-commitSkill
- git-pushSkill
- mir-skills-installSkill
- mir-skills-updateSkill
- python-venvSkill
- save-planSkill
- session-noteSkill
- work-reportSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
30 rules. About 0 are common, 21 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈21
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Create initial CHANGELOG.md file using Keep a Changelog format
- Distinctive: line 15
Place all extracted entries under [Unreleased] section (no version number yet)
- Distinctive: line 24
Use this skill when:
- Distinctive: line 33
Must be a git repository
- Distinctive: line 34
Must have main or master branch
- Very specific: line 49
Not a git repo → "Error: This skill requires a git repository for context gathering."
- Very specific: line 51
No main/master branch → "Error: No main or master branch found.
- Distinctive: line 59
If you need to fetch detailed information about changelog format or versioning rules during execution, use the WebFetch tool with these …
- Distinctive: line 69
If fails → error: "Error: This skill requires a git repository for context gathering."
- Distinctive: line 75
If exists → error: "Error: CHANGELOG.md already exists.
- Distinctive: line 84
If that fails, try:
- Distinctive: line 91
If neither exists → error: "Error: No main or master branch found.
- Distinctive: line 100
If found, read README.md using Read tool and parse for:
- Distinctive: line 137
Look for directories indicating major features:
- Very specific: line 151
Commit messages with feat: prefix
- Distinctive: line 152
Commit messages with feature-indicating keywords
- Very specific: line 164
Do not place docs-only, formatting-only, CI-only, or dependency-only work into Misc
- Very specific: line 165
When unsure between Added and Misc, prefer Added only for clearly new capabilities.
- Distinctive: line 169
Start with capital letter
- Distinctive: line 186
If fewer than 10 candidates found, include all
- Distinctive: line 187
If more than 10 candidates found:
- Distinctive: line 188
Keep top 10 in CHANGELOG
- Very specific: line 232
All features go under ## [Unreleased] section
- Distinctive: line 233
No version number or date yet
- Distinctive: line 234
Keep empty sections (Changed, Deprecated, Removed, Fixed, Security, Misc) present
- Very specific: line 235
Place each extracted entry in either ### Added or ### Misc with - bullet format
- Very specific: line 236
Use ### Misc only for notable code or logic changes and merged PRs that do not fit the standard Keep a Changelog sections
- Distinctive: line 240
Use the Write tool to create the file at project root:
- Distinctive: line 289
Look for these section headers (case-insensitive):
- Very specific: line 316
Treat descriptive squash-merge titles as valid candidates for ### Misc when they represent notable source changes without a cleaner …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
What I do
- Create initial CHANGELOG.md file using Keep a Changelog format
- Extract up to 10 major features from README.md, commit history, and codebase structure
- Place all extracted entries under [Unreleased] section (no version number yet)
- Classify entries into Added or Misc based on whether they describe new capabilities or notable catch-all code changes
- Include empty sections for Changed, Deprecated, Removed, Fixed, Security, and Misc at the end
- Note adherence to Semantic Versioning for future releases
- Notify if additional important features exist beyond the top 10
- Provide guidance on moving to versioned releases later
When to use me
Use this skill when:
- Starting changelog documentation for an existing project
- Project has no CHANGELOG.md file yet
- You want to document current state before making first release
- You need a Keep a Changelog compliant starting point
Prerequisites
Required:
- Must be a git repository
- Must have main or master branch
Optional:
- README.md file (used for feature extraction if present)
Validation checks:
# Check if git repo
git rev-parse --git-dir
# Check if CHANGELOG.md already exists
[ -f CHANGELOG.md ]Error messages:
- Not a git repo →
"Error: This skill requires a git repository for context gathering." - CHANGELOG.md exists →
"Error: CHANGELOG.md already exists. This skill is for first-time changelog creation only." - No main/master branch →
"Error: No main or master branch found. Please create a default branch first."
References
This skill follows:
- Keep a Changelog: https://keepachangelog.com/en/1.1.0/
- Semantic Versioning: https://semver.org/spec/v2.0.0.html
If you need to fetch detailed information about changelog format or versioning rules during execution, use the WebFetch tool with these URLs.
Workflow
Step 1: Validate Prerequisites
# Check if git repository
git rev-parse --git-dir 2>/dev/nullIf fails → error: "Error: This skill requires a git repository for context gathering."
# Check if CHANGELOG.md already exists
[ -f CHANGELOG.md ] && echo "exists" || echo "not found"If exists → error: "Error: CHANGELOG.md already exists. This skill is for first-time changelog creation only."
Step 2: Identify Default Branch
# Detect default branch name
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@'If that fails, try:
# Check which branch exists: main or master
git show-ref --verify refs/heads/main 2>/dev/null && echo "main" || \
git show-ref --verify refs/heads/master 2>/dev/null && echo "master"If neither exists → error: "Error: No main or master branch found. Please create a default branch first."
Step 3: Gather Context
3a. Check for README.md:
[ -f README.md ] && echo "found" || echo "not found"If found, read README.md using Read tool and parse for:
- "Features" section
- "What it does" section
- "Capabilities" section
- Bullet lists describing functionality
- High-level feature descriptions
3b. Analyze first-parent history on main/master:
# Get first-parent commits from default branch
git log origin/main --first-parent --oneline
# or
git log origin/master --first-parent --onelineApply smart filtering to identify Added and Misc candidates:
Include commits with:
feat:,feature:,add:,added:,implement:,create:- Keywords: "api", "database", "auth", "cli", "ui", "backend", "frontend", "dashboard", "integration"
refactor:only if mentions major component (e.g., "refactor: migrate to TypeScript")- Descriptive squash-merge or PR titles that indicate code or logic changes not already covered by standard sections
Exclude commits with:
docs:,doc:,documentation:chore:,build:,ci:,style:,format:test:(unless adding testing framework: "add jest", "add cypress", etc.)- Version-related: "bump", "release", "version"
- Dependencies: "update deps", "upgrade", "npm update", "yarn upgrade"
- Trivial changes: "fix typo", "update readme", "add comment", "format code"
- Generic merge subjects with no useful description (e.g., "Merge pull request #123 ...")
3c. Scan project structure:
ls -laLook for directories indicating major features:
src/→ Core application source codeapi/,backend/→ REST API or backend servicecli/,cmd/→ CLI toolweb/,frontend/,ui/→ Web interfacedocker/,k8s/→ Container deploymentdb/,migrations/→ Database integrationauth/→ Authentication systemdocs/→ Documentation (only mention if substantial)
Step 4: Extract, Classify, and Rank Entries
Priority ranking (highest to lowest):
- Explicit features from README.md sections
- Commit messages with
feat:prefix - Commit messages with feature-indicating keywords
- Major directory structure inferences
Deduplication logic:
- Merge similar features from different sources
- Example: "Add REST API" (commit) + "API endpoints" (README) → "RESTful API with endpoints"
- Group related commits
- Example: "Add JWT auth", "Add login endpoint", "Add user sessions" → "Authentication system with JWT"
Section classification rules:
### Added→ new features, new subsystems, first-time integrations, or newly introduced user-facing capabilities### Misc→ notable merged PRs or source-code / program-logic changes that affect behavior, architecture, or maintainability but do not cleanly fitAdded,Changed,Fixed,Removed,Deprecated, orSecurity- Do not place docs-only, formatting-only, CI-only, or dependency-only work into
Misc - When unsure between
AddedandMisc, preferAddedonly for clearly new capabilities; otherwise useMisc
Entry formatting:
- Convert to past tense if needed
- Start with capital letter
- Concise: 50-80 characters max
- Focus on user-facing or architectural significance
- Examples:
Initial project scaffolding and CLI interfaceRESTful API with JWT authenticationPostgreSQL database integration with migrationsDocker deployment configurationWeb-based admin dashboardReal-time WebSocket notificationsComprehensive test suite with 80% coverageCI/CD pipeline with GitHub ActionsAPI documentation with OpenAPI/SwaggerRole-based access control (RBAC)
Feature selection:
- Select top 10 most significant features based on ranking
- If fewer than 10 candidates found, include all
- If more than 10 candidates found:
- Keep top 10 in CHANGELOG
- Note 2-3 examples of additional features for user review
Balance the selected entries across ### Added and ### Misc based on classification. ### Misc may remain empty if no suitable catch-all code changes are found.
Step 5: Generate CHANGELOG.md
Template structure:
# 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).
## [Unreleased]
### Added
- [Feature 1]
- [Feature 2]
- [Feature 3]
- [Feature 4]
- [Feature 5]
- [Feature 6]
- [Feature 7]
- [Feature 8]
- [Feature 9]
- [Feature 10]
### Changed
### Deprecated
### Removed
### Fixed
### Security
### MiscRules:
- All features go under
## [Unreleased]section - No version number or date yet
- Keep empty sections (Changed, Deprecated, Removed, Fixed, Security, Misc) present
- Place each extracted entry in either
### Addedor### Miscwith-bullet format - Use
### Misconly for notable code or logic changes and merged PRs that do not fit the standard Keep a Changelog sections
Step 6: Write CHANGELOG.md
Use the Write tool to create the file at project root:
# File path: ./CHANGELOG.mdStep 7: User Confirmation
Standard success message:
✓ Created CHANGELOG.md with [N] entries under [Unreleased]
- File location: CHANGELOG.md
- Included `### Misc` for notable code changes that do not fit standard Keep a Changelog sections
- Future versions will follow Semantic Versioning
Next steps:
- Review and edit CHANGELOG.md if needed
- Commit: git add CHANGELOG.md && git commit -m "docs: add initial changelog"
- When ready to release, move [Unreleased] items to a versioned section (e.g., [0.1.0])With overflow notification (>10 features found):
✓ Created CHANGELOG.md with 10 entries under [Unreleased]
- Note: Found [X] additional potential entries. Consider reviewing commits for:
• [Feature example 1]
• [Feature example 2]
• [Feature example 3]
Next steps:
- Review CHANGELOG.md and add any missing important features
- Commit: git add CHANGELOG.md && git commit -m "docs: add initial changelog"
- When ready to release, move [Unreleased] items to a versioned section (e.g., [0.1.0])Low feature count (0-2 features):
✓ Created CHANGELOG.md with [N] entr(y/ies) under [Unreleased]
- Note: Limited entries detected from project analysis. You may want to manually edit CHANGELOG.md to add more details.
Next steps:
- Review CHANGELOG.md and add missing features
- Commit: git add CHANGELOG.md && git commit -m "docs: add initial changelog"
- When ready to release, move [Unreleased] items to a versioned section (e.g., [0.1.0])Feature Extraction Strategy
README.md Parsing
Look for these section headers (case-insensitive):
## Features## What it does## Capabilities## About## Overview
Extract bullet points or numbered lists from these sections. Each item becomes a feature candidate.
Commit Message Patterns
High-priority patterns (strong feature indicators):
feat:orfeature:prefixadd:oradded:prefiximplement:orcreate:prefix- Contains: "initial", "scaffold", "setup", "introduce"
Medium-priority patterns (contextual features):
- Contains architectural keywords: "api", "database", "auth", "authentication", "authorization"
- Contains component keywords: "cli", "ui", "dashboard", "admin", "backend", "frontend"
- Contains integration keywords: "docker", "kubernetes", "postgres", "redis", "websocket"
- Contains workflow keywords: "ci/cd", "pipeline", "deployment", "migration"
Refinement rules:
- Group commits by topic (e.g., all auth-related commits → single "Authentication system" feature)
- Ignore micro-commits (e.g., "fix lint error", "remove console.log")
- Prioritize commits near repository start (foundational features)
- Treat descriptive squash-merge titles as valid candidates for
### Miscwhen they represent notable source changes without a cleaner standard section
Directory Structure Inference
Map directories to feature descriptions:
src/→ "Core application source code"api/,backend/,server/→ "Backend API server"cli/,cmd/→ "Command-line interface"web/,frontend/,client/,ui/→ "Web user interface"docker/,Dockerfile→ "Docker containerization"k8s/,kubernetes/→ "Kubernetes deployment"db/,database/,migrations/→ "Database layer with migrations"auth/,authentication/→ "Authentication system"docs/,documentation/→ "Project documentation" (only if substantial)tests/,__tests__/→ "Test suite" (only if comprehensive)
Edge Cases
| Scenario | Behavior |
| CHANGELOG.md exists | Error: "CHANGELOG.md already exists. This skill is for first-time changelog creation only." |
| Not a git repository | Error: "This skill requires a git repository for context gathering." |
| No main or master branch | Error: "No main or master branch found. Please create a default branch first." |
| README.md not found | Proceed with commits + directory structure analysis only |
| No commits on main/master | Use directory structure + notify: "No commit history found. Created minimal CHANGELOG.md based on project structure. Please edit manually to add entries." |
| Empty repository (no files) | Notify: "Empty repository detected. Created template CHANGELOG.md with no features. Please edit manually." |
| 0 entries extracted | Create CHANGELOG with empty Added and Misc sections + notify: "No notable code changes detected. Please manually edit CHANGELOG.md to add your project's entries." |
| 1-2 entries extracted | Include all + notify: "Limited entries detected. You may want to manually edit CHANGELOG.md to add more details." |
| Exactly 10 entries | Include all, no overflow notification |
| More than 10 entries | Include top 10 + notify with 2-3 examples of additional entries |
Complete Workflow Example
Scenario: Project with README, 150 commits, and typical web app structure
- Validation:
git rev-parse --git-dir # ✓ Valid git repo [ -f CHANGELOG.md ] # ✓ Does not exist, can proceed - Branch detection:
git symbolic-ref refs/remotes/origin/HEAD # refs/remotes/origin/main # ✓ Using 'main' branch - README analysis:
- Found
## Featuressection with 6 items:- User authentication and authorization
- RESTful API with OpenAPI docs
- PostgreSQL database
- React frontend
- Docker deployment
- CI/CD with GitHub Actions
- Found
- Commit analysis (150 first-parent commits):
- Filter to 42 feature-related commits
- Grouped into topics:
- Authentication (8 commits) → "Authentication system with JWT and OAuth"
- API (15 commits) → "RESTful API with OpenAPI documentation"
- Database (6 commits) → "PostgreSQL database with Prisma ORM"
- Frontend (10 commits) → "React-based web interface with Material-UI"
- Testing (3 commits) → "Comprehensive test suite with Jest and Cypress"
- Deployment (5 commits) → "Docker containerization and Kubernetes deployment"
- CI/CD (4 commits) → "CI/CD pipeline with GitHub Actions"
- WebSocket (3 commits) → "Real-time notifications via WebSocket"
- Monitoring (2 commits) → "Application monitoring with Prometheus"
- Directory structure:
api/ → Backend API web/ → Frontend docker/ → Container support k8s/ → Kubernetes configs db/ → Database migrations - Entry ranking and selection:
- Deduplicated and merged sources
- Top 10 selected:
- Authentication system with JWT and OAuth
- RESTful API with OpenAPI documentation
- PostgreSQL database with Prisma ORM
- React-based web interface with Material-UI
- Real-time notifications via WebSocket
- Docker containerization and Kubernetes deployment
- CI/CD pipeline with GitHub Actions
- Comprehensive test suite with Jest and Cypress
- Application monitoring with Prometheus
- Major internal permissions refactor (Misc)
- Overflow detection:
- Found 2 additional features:
- Email notification system
- API rate limiting
- Found 2 additional features:
- Write CHANGELOG.md with selected entries split between
### Addedand### Misc - User notification:
✓ Created CHANGELOG.md with 10 features under [Unreleased] - Note: Found 2 additional potential features. Consider reviewing commits for: • Email notification system • API rate limiting Next steps: - Review CHANGELOG.md and add any missing important features - Commit: git add CHANGELOG.md && git commit -m "docs: add initial changelog" - When ready to release, move [Unreleased] items to a versioned section (e.g., [0.1.0])
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

