Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generates CHANGELOG.md entries for upgrade versions found in upgrades/software/ by parsing init.go and upgrade.go
.claude/skills/akash-network-upgrade-changelog/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-21 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-05 | ✓→✗ | ▼ Worse | -60% | 0% |
| case-06 | ✓→✗ | ▼ Worse | -50% | 0% |
| case-22 | ✓→✗ | ▼ Worse | -26% | 0% |
Generate changelog entries in upgrades/CHANGELOG.md for any upgrade version under upgrades/software/ that doesn't already have an entry.
upgrades/software/ whose names match v<major>.<minor>.<patch> (e.g., v2.0.0, v1.0.0).upgrades/CHANGELOG.md — identify which versions already have entries by scanning for ##### vX.Y.Z headings. If a version already has a heading, skip it entirely.### 3a. Parse upgrades/software/<version>/init.go
Find all utypes.RegisterMigration(...) calls. Each call has the form: go utypes.RegisterMigration(moduleName, version, handlerFn)
moduleName is a Go constant (e.g., dv1.ModuleName). Resolve it:dv1 "pkg.akt.dev/go/node/deployment/v1")ModuleName constant definition to get the actual string valueversion is a uint64 — this is the from version. The to version is version + 1.moduleName version -> version+1### 3b. Parse upgrades/software/<version>/upgrade.go
Find the StoreLoader() method. It returns a *storetypes.StoreUpgrades struct with optional fields:
Added: []string{...} — new storesRenamed: []storetypes.StoreRename{...} — renamed storesDeleted: []string{...} — removed storesIf StoreLoader() returns nil, there are no store changes.
For each store key constant (e.g., epochstypes.StoreKey, ttypes.ModuleName):
upgrades/CHANGELOG.md immediately after the line: Add new upgrades after this line based on the template above followed by -----.
Use this format (newest entries go first, right after the delimiter):
markdown
##### vX.Y.Z
###### Description
storeName: brief description if availableoldName -> newNamestoreName: brief description if availablefrom -> toOmission rules (match existing CHANGELOG style):
Stores section if there are no added, renamed, or deleted storesadded/renamed/deleted subsections individually if emptyMigrations section if there are no migrations###### Description heading (leave it for the user to fill in)StoreKey or ModuleName — both are used as store identifiers. Resolve whichever constant appears in the code.go doc if needed. The packages typically follow the pattern pkg.akt.dev/go/node/<module>/<version>. epochstypes.StoreKey ) and warn the user.Other measured skills in the registry, with their headline benchmark lift.