agentsclimarketplace

Makepad deployment

Skill SageV1/makepad-skills/skills/makepad-deployment

CRITICAL: Use for Makepad packaging and deployment. Triggers on: deploy, package, APK, IPA, 打包, 部署, cargo-packager, cargo-makepad, WASM, Android, iOS, distribution, installer, .deb, .dmg, .nsisFrom its SKILL.md

Install
npx -y skills add SageV1/makepad-skills --skill makepad-deployment

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 2 credential sources: `$YOUR_PROFILE_PATH` and 1 more.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 8 commands, including `cargo install cargo-packager --locked` and 7 more.

SKILL.md

10.0 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it

Makepad Packaging & Deployment

This skill covers packaging Makepad applications for all supported platforms.

Quick Navigation

PlatformToolOutput
Desktopcargo-packager.deb, .nsis, .dmg
Androidcargo-makepad.apk
iOScargo-makepad.app, .ipa
Webcargo-makepadWasm + HTML/JS

Desktop Packaging

Desktop packaging uses cargo-packager with robius-packaging-commands for resource handling.

Install Tools

# Install cargo-packager
cargo install cargo-packager --locked

# Install robius-packaging-commands (v0.2.0)
cargo install --version 0.2.0 --locked \
    --git https://github.com/project-robius/robius-packaging-commands.git \
    robius-packaging-commands

Configure Cargo.toml

Add packaging configuration to your Cargo.toml:

[package.metadata.packager]
product_name = "YourAppName"
identifier = "com.yourcompany.yourapp"
authors = ["Your Name or Team"]
description = "A brief description of your Makepad application"
# Note: long_description has 80 character max per line
long_description = """
Your detailed description here.
Keep each line under 80 characters.
"""
icons = ["./assets/icon.png"]
out_dir = "./dist"

# Pre-packaging command to collect resources
before-packaging-command = """
robius-packaging-commands before-packaging \
    --force-makepad \
    --binary-name your-app \
    --path-to-binary ./target/release/your-app
"""

# Resources to include in package
resources = [
    # Makepad built-in resources (required)
    { src = "./dist/resources/makepad_widgets", target = "makepad_widgets" },
    { src = "./dist/resources/makepad_fonts_chinese_bold", target = "makepad_fonts_chinese_bold" },
    { src = "./dist/resources/makepad_fonts_chinese_bold_2", target = "makepad_fonts_chinese_bold_2" },
    { src = "./dist/resources/makepad_fonts_chinese_regular", target = "makepad_fonts_chinese_regular" },
    { src = "./dist/resources/makepad_fonts_chinese_regular_2", target = "makepad_fonts_chinese_regular_2" },
    { src = "./dist/resources/makepad_fonts_emoji", target = "makepad_fonts_emoji" },

    # Your app resources
    { src = "./dist/resources/your_app_resource", target = "your_app_resource" },
]

before-each-package-command = """
robius-packaging-commands before-each-package \
    --force-makepad \
    --binary-name your-app \
    --path-to-binary ./target/release/your-app
"""

Linux (Debian/Ubuntu)

# Install dependencies
sudo apt-get update
sudo apt-get install libssl-dev libsqlite3-dev pkg-config \
    binfmt-support libxcursor-dev libx11-dev libasound2-dev libpulse-dev

# Build package
cargo packager --release

Output: .deb file in ./dist/

Windows

# Build NSIS installer
cargo packager --release --formats nsis

Output: .exe installer in ./dist/

macOS

# Build package
cargo packager --release

Output: .dmg file in ./dist/

Platform-Specific Configuration

# Linux (Debian)
[package.metadata.packager.deb]
depends = "./dist/depends_deb.txt"
desktop_template = "./packaging/your-app.desktop"
section = "utils"

# macOS
[package.metadata.packager.macos]
minimum_system_version = "11.0"
frameworks = []
info_plist_path = "./packaging/Info.plist"
entitlements = "./packaging/Entitlements.plist"
# Optional: signing identity for distribution
signing_identity = "Developer ID Application: Your Name (XXXXXXXXXX)"

# macOS DMG
[package.metadata.packager.dmg]
background = "./packaging/dmg_background.png"
window_size = { width = 960, height = 540 }
app_position = { x = 200, y = 250 }
application_folder_position = { x = 760, y = 250 }

# Windows NSIS
[package.metadata.packager.nsis]
appdata_paths = [
    "$APPDATA/$PUBLISHER/$PRODUCTNAME",
    "$LOCALAPPDATA/$PRODUCTNAME",
]

Mobile Packaging

Mobile platforms use cargo-makepad for building and packaging.

Install cargo-makepad

cargo install --force --git https://github.com/makepad/makepad.git \
    --branch dev cargo-makepad

Android

# Install Android toolchain
cargo makepad android install-toolchain

# Full NDK (recommended for complete support)
cargo makepad android install-toolchain --full-ndk

# Build APK
cargo makepad android build -p your-app --release

Output: .apk in ./target/makepad-android-app/

Run on device/emulator:

cargo makepad android run -p your-app --release

iOS

# Install iOS toolchain
cargo makepad apple ios install-toolchain

iOS Simulator:

cargo makepad apple ios \
    --org=com.yourcompany \
    --app=YourApp \
    run-sim -p your-app --release

Output: .app in ./target/makepad-apple-app/aarch64-apple-ios-sim/release/

iOS Device (requires provisioning):

First, create an empty app in Xcode with matching org/app names to generate provisioning profile.

cargo makepad apple ios \
    --org=com.yourcompany \
    --app=YourApp \
    --profile=$YOUR_PROFILE_PATH \
    --cert=$YOUR_CERT_FINGERPRINT \
    --device=iPhone \
    run-device -p your-app --release

