android-studio | https://developer.android.com/studio/releases (manual) | hex (sha256) | Redirector URLs can return 302 for invalid versions. Verify real DMG and keep app name Android Studio.app (not preview builds). |
claude-code | v=$(curl -fsSL "https://registry.npmjs.org/@anthropic-ai/claude-code/latest" | jq -r '.version') then curl -fsI "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/${v}/darwin-arm64/claude" | SRI (hash) | Package is native binary (not npm install). Treat npm version as candidate and validate binary URL exists. |
claude-desktop | curl -fsSL "https://downloads.claude.ai/releases/darwin/universal/RELEASES.json" | jq | SRI (hash) | Read .currentRelease for the version and .releases[].updateTo.url for the exact versioned zip. Prefer bash scripts/update-claude-desktop.sh to keep version, url, and hash aligned together. |
cleanshot-x | https://cleanshot.com/changelog (manual) | hex (sha256) | Download URL pattern: .../CleanShot-X-${version}.dmg. |
codex-app | Static URL only. Use cache-busting for checks/prefetch: u="https://persistent.oaistatic.com/codex-app-prod/Codex.dmg?ts=$(date +%s)" then nix store prefetch-file --json --refresh "$u" | SRI (hash) | CDN can serve stale blob at the bare URL. Keep derivation URL static, but use cache-busting URL for version/hash discovery. Derivation validates CFBundleShortVersionString and fails with expected version to set. |
codex-cli | gh api repos/openai/codex/releases/latest --jq '.tag_name' | sed 's/^rust-v//' | SRI (hash) | URL tag prefix is rust-v${version}. |
minisim | gh api repos/okwasniewski/MiniSim/releases/latest --jq '.tag_name' | sed 's/^v//' | hex (sha256) | ZIP filename: MiniSim.app.zip. |
spotify | nix store prefetch-file --json --refresh "https://download.scdn.co/SpotifyARM64.dmg" then read Spotify.app/Contents/Info.plist CFBundleVersion | SRI (hash) | CDN URL is mutable. Keep the derivation URL static, but use --refresh for version/hash discovery and hash-pin the exact artifact. |
worktrunk | gh api repos/max-sixty/worktrunk/releases/latest --jq '.tag_name' | sed 's/^v//' | SRI (hash) | Tarball URL uses worktrunk-aarch64-apple-darwin.tar.xz. |
zed-editor | gh api repos/zed-industries/zed/releases/latest --jq '.tag_name' | sed 's/^v//' | nix32 (sha256) | Keep version and release URL (v${version} + Zed-aarch64.dmg) aligned. |