desktop-developmentlisted
Install: claude install-skill rkaliev/eng-kit
# Desktop development
Desktop apps live on machines you don't manage: different OS versions, locales, permissions, antivirus, proxies, no admin rights. They are updated in place, so a bad release sits on disk until the next update succeeds.
Platform details:
- `references/windows.md`: .NET, MSIX/installers, signing, services.
- `references/linux.md`: packaging, XDG, systemd, distributions.
## Always
- **Follow the existing stack and structure**, for example MVVM in WPF/WinUI, the main/renderer split in Electron, the Rust core plus web UI in Tauri. New windows copy an existing window's pattern.
- **Keep the UI thread free.** Do I/O, device access and heavy computation off the UI thread; marshal results back. Every long operation gets progress and cancellation.
- **Paths and files:**
- use platform APIs for app data, config, cache and logs, never hard-coded paths or the install directory (it's often read-only);
- handle long paths, spaces, non-ASCII user names and network drives;
- write atomically (write a temp file, then rename).
- **Processes and IPC:** pass argument arrays, not shell strings. Validate messages between processes (the Electron preload bridge exposes a minimal API, with `contextIsolation` on and `nodeIntegration` off). Enforce a single instance where needed.
- **Security:**
- never ship secrets in the app;
- store credentials in the OS store (Windows Credential Manager/DPAPI, libsecret/KWallet);
- validate update payloads with signatures;
- r