[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M79BTAPPAM948ANDY1FRC1EC":3,"skill-same:01M79BTAPPAM948ANDY1FRC1EC":46},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":28,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M79BTAPPAM948ANDY1FRC1EC","upgrade-changelog",null,"Generates CHANGELOG.md entries for upgrade versions found in upgrades\u002Fsoftware\u002F by parsing init.go and upgrade.go","Abakos-ABA\u002Fabakos","Abakos-ABA","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F222617600?v=4","01M79BSKBRXXJMRS1FGWBSF193","Maximum income from every machine","01M79BSKCP2PB44GG0V9HWTH3X",1,"MIT","https:\u002F\u002Fgithub.com\u002FAbakos-ABA\u002Fabakos\u002Fblob\u002Fmain\u002Fchain\u002F.agents\u002Fskills\u002Fupgrade-changelog\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: upgrade-changelog\ndescription: \"Generates CHANGELOG.md entries for upgrade versions found in upgrades\u002Fsoftware\u002F by parsing init.go and upgrade.go\"\n---\n# Instructions\n\nGenerate changelog entries in `upgrades\u002FCHANGELOG.md` for any upgrade version under `upgrades\u002Fsoftware\u002F` that doesn't already have an entry.\n\n## Steps\n\n1. **Find semver directories** — list all directories under `upgrades\u002Fsoftware\u002F` whose names match `v\u003Cmajor>.\u003Cminor>.\u003Cpatch>` (e.g., `v2.0.0`, `v1.0.0`).\n\n2. **Read `upgrades\u002FCHANGELOG.md`** — identify which versions already have entries by scanning for `##### vX.Y.Z` headings. If a version already has a heading, skip it entirely.\n\n3. **For each new version** (no existing heading), gather data from two files:\n\n   ### 3a. Parse `upgrades\u002Fsoftware\u002F\u003Cversion>\u002Finit.go`\n\n   Find all `utypes.RegisterMigration(...)` calls. Each call has the form:\n   ```go\n   utypes.RegisterMigration(moduleName, version, handlerFn)\n   ```\n   - `moduleName` is a Go constant (e.g., `dv1.ModuleName`). Resolve it:\n     1. Find the import alias (e.g., `dv1 \"pkg.akt.dev\u002Fgo\u002Fnode\u002Fdeployment\u002Fv1\"`)\n     2. Search the imported package for `ModuleName` constant definition to get the actual string value\n   - `version` is a `uint64` — this is the **from** version. The **to** version is `version + 1`.\n   - Record each migration as: `moduleName version -> version+1`\n\n   ### 3b. Parse `upgrades\u002Fsoftware\u002F\u003Cversion>\u002Fupgrade.go`\n\n   Find the `StoreLoader()` method. It returns a `*storetypes.StoreUpgrades` struct with optional fields:\n   - `Added: []string{...}` — new stores\n   - `Renamed: []storetypes.StoreRename{...}` — renamed stores\n   - `Deleted: []string{...}` — removed stores\n\n   If `StoreLoader()` returns `nil`, there are no store changes.\n\n   For each store key constant (e.g., `epochstypes.StoreKey`, `ttypes.ModuleName`):\n   1. Find the import alias in the file\n   2. Search the imported package for the constant definition to get the actual string value\n\n4. **Insert the new entry** in `upgrades\u002FCHANGELOG.md` immediately after the line:\n   ```\n   Add new upgrades after this line based on the template above\n   ```\n   followed by `-----`.\n\n   Use this format (newest entries go first, right after the delimiter):\n\n   ```markdown\n\n   ##### vX.Y.Z\n\n   ###### Description\n\n   - Stores\n       - added\n           - `storeName`: brief description if available\n       - renamed\n           - `oldName` -> `newName`\n       - deleted\n           - `storeName`: brief description if available\n\n   - Migrations\n       - moduleName `from -> to`\n   ```\n\n   **Omission rules** (match existing CHANGELOG style):\n   - Omit the entire `Stores` section if there are no added, renamed, or deleted stores\n   - Omit `added`\u002F`renamed`\u002F`deleted` subsections individually if empty\n   - Omit the entire `Migrations` section if there are no migrations\n   - Always include the `###### Description` heading (leave it for the user to fill in)\n\n5. **Report results** — list each version processed and what was added. For skipped versions (already in CHANGELOG), mention they were skipped.\n\n## Important notes\n\n- Store key constants may be named `StoreKey` or `ModuleName` — both are used as store identifiers. Resolve whichever constant appears in the code.\n- When resolving Go constants from external packages, search under the Go module cache or use `go doc` if needed. The packages typically follow the pattern `pkg.akt.dev\u002Fgo\u002Fnode\u002F\u003Cmodule>\u002F\u003Cversion>`.\n- If a constant cannot be resolved, use the raw Go expression as a placeholder (e.g., `` `epochstypes.StoreKey` ``) and warn the user.\n- Multiple versions may need entries — process them all in one run, inserting newest first after the delimiter.\n","# Instructions\n\nGenerate changelog entries in `upgrades\u002FCHANGELOG.md` for any upgrade version under `upgrades\u002Fsoftware\u002F` that doesn't already have an entry.\n\n## Steps\n\n1. **Find semver directories** — list all directories under `upgrades\u002Fsoftware\u002F` whose names match `v\u003Cmajor>.\u003Cminor>.\u003Cpatch>` (e.g., `v2.0.0`, `v1.0.0`).\n\n2. **Read `upgrades\u002FCHANGELOG.md`** — identify which versions already have entries by scanning for `##### vX.Y.Z` headings. If a version already has a heading, skip it entirely.\n\n3. **For each new version** (no existing heading), gather data from two files:\n\n   ### 3a. Parse `upgrades\u002Fsoftware\u002F\u003Cversion>\u002Finit.go`\n\n   Find all `utypes.RegisterMigration(...)` calls. Each call has the form:\n   ```go\n   utypes.RegisterMigration(moduleName, version, handlerFn)\n   ```\n   - `moduleName` is a Go constant (e.g., `dv1.ModuleName`). Resolve it:\n     1. Find the import alias (e.g., `dv1 \"pkg.akt.dev\u002Fgo\u002Fnode\u002Fdeployment\u002Fv1\"`)\n     2. Search the imported package for `ModuleName` constant definition to get the actual string value\n   - `version` is a `uint64` — this is the **from** version. The **to** version is `version + 1`.\n   - Record each migration as: `moduleName version -> version+1`\n\n   ### 3b. Parse `upgrades\u002Fsoftware\u002F\u003Cversion>\u002Fupgrade.go`\n\n   Find the `StoreLoader()` method. It returns a `*storetypes.StoreUpgrades` struct with optional fields:\n   - `Added: []string{...}` — new stores\n   - `Renamed: []storetypes.StoreRename{...}` — renamed stores\n   - `Deleted: []string{...}` — removed stores\n\n   If `StoreLoader()` returns `nil`, there are no store changes.\n\n   For each store key constant (e.g., `epochstypes.StoreKey`, `ttypes.ModuleName`):\n   1. Find the import alias in the file\n   2. Search the imported package for the constant definition to get the actual string value\n\n4. **Insert the new entry** in `upgrades\u002FCHANGELOG.md` immediately after the line:\n   ```\n   Add new upgrades after this line based on the template above\n   ```\n   followed by `-----`.\n\n   Use this format (newest entries go first, right after the delimiter):\n\n   ```markdown\n\n   ##### vX.Y.Z\n\n   ###### Description\n\n   - Stores\n       - added\n           - `storeName`: brief description if available\n       - renamed\n           - `oldName` -> `newName`\n       - deleted\n           - `storeName`: brief description if available\n\n   - Migrations\n       - moduleName `from -> to`\n   ```\n\n   **Omission rules** (match existing CHANGELOG style):\n   - Omit the entire `Stores` section if there are no added, renamed, or deleted stores\n   - Omit `added`\u002F`renamed`\u002F`deleted` subsections individually if empty\n   - Omit the entire `Migrations` section if there are no migrations\n   - Always include the `###### Description` heading (leave it for the user to fill in)\n\n5. **Report results** — list each version processed and what was added. For skipped versions (already in CHANGELOG), mention they were skipped.\n\n## Important notes\n\n- Store key constants may be named `StoreKey` or `ModuleName` — both are used as store identifiers. Resolve whichever constant appears in the code.\n- When resolving Go constants from external packages, search under the Go module cache or use `go doc` if needed. The packages typically follow the pattern `pkg.akt.dev\u002Fgo\u002Fnode\u002F\u003Cmodule>\u002F\u003Cversion>`.\n- If a constant cannot be resolved, use the raw Go expression as a placeholder (e.g., `` `epochstypes.StoreKey` ``) and warn the user.\n- Multiple versions may need entries — process them all in one run, inserting newest first after the delimiter.\n",{"name":5,"description":7},"main","83e65a5f7f75ccc8810f1f56973b479b8037b85d","chain\u002F.agents\u002Fskills\u002Fupgrade-changelog","https:\u002F\u002Fgithub.com\u002FAbakos-ABA\u002Fabakos","https:\u002F\u002Fabakos.ai","https:\u002F\u002Fgithub.com\u002FAbakos-ABA","Zero-fee, EVM-compatible Proof-of-Stake compute blockchain ","2026-11-14 00:09:33",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add Abakos-ABA\u002Fabakos --skill upgrade-changelog",{"tool":38,"command":39},"bunx","bunx skills add Abakos-ABA\u002Fabakos --skill upgrade-changelog",{"tool":41,"command":42},"pnpm","pnpm dlx skills add Abakos-ABA\u002Fabakos --skill upgrade-changelog","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAbakos-ABA\u002Fabakos\u002Fblob\u002Fmain\u002Fchain\u002F.agents\u002Fskills\u002Fupgrade-changelog\u002FSKILL.md",true,[],[47,54,61,68],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M79BTFC030MDR4PQFJREECQ5","vanity","Registers node major version vanity URL in the sibling vanity repo","https:\u002F\u002Fgithub.com\u002FAbakos-ABA\u002Fabakos\u002Fblob\u002Fmain\u002Fchain\u002F.agents\u002Fskills\u002Fvanity\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M79BT786A7DEQSYFMRRGM7XD","build-contracts","Builds all cosmwasm contracts","https:\u002F\u002Fgithub.com\u002FAbakos-ABA\u002Fabakos\u002Fblob\u002Fmain\u002Fchain\u002F.agents\u002Fskills\u002Fsmartcontracts\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M79BT2YXC1SXNNA83S9YSXED","setup-env","Set up development environment by loading direnv. Must be run before any make targets (tests, builds, linting).","https:\u002F\u002Fgithub.com\u002FAbakos-ABA\u002Fabakos\u002Fblob\u002Fmain\u002Fchain\u002F.agents\u002Fskills\u002Fsetup-env\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M79BSYYZSDC3KT99AW6RBQTT","guidelines","Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.","https:\u002F\u002Fgithub.com\u002FAbakos-ABA\u002Fabakos\u002Fblob\u002Fmain\u002Fchain\u002F.agents\u002Fskills\u002Fguidelines\u002FSKILL.md",[],[]]