Initial commit
This commit is contained in:
69
skills/update-package-version/SKILL.md
Normal file
69
skills/update-package-version/SKILL.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
name: update-package-version
|
||||
description: "This skill should be used when users need to update package versions in nix/pkgs directory with new release information including SHA256 checksums."
|
||||
---
|
||||
|
||||
# Update Package Version
|
||||
|
||||
This skill updates package versions in the nix/pkgs directory structure with new release information and checksums.
|
||||
|
||||
## When to Use
|
||||
|
||||
Use this skill when:
|
||||
- User requests updating a package to a new version
|
||||
- New release is available with updated binaries
|
||||
- Package follows the nix/pkgs directory structure with versions.json and package-specific .nix files
|
||||
|
||||
## How to Use
|
||||
|
||||
To update a package version, provide:
|
||||
1. Package name (as used in versions.json)
|
||||
2. New version number
|
||||
3. Release manifest URL (for SHA256 checksums)
|
||||
|
||||
Example invocation:
|
||||
"update rust-mcp-filesystem to 0.3.12 using manifest https://github.com/towry/rust-mcp-filesystem/releases/download/v0.3.12/dist-manifest.json"
|
||||
|
||||
## Process
|
||||
|
||||
1. **Fetch Release Manifest**: Use WebFetch to retrieve the dist-manifest.json from the release URL
|
||||
2. **Extract Checksums**: Parse the manifest to get SHA256 checksums for each platform/architecture
|
||||
3. **Update versions.json**: Update the package version in nix/pkgs/versions.json
|
||||
4. **Update Package .nix**: Update the SHA256 hash(es) in the corresponding package .nix file
|
||||
5. **Validate Changes**: Confirm all updates are applied correctly
|
||||
|
||||
## Expected Directory Structure
|
||||
|
||||
```
|
||||
nix/pkgs/
|
||||
├── versions.json # Contains package version mappings
|
||||
└── {package}.nix # Package-specific nix expression with SHA256 hashes
|
||||
```
|
||||
|
||||
## File Formats
|
||||
|
||||
### versions.json
|
||||
```json
|
||||
{
|
||||
"package-name": "version.number"
|
||||
}
|
||||
```
|
||||
|
||||
### Package .nix files
|
||||
- Use `sha256-map` with platform-specific hashes
|
||||
- Support platforms: aarch64-darwin, x86_64-darwin, aarch64-linux, x86_64-linux
|
||||
- Hash format: 64-character SHA256 string
|
||||
|
||||
## Validation
|
||||
|
||||
- Verify version number follows semantic versioning (x.y.z)
|
||||
- Confirm SHA256 hashes are valid 64-character hexadecimal strings
|
||||
- Ensure package exists in both versions.json and has corresponding .nix file
|
||||
- Check that platform mappings match available binaries in manifest
|
||||
|
||||
## Error Handling
|
||||
|
||||
If any step fails:
|
||||
- Report specific error (missing manifest, invalid checksum, file not found)
|
||||
- Do not proceed with partial updates
|
||||
- Suggest manual verification steps
|
||||
Reference in New Issue
Block a user