app-packaging

Build and distribute cross-platform application artifacts via CI with checksums and Release attachments.

1|Updated Sep 11, 2026
One-click install
npx skills add https://github.com/lldwb/lldwb-claude-skills --skill app-packaging-lldwb
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: app-packaging
Source: https://github.com/lldwb/lldwb-claude-skills/tree/main/skills/app-packaging
Command: npx skills add https://github.com/lldwb/lldwb-claude-skills --skill app-packaging-lldwb

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires postject, and includes references (resource) and assets (resource) components.

What problem does it solve? Turning an application into something an end user can run without installing a development environment is error-prone: wrong artifact format, broken cross-platform builds, lost executable bits, and mismatched version numbers. This Skill provides a standard workflow for packaging and distributing applications so users receive a ready-to-run product. ## Core Features & Use Cases - Artifact Format Decision: Choose between bare directory, zip/tar.gz, single-file executable, or installer based on how many steps the end user must perform on the target machine. - Cross-Platform Build Orchestration: Define the OS × architecture matrix (Windows x64, macOS arm64, Linux x64), respect cross-compilation boundaries (native modules, code caches, signed binaries must build on the target platform), and use CI matrix builds. - CI Distribution & Verification: Build via GitHub Actions, publish to Release attachments (not Artifacts) with SHA256SUMS checksums, inject versions from git tags, and smoke-test in a clean environment. - Use Case: You have a Node.js CLI tool and want to ship single-file executables for Windows, macOS, and Linux. The Skill guides you through Node SEA packaging, a matrix workflow, and publishing checksums to a GitHub Release. ## Quick Start Package my Node CLI into single-file executables for Windows, macOS, and Linux, set up a GitHub Actions workflow that builds them on tag push, and publish the artifacts with checksums to a Release.

Frequently Asked Questions about app-packaging

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a single-file executable from a Node.js application?

Use Node SEA: first bundle your app into a single JS file with esbuild or ncc, then run node --build-sea with a config file on Node 25.5.0 or later. Older Node versions use the blob plus postject injection path, and macOS binaries must be re-signed after injection.

What is the difference between GitHub Actions artifacts and Release attachments?

Artifacts are temporary workflow intermediates: they expire after 90 days, get zipped, and lose executable permissions. Release attachments are original files kept permanently with public download links, so anything meant for end users should go to Release attachments.

Can I cross-compile a Node SEA executable for another platform?

Yes, by pointing the executable field in the SEA config at a Node binary for the target platform. However, useCodeCache and useSnapshot must be false for cross-platform builds, and the blob-generating Node version must match the base binary version.

Why does my Linux binary lose its executable bit after CI?

GitHub Actions artifacts strip file permissions, setting files to 644. Either upload directly to Release attachments which preserve permissions, or tar the binary first and upload it as a single file with archive disabled.

When should I choose an installer over a single-file executable?

Choose an installer only when the application must write to system locations, registry entries, or shortcuts and needs formal uninstall and upgrade behavior. It carries the highest production and signing cost, with one installer per platform.

Why does re-uploading a Release asset fail with a 422 error?

GitHub rejects uploading an asset with a name that already exists on the Release. Delete the old asset first or use gh release upload with the --clobber flag to overwrite same-name attachments when re-running a release.