Output: .app in ./target/makepad-apple-app/aarch64-apple-ios/release/

Create IPA for distribution:

cd ./target/makepad-apple-app/aarch64-apple-ios/release
mkdir Payload
cp -r your-app.app Payload/
zip -r your-app-ios.ipa Payload

Wasm Packaging

Build your Makepad app for web browsers.

# Install Wasm toolchain
cargo makepad wasm install-toolchain

# Build and run
cargo makepad wasm run -p your-app --release

Output in ./target/makepad-wasm-app/release/your-app/:

  • index.html - Entry point
  • *.wasm - WebAssembly module
  • *.js - JavaScript bridge
  • resources/ - Static assets

Serve locally:

cd ./target/makepad-wasm-app/release/your-app
python3 -m http.server 8080
# Open http://localhost:8080

Complete Example Cargo.toml

[package]
name = "my-makepad-app"
version = "1.0.0"
edition = "2024"

[dependencies]
makepad-widgets = { git = "https://github.com/makepad/makepad", branch = "dev" }

[profile.release]
opt-level = 3

[profile.release-lto]
inherits = "release"
lto = "thin"

[profile.distribution]
inherits = "release"
codegen-units = 1
lto = "fat"

[package.metadata.packager]
product_name = "My Makepad App"
identifier = "com.example.mymakepadapp"
authors = ["Your Name <[email protected]>"]
description = "A cross-platform Makepad application"
long_description = """
My Makepad App is a cross-platform application
built with the Makepad UI framework in Rust.
It runs on desktop, mobile, and web platforms.
"""
icons = ["./packaging/icon.png"]
out_dir = "./dist"

before-packaging-command = """
robius-packaging-commands before-packaging \
    --force-makepad \
    --binary-name my-makepad-app \
    --path-to-binary ./target/release/my-makepad-app
"""

resources = [
    { src = "./dist/resources/makepad_widgets", target = "makepad_widgets" },
    { src = "./dist/resources/makepad_fonts_chinese_bold", target = "makepad_fonts_chinese_bold" },
    { src = "./dist/resources/makepad_fonts_chinese_bold_2", target = "makepad_fonts_chinese_bold_2" },
    { src = "./dist/resources/makepad_fonts_chinese_regular", target = "makepad_fonts_chinese_regular" },
    { src = "./dist/resources/makepad_fonts_chinese_regular_2", target = "makepad_fonts_chinese_regular_2" },
    { src = "./dist/resources/makepad_fonts_emoji", target = "makepad_fonts_emoji" },
    { src = "./dist/resources/my-makepad-app", target = "my-makepad-app" },
]

before-each-package-command = """
robius-packaging-commands before-each-package \
    --force-makepad \
    --binary-name my-makepad-app \
    --path-to-binary ./target/release/my-makepad-app
"""

[package.metadata.packager.deb]
depends = "./dist/depends_deb.txt"
section = "utils"

[package.metadata.packager.macos]
minimum_system_version = "11.0"

[package.metadata.packager.nsis]
appdata_paths = ["$LOCALAPPDATA/$PRODUCTNAME"]

Quick Reference

TaskCommand
Install desktop packagercargo install cargo-packager --locked
Install resource helpercargo install --version 0.2.0 --locked --git https://github.com/project-robius/robius-packaging-commands.git robius-packaging-commands
Install mobile packagercargo install --force --git https://github.com/makepad/makepad.git --branch dev cargo-makepad
Package for Linuxcargo packager --release
Package for Windowscargo packager --release --formats nsis
Package for macOScargo packager --release
Build Android APKcargo makepad android build -p app --release
Build iOS (Simulator)cargo makepad apple ios --org=x --app=y run-sim -p app --release
Build iOS (Device)cargo makepad apple ios --org=x --app=y --profile=... --cert=... run-device -p app --release
Build Wasmcargo makepad wasm run -p app --release

Troubleshooting

Missing Resources

If app crashes with missing resources:

  1. Check resources array in Cargo.toml includes all Makepad resources
  2. Verify before-packaging-command runs successfully
  3. Check ./dist/resources/ contains expected files

iOS Provisioning

For iOS device deployment:

  1. Create empty app in Xcode with same org/app identifiers
  2. Run on physical device once to generate provisioning profile
  3. Note the profile path, certificate fingerprint
  4. Use --profile, --cert, --device flags

Android SDK Issues

# Reinstall toolchain with full NDK
cargo makepad android install-toolchain --full-ndk

Reference Files

  • references/platform-troubleshooting.md - Platform-specific deployment issues

External References

What ships with it: 1 file

4.9 KB alongside SKILL.md

Gives 0 of the 12 instructions most ship operate skills give in ~2.6k tokens

Counted across 1,077 of the 1,713 authors here whose files we hold, read 2026-09-06

  • Create GitHub releasein 44 of 1077, across 43 files
  • Run the test suitein 30 of 1077, across 25 files
  • Create and push git tagin 27 of 1077, across 26 files
  • Push commits and tagsin 27 of 1077
  • Create annotated tagin 25 of 1077, across 22 files
  • Ensure working tree is cleanin 24 of 1077
  • Check for product marketing context firstin 23 of 1077, across 6 files
  • Commit version bump changesin 22 of 1077, across 21 files
  • Update CHANGELOG.mdin 21 of 1077, across 20 files
  • Structure launch marketing across three channel typesin 20 of 1077, across 5 files
  • Commit and tag the releasein 20 of 1077, across 18 files
  • Update the CHANGELOG for new releasesin 19 of 1077

Said here and by no other author read

  • Install cargo-packager
  • Install robius-packaging-commands
  • Add packaging configuration to Cargo.toml
  • Install Android toolchain
  • Install iOS toolchain
  • Install Wasm toolchain

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.