changelog-updater
Skill0 starsChanged 25 days agoMITView on GitHub
Generiert einen neuen CHANGELOG-Eintrag aus den Git-Commits seit dem letzten Release-Tag. Kategorisiert Commits (Feature, Bugfix, Refactoring, Config-Aenderung), respektiert das bestehende CHANGELOG-Format des Projekts, erkennt Breaking Changes (geaenderte ENV-Variablen, entfernte Funktionen), aktualisiert VERSION-Datei oder __version__ Konstante. Trigger wenn der User "Changelog updaten", "Release-Notes schreiben", "neue Version", "v1.2.3 vorbereiten", "was ist seit dem letzten Release passiert" sagt.
- Reads credentials
6 other projects use a version of this.
Adopted by
Most recently taken up by
- u9401066/zotero-keepertheir own version, first seen Nov 8, 2026
- u9401066/pubmed-search-mcptheir own version, first seen Oct 20, 2026
- u9401066/asset-aware-mcptheir own version, first seen May 6, 2026
- u9401066/template-is-all-you-needtheir own version, first seen Mar 6, 2026
- cameroncooke/skillstheir own version, first seen Mar 2, 2026
- u9401066/nsforge-mcptheir own version, first seen Jan 4, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- cameroncooke/skills★ 45same name
- u9401066/pubmed-search-mcp★ 28same name
- u9401066/zotero-keeper★ 7same name
- u9401066/nsforge-mcp★ 4same name
- u9401066/template-is-all-you-need★ 3same name
- u9401066/asset-aware-mcp★ 0same 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 repository46 other files it gives its agents.
- a11y-checkSkill
- agent-createSkill
- branch-finishSkill
- code-doc-syncSkill
- codex-msgSkill
- codex-reviewSkill
- csoSkill
- db-exploreSkill
- deploy-preflightSkill
- deps-checkSkill
- design-htmlSkill
- design-shotgunSkill
- design-taste-frontendSkill
- finanzberaterSkill
- footstep-eq-tunerSkill
- full-auditSkill
- gateSkill
- gemini-digestSkill
- graphifySkill
- handygame-botSkill
- hook-createSkill
- instructions-drift-checkSkill
- investigateSkill
- leanreaSkill
- legal-deSkill
- loopmodeSkill
- loopstopSkill
- lyraSkill
- office-hoursSkill
- plan-ceo-reviewSkill
- profileSkill
- python-env-auditSkill
- quick-reviewSkill
- reviewSkill
- security-auditSkill
- seoSkill
- site-anatomySkill
- skill-createSkill
- spatial-pipeline-helperSkill
- state-json-validatorSkill
- test-runSkill
- tool-scoutSkill
- transient-profile-validatorSkill
- ui-critiqueSkill
- wakeup-setupSkill
- websucheSkill
The file
Files
changelog-updater
Bringt CHANGELOG.md auf den Stand der Commits seit dem letzten Tag — ohne dass der User selbst den Git-Log durchscrollen muss.
Wofuer
des Nutzers Projekte haben aktive Versionierung (Discord v4.1.0, FootstepPro v1.2.0). Releases ohne aktualisierten Changelog sind aergerlich — und der Changelog dann nachzutragen ist nervig, weil der User die Commits aus dem Kopf rekonstruieren muss. Der Skill macht das in 30 Sekunden.
Trigger
- "Changelog aktualisieren"
- "Was ist seit v1.2.0 passiert?"
- "Release vorbereiten"
- "v1.3.0 macht ich gerade"
- Vor jedem Tag/Release
Workflow
1. Aktuelles Format aus CHANGELOG.md selbst lernen
Lies CHANGELOG.md. Statt fest verdrahteter Section-Namen zu raten: parse die letzten 3 Eintraege und sammle die tatsaechlich verwendeten Section-Headings.
# Beispiel-Heuristik:
# Pro Eintrag (zwischen zwei `## v...`-Headern) sammle alle `### XYZ`-Subheaders
# -> { "v1.2.0": ["Hinzugefuegt", "Geaendert", "Behoben", "Documentation Updates"] }
# Diese gefundenen Section-Namen sind die Wahrheit. Verwende sie 1:1 fuer den neuen Eintrag.des Nutzers Projekte verwenden teils deutsche Sektionen ("Hinzugefuegt"/"Geaendert"/"Behoben"), teils englische (Keep-a-Changelog-Style "Added"/"Changed"/"Fixed"), teils Custom-Sections wie "Documentation Updates", "Validierung", "Fixes (Code Review)" mit Prio-Markern wie [KRITISCH]. Diese Vielfalt ist absichtlich — kopiere das Muster der letzten Eintraege exakt, statt zu standardisieren.
Wenn Datei leer/fehlt: nach Keep-a-Changelog-Default fragen, sonst initial anlegen mit explizitem Hinweis ("kein bisheriges Format gefunden — schlage Keep-a-Changelog vor, OK?").
2. Letzten Tag finden — mit klarem Git-Fallback
Pruefe ZUERST ob das Verzeichnis ein Git-Repo ist:
git -C <projekt-pfad> rev-parse --git-dir 2>/dev/nullWenn KEIN Git-Repo:
Brich nicht still ab — der Skill ist sonst nutzlos und der User wundert sich. Sage explizit:
Projekt ist KEIN Git-Repository.
Optionen:
(a) git init + erstmaligen Commit machen, dann Skill erneut starten
(b) Skill bedient sich aus CHANGELOG.md selbst — nimm den letzten Eintrag
als Versions-Anker. Neue Aenderungen kann der Skill aber NUR aus
User-Beschreibung uebernehmen, nicht automatisch erfassen.
(c) Skill abbrechen.
Welche Option?Bei Option (b): frage den User nach 3-7 Saetzen, was sich seit dem letzten CHANGELOG-Eintrag geaendert hat — das wird die Eingabe fuer Schritt 4 (Kategorisierung).
Wenn Git-Repo:
git -C <pfad> describe --tags --abbrev=0 2>/dev/nullWenn kein Tag: nimm den Hash des Commits, der die letzte Veraenderung an CHANGELOG.md einfuehrte:
git -C <pfad> log -1 --format="%H" -- CHANGELOG.mdWenn auch das nichts liefert: alle Commits einbeziehen.
Speichere den gefundenen Anker als LAST_RELEASE.
3. Commits seit LAST_RELEASE einsammeln
git log <LAST_RELEASE>..HEAD --pretty=format:"%H|%s|%b|%an" --no-mergesParse Zeile fuer Zeile. Felder: hash, subject, body, author.
Filter:
- Merge-Commits ausschliessen (oben schon gemacht)
- Reine Format-/Whitespace-Commits unter
chore:zusammenfassen - Revert-Commits speziell handhaben (sehen aus wie negative Eintraege im Log — den ursprünglichen Commit auch entfernen, falls in Range)
4. Kategorisieren
Per Heuristik: Subject-Praefix oder Keyword.
| Praefix | Kategorie |
feat:, feature:, "add", "added", "neu" | Hinzugefuegt / Added |
fix:, bugfix:, "fix", "behebt" | Behoben / Fixed |
refactor:, chore:, "refactor" | Geaendert / Changed |
remove:, "entfernt", "deprecate" | Entfernt / Removed |
docs:, "doku" | Dokumentation (eigene Section oder unter Geaendert) |
test: | Tests (eigene Section oder unter Geaendert) |
breaking:, "BREAKING CHANGE" im body | BREAKING (eigene Section oben) |
Wenn Praefix unklar: aus Body und Datei-Aenderungen raten:
- nur
tests/veraendert -> Tests - nur
*.md-> Docs - neue Datei in
bots/<x>/cogs/-> Hinzugefuegt (neuer Cog) requirements.txtveraendert -> Geaendert (Deps)
5. Breaking Changes erkennen
Diese Aenderungen markieren als BREAKING:
.env-Variable entfernt oder umbenannt: NUR gegen die getrackte Vorlagegit diff <LAST>..HEAD -- '*.env.example' '*.env.sample'diffen (enthaelt keine echten Werte). NIEMALSgit diffauf echte.env-Dateien — bei getrackter.envdumpt das Klartext-Secrets ins Transcript (Leak-Klasse Lesson 2026-05-16). Um nur zu ERKENNEN ob sich eine echte.envaenderte:git diff --name-only <LAST>..HEAD -- '*.env*'(nur Dateinamen, keine Werte).- DB-Schema-Aenderungen: per
git diff <LAST>..HEAD -- '*schema*' '*migration*' - Funktionssignaturen entfernt/umbenannt: schwer per Heuristik — nur melden wenn Commit-Subject "BREAKING" sagt
- Kommando-Linie geaendert (FootstepPro
analyzer.pySubcommands): pruefecli-Bezeichnungen in den Diffs
Breaking Changes als eigene Sektion oben im Eintrag:
### Breaking Changes
- `BOT_TOKEN_GAME` umbenannt zu `DISCORD_TOKEN_GAME` ([abc1234](url))6. Neue Versionsnummer vorschlagen
Wenn der User keine vorgegeben hat: SemVer-Vorschlag basierend auf den Findings:
- Breaking Changes -> Major (1.0.0 -> 2.0.0)
- Nur Features, keine Breaking -> Minor (1.0.0 -> 1.1.0)
- Nur Fixes/Refactor -> Patch (1.0.0 -> 1.0.1)
Frage: "Vorschlag: v1.3.0. OK oder andere Nummer?" — nur wenn der User es selbst nicht gesagt hat.
7. Eintrag schreiben
Format an bestehende Eintraege anlehnen. Beispiel:
## [1.3.0] - 2026-04-30
### Hinzugefuegt
- Neuer `optimize`-Subcommand: kombiniert analyze + config generate ([abc1234](#))
- Heatmap-Visualisierung in DOCSIS-Analyse ([def5678](#))
### Behoben
- Crash bei Mono-WAVs in `band_analyzer.py` ([ghi9012](#))
- `state.json` wurde nicht atomar geschrieben ([jkl3456](#))
### Geaendert
- Hann-Fenster-Kompensation korrigiert (1/sqrt(mean(h^2)) statt 1/mean(h)) ([mno7890](#))
### Entfernt
- Veraltete `--legacy-mode`-Flag ([pqr1234](#))Hash-Links nur wenn das Repo eine Forge-URL hat (in git config --get remote.origin.url). Sonst Hash plain in Klammern.
8. VERSION-Datei und version aktualisieren
Pruefe per Glob/Grep:
VERSION(Discord-System)constants.pymitVERSION = "1.2.0"(FootstepPro)__init__.pymit__version__pyproject.tomlmitversion = ...
Schreibe die neue Versionsnummer in alle gefundenen Stellen — aber NUR wenn der User die Versionsnummer bestaetigt hat. Sonst Diff-Vorschlag.
9. Schreibvorgang
Schreibe den neuen Eintrag direkt unter ## [Unreleased]-Section (falls vorhanden), sonst direkt nach dem # Changelog-Header.
NICHT die alten Eintraege anfassen. NICHT die [Unreleased]-Section loeschen.
Edge Cases
- Kein Tag im Repo: nimm Hash + Datum als "vorlaeufiger Anker", User kann spaeter taggen.
- Sehr viele Commits (> 50): gruppiere per Datei-Pfad + Tag, sonst wird der Eintrag unlesbar.
- Co-author-Commits: ignoriere
Co-authored-byim Body, kein eigener Eintrag. - Squash-Merges: meist haben die einen guten Subject, das reicht. Body checken nur bei Bedarf.
- Versions-Drift zwischen
VERSION-Datei und CHANGELOG: melden bevor du was schreibst — manchmal ist die Datei schon hoch, der Changelog hinterher.
Sicherheit
- Nichts uebernehmen ohne dass der User die Versionsnummer freigegeben hat.
- Bestehende Eintraege niemals aendern.
.env-Variablen-Beispiele NICHT in den Changelog kopieren — nur Namen ("API_KEYumbenannt zuDISCORD_API_KEY"), keine Werte.
Report nach Erstellung
Neuer Eintrag: 1.3.0 (vorgeschlagen, bestaetigt)
Commits: 14 zwischen v1.2.0..HEAD
Kategorien: 3 Hinzugefuegt, 4 Behoben, 5 Geaendert, 1 Entfernt, 1 Breaking
Geaendert: CHANGELOG.md, VERSION (3.2.1 -> 3.3.0), constants.py (VERSION="3.3.0")
Naechste Schritte:
1. CHANGELOG.md gegenlesen (besonders die Kategorisierung)
2. git tag v1.3.0
3. deploy-preflight ausfuehrenDoes 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.

