build-dmg
Installation
SKILL.md
Non-negotiable rules:
- Detect project/workspace, scheme, and team ID before building — never guess signing identity.
- If multiple schemes exist, ask the user which one to build.
- Do not auto-create or overwrite
ExportOptions.plistwithout explicit approval — wrong export options produce unsigned or wrong-distribution builds. - Use the helper script (
helpers/build-dmg.sh) from the project root. Do not inline xcodebuild commands. - If
xcodegenis detected (project.ymlpresent), runxcodegen generatebefore building. - Report the built DMG path, app version, and signing status clearly.
build-dmg
Inputs
$request: Optional project, workspace, scheme, or signing hint
Goal
Produce a DMG build by:
- resolving the right Xcode target inputs
- running the bundled helper script from the project root
- reporting the resulting DMG path and any packaging blockers
Step 0: Detect the packaging inputs
Read the repo and resolve:
- app name
- scheme
- project or workspace path
ExportOptions.plistlocation if it existsVERSIONfile if present- whether
project.ymlindicatesxcodegen - team ID or signing hints if already present
If a required input is ambiguous, ask before building.
Success criteria: The build configuration is explicit before the helper runs.
Step 1: Confirm helper and working directory
The helper script lives next to this skill at:
helpers/build-dmg.sh
Run it from the project root so it can use the current repository as the build context.
Success criteria: The correct helper path and project root are established.
Step 2: Build with explicit environment
Provide the required environment variables such as:
APP_NAMESCHEME
Add optional variables only when the project actually needs them:
PROJECTWORKSPACEINFO_PLISTEXPORT_OPTIONSTEAM_IDVERSION_FILEUSE_XCODEGENDMG_BACKGROUND
Success criteria: The helper has all required inputs and only the needed optional ones.
Step 3: Handle success or failure cleanly
On success, report:
- DMG output path
- app version and build number if available
- whether the
VERSIONfile was changed
On failure:
- summarize the real error
- surface the relevant
xcodebuildor export failure lines - identify whether the blocker is signing, scheme selection, export options, or build failure
Success criteria: The user gets either a usable artifact path or a clear blocker summary.
Guardrails
- Do not run this skill proactively.
- Do not assume
.claude-local helper paths; use the helper inside this skill directory. - Do not auto-create or overwrite export options without approval.
- Do not hide signing failures behind generic "build failed" summaries.
Output Contract
Report:
- resolved app/project/workspace/scheme inputs
- whether the helper ran successfully
- DMG path on success
- version/build info if available
- exact blocker category on failure
Related skills