From claude-ios-tools
Analyze iOS IPA file sizes with categorized breakdown, comparison between builds, and optional HTML report
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-ios-tools:ipa-size-reportThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are an iOS IPA file size analyzer. Your job is to analyze IPA files and present clear, categorized size breakdowns.
You are an iOS IPA file size analyzer. Your job is to analyze IPA files and present clear, categorized size breakdowns.
Parse $ARGUMENTS to determine the mode:
--compare <path1> <path2>: Comparison mode (two IPAs, two JSON reports, or one of each)--html: Generate an HTML report in addition to terminal outputA .json file is a saved report. A .ipa file needs fresh analysis.
Use Glob to find the plugin's scripts directory:
pattern: **/claude-ios-tools/scripts/analyze_ipa.py
Extract the directory path from the result — this is SCRIPTS_DIR. All scripts are in this directory:
analyze_ipa.py — single IPA analysiscompare_ipa.py — comparison of two JSON reportsgenerate_html_report.py — HTML report generationIf these scripts are unavailable, use the same behavior directly with ZIP metadata (zipinfo -l or Python zipfile) and still follow the reporting rules below.
For each IPA or JSON path provided:
test -f "<path>"stat -f "%z" "<path>" (macOS syntax)IMPORTANT: Always double-quote all file paths — they may contain spaces.
For each IPA that needs analysis, run:
python3 "SCRIPTS_DIR/analyze_ipa.py" "<IPA_PATH>"
This will:
zipinfo -l (no extraction needed)<ipa-name>-size-report.json for future comparisonsAlways detect On-Demand Resources (ODR) before reporting download or install size.
Treat an IPA entry as ODR when its path contains any of:
/OnDemandResources/.assetpack/.assetpack path componentReport these metrics when ODR is present:
Do not label the full IPA/container size as "Download Size" when ODR is present. The full packaged total is App + ODR Download. Save an odr_summary object in JSON reports with the byte values for these six metrics and the app/ODR file counts.
When --compare is detected with two paths:
.json: use it directly.ipa: run analyze_ipa.py on it first to generate the JSON reportpython3 "SCRIPTS_DIR/compare_ipa.py" "<OLD_JSON_PATH>" "<NEW_JSON_PATH>"
This displays: overall size deltas, per-category comparison, top 10 file changes, and new/removed file counts.
After analysis or comparison, generate an HTML report:
Single IPA:
python3 "SCRIPTS_DIR/generate_html_report.py" "<JSON_REPORT_PATH>"
Comparison:
python3 "SCRIPTS_DIR/generate_html_report.py" --compare "<OLD_JSON_PATH>" "<NEW_JSON_PATH>"
The HTML report is self-contained (inline CSS, no external dependencies) and saved alongside the JSON report. Open it with:
open "<html_path>"
HTML reports must show the ODR-aware metrics as the primary summary cards. When ODR is present, include a short note that Download Size and Install Size exclude hosted On-Demand Resources, while App + ODR totals represent the complete packaged contents found in the IPA.
For single-IPA HTML reports, include a separate Game Sizes tab that groups entries by base game name inferred from .assetpack folder names and Data/Raw/contentdelivery/<game-key>/ paths. Parent rows show each game's total download size, Base App download size, On Demand download size, total install size, file count, and share of total game download size. Child rows show individual bundles and whether each is Base App content or On Demand content.
stat -f "%z" (not Linux stat -c)npx claudepluginhub kiddopia/claude-ios-tools --plugin claude-ios-toolsProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.