asc-ad-hoc-distributio…
Prepare, publish, resume, and verify private iOS release-testing installs with asc distribute. Use when distributing an IPA to registered devices outside…
Collect, download, and verify App Store Connect Analytics reports with asc. Use when users need to discover analytics report requests, select report instances by processing date or granularity, download every segment, or verify downloaded files against Apple's size and MD5
$ npx -y skills add rorkai/app-store-connect-cli-skills --skill asc-analytics-reports --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/asc-analytics-reportsContext preview
The summary Claude sees to decide when to auto-load this skill.
Collect, download, and verify App Store Connect Analytics reports with asc. Use when users need to discover analytics report requests, select report instances by processing date or granularity, download every segment, or verify downloaded files against Apple's size and MD5
name: asc-analytics-reports description: Collect, download, and verify App Store Connect Analytics reports with asc. Use when users need to discover analytics report requests, select report instances by processing date or granularity, download every segment, or verify downloaded files against Apple's size and MD5 metadata before analysis.
Collect a complete set of analytics report segments and verify the compressed files before handing them to a separate analysis workflow. Do not interpret, aggregate, or present the report contents as part of this skill.
confidential business data.
and requires an Admin-authorized profile; obtain explicit user approval before running `asc analytics request`.
separately.
fails verification.
Inspect the installed command before authentication or collection:
asc analytics view --help
Continue only when help lists `--processing-date`, `--granularity`, `--paginate`, and `--include-segments`. These filters require asc 3.5.0 or newer. If either filter is absent, ask the user to upgrade. Do not substitute the deprecated `--date` flag because it uses legacy local matching rather than Apple's server-side processing-date filter.
Create a private temporary directory outside the repository before capturing JSON or downloading segments:
umask 077
ASC_ANALYTICS_DIR="$(mktemp -d "${TMPDIR:-/tmp}/asc-analytics.XXXXXX")"
mkdir -m 700 "$ASC_ANALYTICS_DIR/segments"Redirect command output and errors into this directory. Do not paste raw inventory JSON or error output into chat, commits, issues, or pull requests.
Resolve the app ID and selected asc profile, then list every request:
asc --profile "$PROFILE" analytics requests \ --app "$APP_ID" \ --paginate \ --output json \ > "$ASC_ANALYTICS_DIR/requests.json" \ 2> "$ASC_ANALYTICS_DIR/requests.stderr"
Inspect the JSON structurally and select an existing usable request. Do not rely on `--state` when discovery works without it. If no usable request exists, stop and ask whether the user wants to create `ONGOING` or `ONE_TIME_SNAPSHOT` access. State the target app and profile before requesting approval. After approval, prefer `--reuse-existing` to avoid duplicates:
asc --profile "$APPROVED_PROFILE" analytics request \ --app "$APP_ID" \ --access-type "$ACCESS_TYPE" \ --reuse-existing \ --output json \ > "$ASC_ANALYTICS_DIR/request.json" \ 2> "$ASC_ANALYTICS_DIR/request.stderr"
Do not run that command without explicit approval. Read the returned request ID from the private JSON response before continuing:
REQUEST_ID="$(jq -er '.requestId' "$ASC_ANALYTICS_DIR/request.json")"
When a request was created or reused with the approved profile, set `ANALYTICS_PROFILE="$APPROVED_PROFILE"`. For an existing request discovered with the read-only profile, set `ANALYTICS_PROFILE="$PROFILE"`. Use that same profile for every subsequent `analytics view` and `analytics download` call.
First retrieve report and instance metadata without segment URLs:
asc --profile "$ANALYTICS_PROFILE" analytics view \ --request-id "$REQUEST_ID" \ --paginate \ --output json \ > "$ASC_ANALYTICS_DIR/discovery.json" \ 2> "$ASC_ANALYTICS_DIR/discovery.stderr"
Select an available `processingDate` and the granularity requested by the user. Accept `DAILY`, `WEEKLY`, and `MONTHLY`, individually or as a comma-separated list. Split the input on commas, trim each token, and normalize it to uppercase. Validate every token against that allowlist, including empty tokens. Report the invalid input and stop before running `analytics view`; never silently discard unsupported values or continue with an empty filter. After validation, remove duplicates and join the remaining values with commas. Treat `processingDate` as the date Apple processed the report, not necessarily the period represented by its rows.
Retrieve the filtered inventory, including all segment metadata:
asc --profile "$ANALYTICS_PROFILE" analytics view \ --request-id "$REQUEST_ID" \ --processing-date "$PROCESSING_DATE" \ --granularity "$GRANULARITY" \ --paginate \ --include-segments \ --output json \ > "$ASC_ANALYTICS_DIR/inventory.json" \ 2> "$ASC_ANALYTICS_DIR/inventory.stderr"
Always use `--paginate`; asc follows Apple-provided report and instance next links. Do not reconstruct, alter, or follow pagination URLs manually.
Parse `inventory.json` structurally. For every selected instance, enumerate all segments and retain each segment's exact ID, `sizeInBytes`, and `checksum` for verification. Do not print `downloadUrl`.
Download each segment by its request, instance, and segment IDs. Use a filename derived only from the segment ID and keep the compressed bytes intact. Analytics reports are tab-delimited text, so use `.txt.gz` rather than implying CSV:
SEGMENT_FILE="$ASC_ANALYTICS_DIR/segments/$SEGMENT_ID.txt.gz" asc --profile "$ANALYTICS_PROFILE" analytics download \ --request-id "$REQUEST_ID" \ --instance-id "$INSTANCE_ID" \ --segment-id "$SEGMENT_ID" \ --output "$SEGMENT_FILE" \ > /dev/null \ 2>> "$ASC_ANALYTICS_DIR/download.stderr"
Do not use `--decompress` before verification. If an instance has multiple segments, download every one; never treat the first segment as
A collection of Agent Skills for shipping with the asc cli (asc). These skills help agents run builds, TestFlight, metadata, submissions, signing, and Apple Ads workflows. This is a community-maintained, unofficial skill pack and is not affiliated with Apple.
Prepare, publish, resume, and verify private iOS release-testing installs with asc distribute. Use when distributing an IPA to registered devices outside…
Create a new App Store Connect app record via browser automation. Use when there is no public API for app creation and you need an agent to drive the New App…
Use when managing Apple Ads with asc, including OAuth profiles, ad-account discovery, Platform API v1 campaigns and targeting, reports, assets,…
Run an offline ASO audit on canonical App Store metadata under `./metadata` and surface keyword gaps using Astro MCP. Use after pulling metadata with `asc…
Track build processing, find latest builds, and clean up old builds with asc. Use when managing build retention or waiting on processing.
Guidance for using asc cli in this repo (flags, output formats, pagination, auth, and discovery). Use when asked to run or design asc commands or interact with…