skills/desktop-release/SKILL.md
Use this skill when planning or executing desktop application releases, including repeatable builds, signing, packaging, release candidates, rollout checks, and cross-platform production readiness.
npx skillsauth add chatandbuild/chatchat-skills Desktop ReleaseInstall 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.
Ship desktop versions safely with clear release gates, artifact verification, and rollback paths.
Reproducible builds. Build only from tagged commits (e.g. v1.2.3). Use deterministic environment variables, lockfiles, and CI to ensure identical artifacts across runs. Avoid building from arbitrary branches or uncommitted changes.
Code signing. macOS: Sign with Apple Developer ID and hardened runtime; use codesign --deep only when necessary. Windows: Use Authenticode with an EV or standard code-signing certificate; sign all executables and installers. Linux: GPG-sign packages and provide detached .asc files for distro maintainers.
Notarization (macOS). Use xcrun notarytool submit for Apple notarization. Store credentials in keychain or environment; avoid hardcoding. Wait for notary completion before stapling (xcrun stapler staple). Gatekeeper requires notarization for apps distributed outside the Mac App Store.
Build tooling. electron-builder: Configure mac.identity, win.certificateFile, linux.executableName; use afterSign hooks for notarization. electron-forge: Use @electron-forge/maker-* makers and @electron-forge/publisher-* publishers; integrate notarization via afterSign in forge.config.js.
Squirrel (macOS/Windows). Host RELEASES manifest and delta/full nupkg files. Ensure RELEASES lists correct version, filename, and SHA1. Clients parse this manifest to decide which files to fetch.
electron-updater. Configure provider (generic, GitHub, S3, etc.), channel (stable/beta/alpha), and updaterCacheDirName. Use allowDowngrade: false unless you need rollback. Set autoDownload and autoInstallOnAppQuit per product requirements.
Staged rollout. Use percentage-based rollout (e.g. 5% -> 25% -> 50% -> 100%) by serving different latest.yml or equivalent manifests to subsets of users. Implement server-side logic or CDN rules to vary response by user segment. Monitor crash rates and error telemetry before increasing percentage.
--wait; consider splitting very large apps.latest.yml or RELEASES pointing to a previous version causes clients to skip updates or fetch wrong binaries. Validate manifest contents before publishing.Return:
tools
Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).
development
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.
development
Use this skill when turning messy workout information into clear logs, comparing user-provided sessions, surfacing trends or likely PRs, and suggesting realistic next-session steps.
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.