Przejdź do treści
Biblioteka skilli
Programowanie · Automatyzacja

project-change-log

/project-change-log

Prowadzi plik CHANGELOG.md według standardu Keep a Changelog, mapując typy conventional commits na kategorie i archiwizując stare wydania do osobnych plików wersji głównych.

Licencja
MIT
Ostatnia zmiana repozytorium
12.08.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
3
Skrypty
1
Komentarze HTML
0
Adresy URL w SKILL.md
5
Przestarzałość

Brak sygnałów. Repozytorium zmienione 12.08.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • 1 skrypt w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: scripts/rotate_changelog.py

Co robi i kiedy

Prowadzi plik CHANGELOG.md według standardu Keep a Changelog, mapując typy conventional commits na kategorie i archiwizując stare wydania do osobnych plików wersji głównych.

Oryginalny opis (EN)

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.

Jak działa

  1. When to Use
  2. Changelog Format
  3. Change Categories
  4. Process
  5. Keeping the changelog small (archiving)
  6. Entry Format
  7. Template
  8. Integration with Commit
  9. Examples
Sekcje z nagłówków SKILL.md, w oryginale · 256 linii, 910 słów
Podgląd SKILL.md
---
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
```
Pliki w paczce (3)
  • SKILL.md 7 KB
  • references/archiving.md 6 KB
  • scripts/rotate_changelog.py 11 KB

Wersje

W bazie nie ma innych skilli o nazwie project-change-log.

Migawka bazy z 28.10.2026 · wersja paczki c64b5be5e128 (skrót SHA-256 całej paczki)

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100changelog
    Generuje uporządkowany changelog z historii gita w formacie Keep a Changelog i konwencji conventional commits, także jako notatki do wydania.
  • 95change-log-generator
    Generuje changelogi z commitów git, łatek i pull requestów, w tym conventional commits, w kategoriach Features, Bug Fixes i Breaking Changes, do notatek wydania i plików CHANGELOG.md.
  • 95changelog-generator
    Generuje wpisy CHANGELOG zgodne z formatem conventional commits i wersjonowaniem semantycznym przy finalizowaniu funkcji.
  • 100update-changelog
    Dodaje lub poprawia changelog projektu w formacie Keep a Changelog, wraz z podbijaniem wersji i grupowaniem zmian według typu.
  • 100changelog-generator
    Generuje lub aktualizuje CHANGELOG.md w formacie Keep a Changelog z historii gita, grupując commity w sekcje Added, Changed, Fixed, Security i inne, oraz rekomenduje podniesienie wersji.
  • 90changelog:update
    Dopisuje do istniejącego CHANGELOG.md wpisy nowych wersji na podstawie commitów od ostatniej udokumentowanej.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.