.claude/skills/release-changes/SKILL.md
Analyze contract changes between two release tags (struct changes, deployer changes, recommendations)
npx skillsauth add reserve-protocol/reserve-index-dtf release-changesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyze Solidity contract changes between two release tags. Produce a concise report of what a frontend developer needs to know.
$ARGUMENTS — two space-separated tags: <from-tag> <to-tag> (e.g. r4.0.0 r5.0.0)contracts/ directory onlycontracts/spells/, contracts/mocks/, any test/ paths| Contract | Source File |
| ------------------ | ------------------------------------------- |
| Folio | contracts/Folio.sol |
| FolioLens | contracts/periphery/FolioLens.sol |
| GovernanceDeployer | contracts/deployer/GovernanceDeployer.sol |
| FolioDeployer | contracts/deployer/FolioDeployer.sol |
| FolioProxyAdmin | contracts/folio/FolioProxy.sol |
| FolioProxy | contracts/folio/FolioProxy.sol |
| StakingVault | contracts/staking/StakingVault.sol |
| UnstakingManager | contracts/staking/UnstakingManager.sol |
| FolioGovernor | contracts/governance/FolioGovernor.sol |
contracts/interfaces/IFolio.solcontracts/interfaces/IFolioDeployer.solcontracts/interfaces/IGovernanceDeployer.solcontracts/interfaces/IFolioDAOFeeRegistry.solcontracts/interfaces/IFolioVersionRegistry.solcontracts/interfaces/IBidderCallee.solcontracts/interfaces/IRoleRegistry.solParse $ARGUMENTS into <from-tag> and <to-tag> (space-separated). If fewer than 2 arguments, list available release tags with git tag --list 'r*' and ask the user to provide both. Then stop.
Run git tag --list 'r*' and confirm both tags exist. If either is missing, list available tags and stop.
git diff --name-only <from-tag>..<to-tag> -- contracts/
Exclude contracts/spells/, contracts/mocks/, and test/ paths. If no files remain, report "No contract changes" and stop.
For each changed file: is it an exported contract, interface file, deployer, or other? If none are frontend-facing, report that and stop.
For each changed interface file and deployer file, read the diff (git diff <from-tag>..<to-tag> -- <file>) and the <to-tag> version of the file (git show <to-tag>:<file>).
Focus on:
4a. Struct/Enum Changes (interface files only)
4b. Event Changes (interface files only)
4c. Deployer Changes (FolioDeployer.sol, GovernanceDeployer.sol)
Report changes that affect how the frontend calls the deployer:
FolioFlags that the caller must populate)Do NOT report internal implementation details like deploy ordering, temporary ownership patterns, or internal role grant/renounce sequences — these are invisible to the caller.
============================================================
FRONTEND CHANGES REPORT: <from-tag> -> <to-tag>
============================================================
Releases:
- <from-tag>: https://github.com/reserve-protocol/reserve-index-dtf/releases/tag/<from-tag>
- <to-tag>: https://github.com/reserve-protocol/reserve-index-dtf/releases/tag/<to-tag>
------------------------------------------------------------
STRUCT & ENUM CHANGES
------------------------------------------------------------
If none: No struct/enum changes detected.
Otherwise, organize by interface file:
### IFolio (contracts/interfaces/IFolio.sol)
[+] struct NewStruct { address token; uint256 amount; }
[-] enum RemovedEnum
[~] struct ModifiedStruct: added field 'uint256 newField'
------------------------------------------------------------
EVENT CHANGES
------------------------------------------------------------
If none: No event changes detected.
Otherwise, organize by interface file:
### IFolio (contracts/interfaces/IFolio.sol)
[+] NewEvent(address indexed sender, uint256 amount)
[-] OldEvent(address)
[~] ModifiedEvent: added indexed to 'sender' parameter
------------------------------------------------------------
DEPLOYER CHANGES
------------------------------------------------------------
If none: No deployer changes detected.
Otherwise, summarize per deployer:
### FolioDeployer (contracts/deployer/FolioDeployer.sol)
- <concise bullet describing what changed and why it matters for frontend>
------------------------------------------------------------
RECOMMENDATIONS
------------------------------------------------------------
Provide 2-5 actionable bullet points for the frontend team:
pnpm export)[+] = addition[-] = removal[~] = modificationdevops
Local text-to-speech via sherpa-onnx (offline, no cloud)
devops
Feishu cloud storage file management. Activate when user mentions cloud space, folders, drive.
devops
Feishu document read/write operations. Activate when user mentions Feishu docs, cloud docs, or docx links.
devops
Local text-to-speech via sherpa-onnx (offline, no cloud)