claude-skills  /  app-store-publish

app-store-publish v0.1.0

An end-to-end Mac App Store publishing pipeline for SwiftUI apps. Extracted from a real production release (Copied App by Magneton Labs) and rewritten as a reusable skill plus a stack of reference docs and drop-in templates.

View source on GitHub

Install

/plugin marketplace add YonedaAI/claude-skills
/plugin install app-store-publish@local-skills

Usage

Invoke the slash command and the skill will read your app's {{APP_NAME}}, {{BUNDLE_ID}}, {{TEAM_ID}}, {{ICLOUD_CONTAINER}}, and {{IAP_PRODUCT_ID}} from project state (or prompt for them), then walk you through each phase, delegating to the reference docs and drop-in templates as needed.

/app-store-publish

Phases

Seven sequential phases. Each one corresponds to a reference document in the plugin source.

1

Prerequisites

Apple Developer Program enrollment, App Store Connect app record creation, App Store Connect API key generation. Documents the access roles you need and the gotchas around team membership and API key permissions.

2

Fastlane setup

Gemfile, .env + .keys/ directory layout, and an asc_api_key helper that references the .p8 private key by path so it never leaves disk.

3

Certs and profiles

A single mas_setup lane that creates the Apple Distribution cert, the Mac Installer Distribution cert, and the Mac App Store provisioning profile via the App Store Connect API. Documents the Admin-role requirement, cert_id pinning, and the file-extension gotcha.

4

Sandbox entitlements

The MAS-vs-Developer-ID entitlement split, CloudKit under sandbox, AMFI's local-launch blocking, and a dev-signed mas_debug_build lane for sandbox compatibility testing without a TestFlight round-trip.

5

IAP integration

StoreKit 2 PurchaseManager pattern, SwiftData CloudKit's boot-time constraint, restart-prompt UX, the Transaction.updates listener, and a debug-only reconciliation bypass for local flag testing.

6

Metadata and screenshots

The fastlane/metadata/ directory layout, the required .txt files, and Retina-native screenshot capture using screencapture piped through sips for the App Store-required dimensions.

7

Submit and review

The mas_release lane, a review-notes template, and the one genuinely-manual step: creating IAP products in the App Store Connect web UI before they can be referenced by the build.

Drop-in templates

Each template uses placeholder substitution so it works for any SwiftUI MAS app.

Why this exists

Shipping a sandboxed macOS app with IAP to the Mac App Store involves about fifteen non-obvious gotchas across Apple's tooling, fastlane's opinions, and SwiftData's quirks. This plugin captures them all in one place so the next app takes an afternoon, not a week.

Requirements