Standardize, debug, or execute Tauri iOS TestFlight and macOS Apple release pipelines, including App Store Connect upload auth, Apple Distribution signing, provisioning profiles, notarization, bundle/version metadata, and single-packet release credential asks.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add OpenCoven/coven --skill tauri-apple-release --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Tauri Apple Release?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/opencoven-tauri-apple-release)More formats (shields.io, HTML) on the badges page.
---
name: tauri-apple-release
description: Standardize, debug, or execute Tauri iOS TestFlight and macOS Apple release pipelines, including App Store Connect upload auth, Apple Distribution signing, provisioning profiles, notarization, bundle/version metadata, and single-packet release credential asks.
---
# Tauri Apple Release
Use this skill for Tauri iOS/TestFlight or macOS Apple release work.
## Prime directive
Treat Apple release work as **one release packet**, not a sequence of drip asks.
A usable packet includes:
1. **Team/app metadata** — Bundle ID, Team ID, version, build number, App Store Connect app record.
2. **Upload auth** — App Store Connect API key _or_ Apple ID app-specific password + provider public ID.
3. **Distribution signing** — Apple Distribution cert/private key and App Store provisioning profile for iOS; Developer ID cert + notarization auth for macOS direct download.
4. **Artifact path** — `.ipa`, `.app`, `.dmg`, etc.
Never ask for only “the issuer ID” unless the packet is otherwise complete and that exact field failed.
## Safety rules
- Do not print or paste private key, `.p8`, `.p12`, app-specific password, provisioning profile contents, or real secret values.
- It is okay to discuss non-secret identifiers: Bundle ID, Team ID, certificate SHA-1 fingerprint, profile UUID/name, key ID, issuer ID/provider public ID.
- Prefer 1Password/GitHub Secrets/env vars for secrets.
- Do not upload to TestFlight/App Store Connect until export validation passes with an App Store distribution provisioning profile.
## Standard triage
Start by identifying which gate failed:
1. **Build correctness** — `pnpm build`, `tauri build`, `tauri ios build` fails before Apple export/upload.
2. **Apple trust/signing** — archive/export fails, invalid provisioning profile, cert mismatch, wrong Bundle ID/Team ID.
3. **Release transport** — upload auth, provider/issuer mismatch, TestFlight processing.
Use exact Apple error numbers when present, e.g. `90161 Invalid Provisioning Profile`.
## Single release packet ask
When blocked on credentials/signing, ask once:
```text
Please provide/store ONE complete Apple release packet for <app>. Do not paste private key, certificate, provisioning profile, or app-specific password contents in chat.
App metadata:
- Bundle ID: <exact bundle id>
- Team ID: <Apple Developer Team ID>
- Version/build: <short version>/<build number>
- App Store Connect app record exists: yes/no
Upload auth — choose A or B:
A. Team App Store Connect API key:
- APPLE_API_KEY_ID
- APPLE_API_ISSUER
- APPLE_API_KEY_PATH or APPLE_API_KEY_P8 in secrets
B. Apple ID fallback:
- APPLE_ID
- APPLE_APP_SPECIFIC_PASSWORD
- APPLE_PROVIDER_PUBLIC_ID
Distribution signing — choose A, B, or C:
A. Xcode automatic signing account added on build Mac
B. Manual signing assets:
- Apple Distribution .p12 + password
- App Store provisioning profile for exact Bundle ID
C. Team ASC API key that xcodebuild can use for provisioning
```
## iOS/TestFlight workflow
1. Confirm metadata:
- `src-tauri/tauri.conf.json > identifier`
- Tauri version/build overrides if present
- App Store Connect app record matches the exact Bundle ID
2. Build/archive:
- `pnpm tauri ios build --export-method app-store-connect`
3. Verify profile type:
- `get-task-allow = false`
- no `ProvisionedDevices`
- profile App ID matches `TEAM_ID.BundleID`
- profile includes the certificate installed on the build Mac
4. Upload only after export is valid.
### Cert/profile mismatch rule
If the provisioning profile is for the right Bundle ID but includes an old cert fingerprint, and the Mac has a different usable Apple Distribution identity:
- Prefer regenerating/downloading the App Store provisioning profile selecting the current usable cert.
- Avoid reviving old cert private keys unless regeneration is impossible.
Example language:
```text
This is a cert/profile mismatch, not a general TestFlight failure. Regenerate the App Store provisioning profile for <Bundle ID> selecting the currently installed Apple Distribution cert <fingerprint>, then rerun export/upload.
```
## macOS direct-download workflow
1. Build signed app/DMG with Developer ID Application identity.
2. Notarize using App Store Connect credentials.
3. Staple and validate:
- `codesign --verify --deep --strict path/to/App.app`
- `spctl --assess --type execute --verbose path/to/App.app`
- `xcrun stapler validate path/to/App.app`
- `xcrun stapler validate path/to/App.dmg`
## Common Apple auth nuance
A `.p8` key can work for notarization or upload with `--api-key-subject user` but still fail automatic provisioning/export if it is not a team App Store Connect API key. For automated iOS export, use one of:
- Xcode account automatic signing,
- manual distribution cert + App Store profile,
- a team API key that `xcodebuild` can use for provisioning.
## Repo doctor
If the repo has a release doctor, run it before asking the user:
```bash
pnpm run release:credentials:doctor
```
If missing, add one or apply the single packet ask above manually.
## References
For deeper implementation details, read `references/apple-release-packet.md`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!