---
name: multi-agent-testflight-validation
language: en
description: "iOS-pinned alias of store-ready: same three gates on an iOS build, one implementation. Validates a TestFlight / App Store package, never uploads. Use when an iOS build is about to go to TestFlight, or a submission was rejected and you need why."
user-invocable: true
argument-hint: "[repo]  -  empty = pick from prefs; repo name or path; --ipa=<path>; --archive=<path>; --resume"
---

# multi-agent-testflight-validation  -  iOS alias for store-ready

This skill is an alias. The implementation it used to carry was merged into
`multi-agent-store-ready`, which runs the same three gates on iOS and adds the
Android side, so there is one flow to maintain instead of two that had already
started to drift.

The name is kept because it is the one people reach for when the target is
TestFlight, and removing a surface is a breaking change.

## Dispatcher

Read and follow:

```
$HOME/.copilot/multi-agent/commands/store-ready.md
```

(Equivalent on Claude Code: `$HOME/.claude/commands/multi-agent/store-ready/SKILL.md`.)

Run it with **platform pinned to `ios`** and skip its platform-detection step. Pass
`$ARGUMENTS` through verbatim: `--ipa=`, `--archive=`, a repo name or path, and
`--resume` all mean exactly what they mean there.

`--aab=` / `--apk=` are Android inputs and are not valid here. If one is supplied,
do not silently switch platform  -  say the Android inputs belong to
`multi-agent-store-ready`, and stop.

## What you get

Unchanged from before the merge, on the iOS path:

| Gate | What runs | Needs |
|---|---|---|
| **1. Static** | `ios_app_store_audit` (18 rules, real ITMS codes) | an `.xcarchive` |
| **2. Authoritative** | `ios_testflight_validate` → `altool --validate-app` | an `.ipa` + credentials |
| **3. Policy** | `ai-ios-toolkit:app-store-review` skill vs repo source | repo checkout |

A skipped gate is never folded into the pass count, and the run never uploads. The
report lands in `~/StoreChecks/ios-<repo>-<branch>-<timestamp>/report.md`.
