Workflows
Workflows
Section titled “Workflows”Use these patterns when the user asks for an end-to-end App Store Connect workflow through Helm.
For any workflow, resolve helm-asc once using the setup steps in SKILL.md, then reuse the resolved command path. Prefer direct JSON commands over shell pipelines. If an output is too large to inspect comfortably in the terminal result, write it to a file and read that file with the host’s file-read tool.
When the agent generates files that Helm will upload, run helm-asc paths --agent and stage them under uploadsInbox before passing the path to an upload command.
Find app -> list versions -> create version
Section titled “Find app -> list versions -> create version”- Run
helm-asc apps list --agentwith a filter like--bundle-idor--nameuntil exactly one app matches. - Capture the app ID.
- Run
helm-asc apps <app-id> versions --agentto inspect existing versions and states. - If the user wants a new version, run
helm-asc apps <app-id> versions create ... --agent. - If the creation fails, inspect the JSON error message before retrying. App Store Connect often blocks version creation based on current review state.
Inspect localization fields -> download bundle -> upload bundle
Section titled “Inspect localization fields -> download bundle -> upload bundle”- Run
helm-asc localization fields --agentif you need the canonical field names before editing. - Run
helm-asc version <version-id> localizations --agentto discover locale coverage and localization IDs. - Download the bundle with
helm-asc version <version-id> localizations download --agent. - Edit the generated locale files under the JSON
rootPath. - Validate with
helm-asc version <version-id> localizations upload --path <rootPath> --dry-run --agent. - If the dry run is clean, rerun without
--dry-run. - If the command exits with partial failure, retry only the failed locales or fields.
Download or upload screenshots
Section titled “Download or upload screenshots”- Run
helm-asc version <version-id> screenshots --agentto inspect locale and device coverage first. - Download with
helm-asc version <version-id> screenshots download --agentwhen the user needs an editable baseline. - Before upload, ensure the directory layout under the JSON
rootPathmatches the CLI contract:<root>/<locale>/<deviceType>/NN_<filename>.<ext>. - Run
helm-asc version <version-id> screenshots upload --path <rootPath> --dry-run --agent. - Only remove
--dry-runafter the plan looks correct. - Use
--replaceonly when the user clearly wants existing screenshots replaced.
Download or upload previews
Section titled “Download or upload previews”- Run
helm-asc version <version-id> previews --agentto discover preview IDs, locales, and device types. - Download with
helm-asc version <version-id> previews download --agentwhen the user needs local assets. - Prepare the same directory contract used by the CLI for uploads under the JSON
rootPath. - Run
helm-asc version <version-id> previews upload --path <rootPath> --dry-run --agent. - If the user needs to change frame timing on one preview, switch to
helm-asc preview <preview-id> update ... --agent.
Upload build -> attach groups -> submit for beta review
Section titled “Upload build -> attach groups -> submit for beta review”- Discover the target app with
helm-asc apps list --agent. - Discover existing groups with
helm-asc apps <app-id> testFlightGroups --agent. - If the user names saved Helm group sets, discover aliases with
helm-asc apps <app-id> testFlightGroupAliases --agent; use alias IDs when names are ambiguous. - If the build archive was produced by the agent, stage it under the
uploadsInboxreturned byhelm-asc paths --agent. - Upload the build with
helm-asc apps <app-id> builds upload ... --agent. Pass--groups <id1,id2,...>,--aliases <name-or-id,...>, or both when the user wants automatic attachment after processing. - If the workflow depends on the processed build record, use the upload mode that waits for processing.
- Capture the resulting build ID from the JSON response.
- Attach groups with either
helm-asc build <build-id> attach ... --agentorhelm-asc testFlightGroup <group-id> add ... --agent, depending on which IDs you already have.build attachaccepts--aliasesas well as--groups. - Submit the build with
helm-asc build <build-id> submit-for-review --agent. - If the upload or attach steps return partial failure, inspect the per-group or localization rows and retry only the failed slices.
Do not submit for beta review automatically just because attach succeeded. Only include --submit during upload, or run submit-for-review, when the user has asked for submission.
List reviews -> reply to a review
Section titled “List reviews -> reply to a review”- Run
helm-asc apps <app-id> reviews --agentto locate the target review ID. - If the user wants canned review-request copy, use
helm-asc apps <app-id> reviews signature --agent. - Reply with
helm-asc review <review-id> reply --text <text> --agentorhelm-asc review <review-id> reply --file <path> --agent. - Re-fetch the review if you need to confirm the stored reply state.
When the reply body is more than a short sentence, write it to a file and use --file <path> so quoting, newlines, and apostrophes cannot be mangled by the shell.
List, create, or update in-app events
Section titled “List, create, or update in-app events”- Discover the target app with
helm-asc apps list --agent. - List events with
helm-asc apps <app-id> inAppEvents --agent. Use--state,--badge,--sort, or--limitto narrow large result sets. - Create a new event with
helm-asc apps <app-id> inAppEvents create --reference-name <name> --primary-locale <locale> --agent. - Inspect a single event with
helm-asc inAppEvent <event-id> --full --agentbefore mutating it. - For metadata or schedule changes, run
helm-asc inAppEvent <event-id> update ... --dry-run --agentfirst. - If the dry run is correct, rerun without
--dry-run.
Edit in-app event localizations
Section titled “Edit in-app event localizations”- Run
helm-asc inAppEvent fields --agentif you need supported field names and enum values. - Fetch current localizations with
helm-asc inAppEvent <event-id> localizations --agent. - Create a missing locale with
helm-asc inAppEvent <event-id> localizations create --locale <locale> --name <name> --short-description <text> --long-description <text> --dry-run --agent. - Update an existing locale with
helm-asc inAppEvent <event-id> localizations update --locale <locale> ... --dry-run --agent. - Remove
--dry-runonly after the planned event output matches the intended changes.
Upload in-app event assets
Section titled “Upload in-app event assets”- Run
helm-asc inAppEvent <event-id> localizations --agentto discover localization IDs or confirm locale codes. - If the agent created the file, run
helm-asc paths --agentand stage it under the returneduploadsInbox. - Upload with
helm-asc inAppEvent <event-id> assets upload --localization <localization-id-or-locale> --type eventCard|detailsPage <absolute-path> --agent. - Delete a mistaken asset only with explicit user approval:
helm-asc inAppEvent <event-id> assets delete --asset <asset-id> --asset-kind image|video --yes --agent.
Duplicate an in-app event
Section titled “Duplicate an in-app event”- Discover the source event with
helm-asc apps <app-id> inAppEvents --agent. - Inspect it with
helm-asc inAppEvent <source-event-id> --full --agent. - Duplicate with
helm-asc apps <app-id> inAppEvents duplicate --source <source-event-id> --reference-name <new-name> --agent. - Re-fetch the new event and update dates, localizations, and assets as needed. Asset copy is not automatic.
Submit an in-app event for review
Section titled “Submit an in-app event for review”- Discover the app and event with
helm-asc apps <app-id> inAppEvents --agent. - Confirm the event is ready with
helm-asc inAppEvent <event-id> --full --agent. - Discover or create an iOS submission with
helm-asc apps <app-id> submissions --agentorhelm-asc apps <app-id> submissions create --platform iOS --agent. - Attach the event with
helm-asc submission <submission-id> add-event --event <event-id> --agent. - Submit only when the user has explicitly approved it:
helm-asc submission <submission-id> submit --yes --agent.
Create or price IAP offers
Section titled “Create or price IAP offers”- Discover the product first. Use
helm-asc apps <app-id> inAppPurchases --agentfor non-subscription products, orhelm-asc apps <app-id> subscriptionGroups --agentfollowed byhelm-asc subscriptionGroup <group-id> subscriptions --agentfor subscriptions. - Inspect current offers with
helm-asc inAppPurchase <product-id> offers --agentorhelm-asc subscription <subscription-id> offers --agent. - For offer-code groups, create the group before creating custom or one-time codes:
helm-asc subscription <subscription-id> offers offer-code create --name <name> --customer-eligibility <value> ... --dry-run --agent. - For subscription offer-code groups, pass
--offer-modeand--durationtogether when the offer is not using product defaults. - Choose one pricing mode. Use
--pricing freefor free offers, explicit--price-point ISO3=idor--free-territory ISO3when you already know price point IDs, or calculated--strategy percentage|equalization|ppp. - For calculated offer prices, scope territories with
--territory <ISO3>repeats or--all-territories.--base-territoryis optional and advanced; omit it unless the user asks to override the product or app base territory. - Use
--strategy percentagewith exactly one of--percentageor--multiplier. Use--strategy equalizationwith optional--base-priceor--base-price-point. Use--strategy pppwith--ppp-indexand any needed PPP fallback flags. - Do not combine explicit price flags with calculated strategy flags. If a mixed strategy command fails validation, inspect the nearest
offers ... create --helpoutput and rerun a single-strategy dry run. - After a clean dry run and explicit user approval, rerun without
--dry-run; pass--yesonly when the user has approved the write. - Validate direct offer prices with the nested read-only price commands instead of relying on
priceCountor the App Store Connect UI:offers offer-code <offer-code-id> prices,offers introductory prices,offers promotional <promotional-offer-id> prices, oroffers win-back <win-back-offer-id> prices.