
asc-analytics-reports
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.
- Installs
- 888
- Last 24h
- +25
- Trending rank
- #4991
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/rorkai/app-store-connect-cli-skills --skill asc-analytics-reports- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads asc-analytics-reports automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
asc analytics reports
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.
Guardrails
- Treat report inventories, signed URLs, downloaded segments, and identifiers as confidential business data.
- Prefer an existing request. Creating a request changes App Store Connect state
and requires an Admin-authorized profile; obtain explicit user approval before
running
asc analytics request. - Never delete or replace a request as part of collection.
- Use
asc analytics download; do not fetch or persist signed segment URLs separately. - Store private files outside the source repository with owner-only permissions.
- Do not claim the collection is complete if any expected segment is missing or fails verification.
1. Verify the CLI contract
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.
2. Prepare private storage
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.
3. Find an existing request
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.
4. Discover and select report instances
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.
5. Download every segment
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 the whole report.
6. Verify the downloaded files
For each file, compare the compressed byte count with sizeInBytes and the
lowercase MD5 digest with checksum. Use local system tools such as:
actual_size="$(wc -c < "$SEGMENT_FILE" | tr -d ' ')"
actual_md5="$(openssl dgst -md5 -r "$SEGMENT_FILE" | awk '{print tolower($1)}')"
expected_md5="$(printf '%s' "$CHECKSUM" | tr '[:upper:]' '[:lower:]')"
Require actual_size to equal sizeInBytes and actual_md5 to equal
expected_md5. On a mismatch, mark that segment failed, keep the raw error
private, and do not claim a complete collection. asc analytics download
refuses to overwrite an existing output, so retry the failed segment once to a
new path such as $ASC_ANALYTICS_DIR/segments/$SEGMENT_ID.retry-1.txt.gz. Verify
the retry independently and use it only if both checks pass. Keep the original
failed file unless the user approves its deletion. Do not parse or analyze a
file until verification succeeds.
7. Report the result
Return a concise summary containing:
- the selected processing date and granularity values;
- counts of reports, instances, expected segments, downloaded segments, and verified segments;
- whether the collection is complete;
- failed or missing segment IDs, if any, without signed URLs or report rows;
- the private output directory when appropriate for the current user session.
Do not include analytics values, signed URLs, profile names, credentials, or raw rows in a public artifact. Keep the verified files for the user's next workflow. Ask before deleting the temporary directory or any downloaded evidence.
FAQ
What does the asc-analytics-reports skill do?
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.
How do I install asc-analytics-reports?
Run npx skills add https://github.com/rorkai/app-store-connect-cli-skills --skill asc-analytics-reports in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/asc-analytics-reports/ (personal) or .claude/skills/asc-analytics-reports/ (project).
Which AI agents can use asc-analytics-reports?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is asc-analytics-reports safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains asc-analytics-reports?
It is published by rorkai in rorkai/app-store-connect-cli-skills. It has 888 recorded installs.
More from rorkai/app-store-connect-cli-skills
asc-cli-usage
rorkai/app-store-connect-cli-skills
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 App Store Connect via the CLI.
asc-release-flow
rorkai/app-store-connect-cli-skills
Orchestrate App Store releases with asc, including staging a version, uploading or building an artifact, publishing, and submitting for review. Use when the user wants to prepare or execute a release. Keep Game Center item preparation in this skill; route other readiness failures, stuck submissions, cancellation, and retry decisions to asc-submission-health.
asc-submission-health
rorkai/app-store-connect-cli-skills
Diagnose App Store submission blockers and operate review health with asc, including readiness validation, repair routing, status monitoring, cancellation, and retry decisions. Use when validation fails, a version is not in a valid state, review status is unclear or stuck, or a failed submission must be repaired and retried. For staging, upload, publication, and submission execution, use asc-release-flow.
asc-metadata-sync
rorkai/app-store-connect-cli-skills
Sync, validate, and apply App Store metadata and store assets with asc. Use when updating localizations, keywords, App Clip or preview assets, Asset Library media and placements, or migrating legacy fastlane metadata.
asc-xcode-build
rorkai/app-store-connect-cli-skills
Build, archive, export, and manage Xcode version/build numbers with asc, including portable iOS compilation and packaging. Use when creating an IPA or PKG for App Store Connect, TestFlight, or registered-device release testing.
asc-id-resolver
rorkai/app-store-connect-cli-skills
Resolve App Store Connect IDs (apps, builds, app and digital-goods versions, groups, testers) from human-friendly names using asc. Use when commands require IDs.
Popular data & databases skills
supabase-postgres-best-practices
supabase/agent-skills
Postgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill BEFORE writing or changing anything that lives in a Postgres database: creating or altering tables and columns (including choosing column types), schema design, migrations and declarative schema files, RLS policies and the tests that verify them, indexes, triggers, database functions, queues and scheduled jobs (pgcron, pgmq), vector/semantic search (pgvector), and restoring dumps (pgrestore) or importing data. Also load it when diagnosing slow queries, high CPU, timeouts, EXPLAIN plans, connection exhaustion, locking, bloat, or rows visible to the wrong user or tenant. This is not just a performance guide — schema, migration, security, and SQL authoring tasks need these rules too, even for a one-column change or a single query.
prisma-client-api
prisma/skills
Prisma Client API reference covering model queries, filters, operators, and client methods. Use when writing database queries, using CRUD operations, filtering data, or configuring Prisma Client. Triggers on "prisma query", "findMany", "create", "update", "delete", "$transaction".
prisma-database-setup
prisma/skills
Deprecated compatibility name for prisma-orm-setup. Use only when a user or existing integration explicitly invokes prisma-database-setup; otherwise select prisma-orm-setup.
prisma-cli
prisma/skills
Prisma ORM 7 CLI reference for existing Prisma 7 applications or explicitly selected Prisma 7 workflows. Covers prisma init, generate, migrate, db, dev, studio, and mcp. For setup, connection repair, or Prisma 8, use prisma-orm-setup; not the Prisma Platform CLI.
prisma-postgres
prisma/skills
Deprecated compatibility name for prisma-postgres-setup. Use only when a user or existing integration explicitly invokes prisma-postgres; otherwise select prisma-postgres-setup.
prisma-driver-adapter-implementation
prisma/skills
Required reference for Prisma ORM 7 SQL driver adapter work. Use when implementing or modifying adapters, adding database drivers, or touching SqlDriverAdapter, Transaction, savepoint, result mapping, or DriverAdapterError behavior. Covers current transaction lifecycle, optional savepoint hooks, original database-error preservation, and verification.