project-change-log
georgekhananaev/claude-skills-vault/.claude/skills/project-change-log/SKILL.md
Maintain a CHANGELOG.md following the Keep a Changelog standard. Use after commits, on /commit, when the user asks to update the changelog, or when releasing a version — maps conventional-commit types to Added/Changed/Fixed/Security categories. Archives old releases into per-major files (changelog/CHANGELOG-1.x.md) so the main file stays small no matter how many versions accumulate.
What's in it
- Project Change Log
- When to Use
- Changelog Format
- Change Categories
- Process
- 1. Detect Changelog
- 2. Analyze Commit
- 3. Map Commit Type to Category
- 4. Update Changelog
- 5. Version Release
- Keeping the changelog small (archiving)
- Entry Format
- Template
- Integration with Commit
- Examples
- Example 1: Feature Commit
- Example 2: Bug Fix
- Example 3: Version Release
--- name: project-change-log description: Maintain a CHANGELOG.md following the Keep a Changelog standard. Use after commits, on /commit, when the user asks to update the changelog, or when releasing a version — maps conventional-commit types to Added/Changed/Fixed/Security categories. Archives old releases into per-major files (changelog/CHANGELOG-1.x.md) so the main file stays small no matter how many versions accumulate. --- # Project Change Log Automatically maintain a CHANGELOG.md file following the Keep a Changelog standard. ## When to Use - After creating a commit - When `/commit` command is executed - When user asks to update changelog - When releasing a new version - When `CHANGELOG.md` has grown large (rotate old releases into archives — see [Keeping the changelog small](#keeping-the-changelog-small-archiving)) ## Changelog Format The standard format is `CHANGELOG.md` in the project root, following [Keep a Changelog](https://keepachangelog.com/): ```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/), and this project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] ### Added - New feature description ### Changed - Change description ### Fixed - Bug fix description ## [1.0.0] - 2026-01-04 ### Added - Initial release features ``` ## Change Categories | Category | Description | |----------|-------------| | **Added** | New features | | **Changed** | Changes in existing functionality | | **Deprecated** | Soon-to-be removed features | | **Removed** | Removed features | | **Fixed** | Bug fixes | | **Security** | Vulnerability fixes | ## Process ### 1. Detect Changelog Check if `CHANGELOG.md` exists in project root: - If exists: Read current content - If not: Create with template ### 2. Analyze Commit Extract from the commit: - **Type**: feat, fix, docs, etc. - **Scope**: Affected area - **Description**: What changed - **Date**: Current date (YYYY-MM-DD) - **Author**: From git config ### 3. Map Commit Type to Category | Commit Type | Changelog Category | |-------------|-------------------| | `feat` | Added | | `fix` | Fixed | | `docs` | Changed | | `style` | Changed | | `refactor` | Changed | | `perf` | Changed | | `test` | Changed | | `build` | Changed | | `ci` | Changed | | `chore` | Changed | | `security` | Security | | `deprecate` | Deprecated | | `remove` | Removed | ### 4. Update Changelog Add entry under `[Unreleased]` section in appropriate category: ```markdown ## [Unreleased] ### Added - New entry here with description ``` ### 5. Version Release When releasing a version: 1. Move `[Unreleased]` content to new version section 2. Add version number and date 3. Create new empty `[Unreleased]` section 4. **Rotate old releases** so the file stays small — run the archive script (it's a no-op until there are more than 20 versions): ```bash python3 .claude/skills/project-change-log/scripts/rotate_changelog.py --apply ``` ## Keeping the changelog small (archiving) A single `CHANGELOG.md` grows without bound — one real project reached 197 releases / 2,508 lines / 420 KB. To keep it readable, rotate old releases into per-major archive files. **Policy:** keep `[Unreleased]` + the newest **20** versions in `CHANGELOG.md`; move older versions into `changelog/CHANGELOG-<major>.x.md` (e.g. `changelog/CHANGELOG-1.x.md`), linked from an `## Older releases` index at the bottom of the main file. ``` CHANGELOG.md # title + intro + [Unreleased] + newest 20 + index changelog/ CHANGELOG-1.x.md # archived 1.x releases, newest-first CHANGELOG-2.x.md # created when a 2.x release is first rotated out ``` Use the helper script — **safe by default (dry run unless `--apply`)**, Python 3 stdlib only, idempotent, and guaranteed not to drop or duplicate any release: ```bash # Preview what would move (no writes): python3 .claude/skills/project-change-log/scripts/rotate_changelog.py # Rotate for real: python3 .claude/skills/project-change-log/scripts/rotate_changelog.py --apply ``` Run it as the last step of a version release (no-op below 20 versions) or any time the file feels large. **First-time adoption on an existing project** (e.g. after this skill is added or updated): run the **dry run first** and confirm the reported version count looks right, then `--apply` once and commit the new `changelog/` directory with the trimmed `CHANGELOG.md` in a single commit. It's idempotent, so re-running after later skill updates is safe. If the dry run reports `0`/too few versions, the file uses a non-standard heading format — normalize headings to `## [x.y.z] - YYYY-MM-DD` first. Full steps + troubleshooting: [references/archiving.md](references/archiving.md). Flags: `--keep N` (default 20), `--dir changelog`, `--file CHANGELOG.md`. Full details, behavior guarantees, and edge cases: see [references/archiving.md](references/archiving.md). ## Entry Format Each entry should be: - One line per change - Start with capital letter - No period at end - Include scope if relevant: `**scope**: description` **Examples:** ```markdown ### Added - **auth**: OAuth2 login with Google and GitHub - User profile settings page - Dark mode toggle ### Fixed - **api**: Handle null response in user endpoint - Memory leak in websocket connections ``` ## Template Initial CHANGELOG.md template: ```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/), and this project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] ### Added ### Changed ### Fixed ``` ## Integration with Commit After each commit: 1. Parse commit message for type and description 2. Determine changelog category 3. Add entry under `[Unreleased]` 4. Stage CHANGELOG.md (do not create separate commit) ## Examples ### Example 1: Feature Commit **Commit:** `feat(auth): add OAuth2 login support` **Changelog Entry:** ```markdown ### Added - **auth**: OAuth2 login support ``` ### Example 2: Bug Fix **Commit:** `fix(api): handle null response in user endpoint` **Changelog Entry:** ```markdown ### Fixed - **api**: Handle null response in user endpoint ``` ### Example 3: Version Release Before: ```markdown ## [Unreleased] ### Added - Feature A - Feature B ### Fixed - Bug fix X ``` After releasing v1.2.0: ```markdown ## [Unreleased] ## [1.2.0] - 2026-01-04 ### Added - Feature A - Feature B ### Fixed - Bug fix X ```
More agent context in georgekhananaev/claude-skills-vault
63 other files this repository gives its agents, the first 60 shown.
AGENTS.md
Skill
- agy-cli.claude/skills/agy-cli/SKILL.md
- aws-cli.claude/skills/aws-cli/SKILL.md
- better-auth.claude/skills/better-auth/SKILL.md
- brainstorm.claude/skills/brainstorm/SKILL.md
- claude-seo.claude/skills/claude-seo/SKILL.md
- code-quality.claude/skills/code-quality/SKILL.md
- codex-cli.claude/skills/codex-cli/SKILL.md
- color-accessibility-audit.claude/skills/color-accessibility-audit/SKILL.md
- vercel-composition-patterns.claude/skills/composition-patterns/SKILL.md
- data-wrangler.claude/skills/data-wrangler/SKILL.md
- doc-navigator.claude/skills/doc-navigator/SKILL.md
- domain-checker.claude/skills/domain-checker/SKILL.md
- fastapi-senior-dev.claude/skills/fastapi-senior-dev/SKILL.md
- file-converter.claude/skills/file-converter/SKILL.md
- firebase-cli.claude/skills/firebase-cli/SKILL.md
- firecrawl.claude/skills/firecrawl-cli/SKILL.md
- frontend-design.claude/skills/frontend-design/SKILL.md
- gemini-cli.claude/skills/gemini-cli/SKILL.md
- github-cli.claude/skills/github-cli/SKILL.md
- materialreacttable-mastery.claude/skills/materialreacttable-mastery/SKILL.md
- mcp-builder.claude/skills/mcp-builder/SKILL.md
- mermaid-diagram.claude/skills/mermaid-diagram/SKILL.md
- monday-com.claude/skills/monday-com/SKILL.md
- mongodb-atlas-cli.claude/skills/mongodb-atlas-cli/SKILL.md
- multi-agent-patterns.claude/skills/multi-agent-patterns/SKILL.md
- n8n-cli.claude/skills/n8n-cli/SKILL.md
- natural-language.claude/skills/natural-language/SKILL.md
- neon-postgres-agent-platforms.claude/skills/neon-postgres-agent-platforms/SKILL.md
- next-cache-components.claude/skills/next-cache-components/SKILL.md
- nextjs-senior-dev.claude/skills/nextjs-senior-dev/SKILL.md
- next-upgrade.claude/skills/next-upgrade/SKILL.md
- notebooklm.claude/skills/notebooklm-skill/SKILL.md
- obsidian-skills.claude/skills/obsidian-skills/SKILL.md
- owasp-security.claude/skills/owasp-security/SKILL.md
- parallel-agents.claude/skills/parallel-agents/SKILL.md
- planning-with-files.claude/skills/planning-with-files/SKILL.md
- plan-to-tdd.claude/skills/plan-to-tdd/SKILL.md
- pydantic-model.claude/skills/pydantic-model/SKILL.md
- react-best-practices.claude/skills/react-best-practices/SKILL.md
- salesforce-cli.claude/skills/salesforce-cli/SKILL.md
- semantic-coding.claude/skills/semantic-coding/SKILL.md
- senior-backend.claude/skills/senior-backend/SKILL.md
- skill-creator.claude/skills/skill-creator/SKILL.md
- stripe-best-practices.claude/skills/stripe-best-practices/SKILL.md
- supabase-cli.claude/skills/supabase-cli/SKILL.md
- swift-concurrency-6-2.claude/skills/swift-concurrency6.2/SKILL.md
- swiftui-patterns.claude/skills/swiftui-patterns/SKILL.md
- system-architect.claude/skills/system-architect/SKILL.md
- terraform.claude/skills/terraform/SKILL.md
- testing-automation-expert.claude/skills/testing-automation-expert/SKILL.md
- test-levels.claude/skills/test-levels/SKILL.md
- token-optimizer.claude/skills/token-optimizer/SKILL.md
- trailofbits-security.claude/skills/trailofbits-security/SKILL.md
- ui-ux-pro-max.claude/skills/ui-ux-pro-max/SKILL.md
- uiux-toolkit.claude/skills/uiux-toolkit/SKILL.md
- upgrade-packages-js.claude/skills/upgrade-packages-js/SKILL.md
- vercel-cli.claude/skills/vercel-cli/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

