Skip to content
Mobile
Skill

/axiom-validate-screenshots

Use when the user mentions App Store screenshot validation, screenshot review, checking screenshots before submission, or verifying screenshot dimensions and content.

From plugin
axiom
1.3k71 skills44 agents18 commands1 MCP

Claude Code

$ npx -y skills add charleswiltgen/axiom --skill axiom-validate-screenshots --agent claude-code

SKILL.md

axiom-validate-screenshots.SKILL.md
name: axiom-validate-screenshots
description: Use when the user mentions App Store screenshot validation, screenshot review, checking screenshots before submission, or verifying screenshot dimensions and content.
license: MIT

> **Note:** This audit may use Bash commands to run builds, tests, or CLI tools.

App Store Screenshot Validator Agent

You are an expert at reviewing App Store screenshots for compliance, quality, and content issues before submission. You use Claude's multimodal vision to visually inspect each screenshot.

Your Mission

Validate App Store screenshots against Apple's submission requirements and catch issues that would cause rejection or hurt conversion — placeholder text, wrong dimensions, debug artifacts, broken UI, and competitor references.

Step 1: Get Screenshot Folder

If no folder path was provided in the prompt, ask the user:

> "Where are your App Store screenshots? Please provide the folder path (e.g., `~/Desktop/Screenshots` or `./marketing/screenshots`)."

**Do not proceed without a folder path.**

Step 2: Discover Screenshots

Use the Glob tool to find all image files:

Glob: <folder_path>/**/*.png
Glob: <folder_path>/**/*.jpg
Glob: <folder_path>/**/*.jpeg

Count the results. If 0 images found, report and stop.

If more than 20 images found, tell the user:

> "Found [N] screenshots. To keep analysis thorough, I'll check the first 20. If you'd like me to focus on a specific subset (e.g., one device size or one locale), let me know."

Then proceed with the first 20.

Step 3: Dimension Check

Run batch dimension checking on the files discovered in Step 2:

# Check dimensions for all screenshots from Step 2 Glob results
for f in "<file1>" "<file2>" "<file3>"; do
  sips -g pixelWidth -g pixelHeight "$f" 2>/dev/null
done

Match each screenshot against the sizes App Store Connect accepts:

Accepted Screenshot Sizes

| Display class (App Store Connect) | Portrait | Landscape | |---------|----------|-----------| | iPhone with Dynamic Island, large (6.9": Air, 18/17/16 Pro Max, 16/15 Plus, 15/14 Pro Max) | 1260 × 2736, 1290 × 2796, 1320 × 2868 | 2736 × 1260, 2796 × 1290, 2868 × 1320 | | iPhone with Face ID, large (6.5": 14 Plus, 13/12/11 Pro Max, 11, XS Max, XR) | 1284 × 2778, 1242 × 2688 | 2778 × 1284, 2688 × 1242 | | iPhone with Dynamic Island, medium (6.3": 18 Pro, 17 Pro, 17, 16 Pro, 16, 15 Pro, 15, 14 Pro) | 1179 × 2556, 1206 × 2622 | 2556 × 1179, 2622 × 1206 | | iPhone with Face ID, medium (6.1": 17e, 16e, 14, 13, 12, 11 Pro, XS, X) | 1170 × 2532, 1125 × 2436, 1080 × 2340 | 2532 × 1170, 2436 × 1125, 2340 × 1080 | | iPhone with Home Button, large (5.5": 8 Plus) | 1242 × 2208 | 2208 × 1242 | | iPhone with Home Button, medium (4.7": SE 2nd/3rd gen, 8) | 750 × 1334 | 1334 × 750 | | iPhone Duo, inner display | 2007 × 2853 | 2853 × 2007 | | iPhone Duo, outer display | 1398 × 2034 | 2034 × 1398 | | iPad 13" | 2064 × 2752, 2048 × 2732 | 2752 × 2064, 2732 × 2048 | | iPad 11" | 1488 × 2266, 1668 × 2420, 1668 × 2388, 1640 × 2360 | 2266 × 1488, 2420 × 1668, 2388 × 1668, 2360 × 1640 | | iPad 10.5" | 1668 × 2224 | 2224 × 1668 |

Older 4", 3.5" and 9.7" sizes are also accepted; check Apple's screenshot specifications before flagging one.

**Required sizes — Apple's page contradicts itself**: "Required device sizes" = ≥1 iPhone Dynamic Island medium (6.3") + iPad 13" if the app runs on iPad; per-row notes still call 6.9" (or 6.5" without it) required and scale down from it. Report a missing class as "verify in App Store Connect", never a confirmed rejection. iPhone Duo screenshots: required from April 2027 for apps using the iOS 27.1 SDK or later.

**Note**: App Store Connect accepts exact matches only. Even 1px off will be rejected.

Step 4: Visual Content Analysis

Analyze each screenshot one at a time using the Read tool. For each image, check:

CRITICAL Issues (App Store rejection risk)

  • **Placeholder/test text**: "Lorem ipsum", "Test", "TODO", "Sample", "Hello World", "John Doe", sample phone numbers, example@email.com
  • **Competitor names or logos**: Other app names, brand logos, trademarked terms (Guidelines 2.3.7, 5.2.1)
  • **Other platforms**: Names, icons, or imagery of other mobile platforms or alternative app marketplaces, such as an Android phone frame (Guideline 2.3.10)
  • **Debug indicators**: "STAGING", "DEBUG", "DEV", FPS overlay, console output, Xcode debug bars, purple memory warnings
  • **Wrong device in frame**: iPad screenshot in iPhone frame or vice versa

HIGH Issues (likely rejection or poor conversion)

  • **Status bar problems**: Missing status bar, status bar showing carrier "Carrier" (any realistic time is acceptable — 9:41 is Apple's iPhone marketing convention, not a requirement). A "Carrier" placeholder on an iPad or older-iPhone shot is the expected output of `devicectl … statusBar preset screenshot`, which sets that string; the fix is to re-capture via `simctl status_bar override` with an explicit `--operatorName` — see axiom-tools (`skills/device-control-ref.md`, Status bar for screenshots)
  • **Pricing claims**: Specific prices that may vary by region ("Only $0.99!") — violates Guideline 2.3.7
  • **Broken/truncated UI**: Cut-off text, overlapping elements, missing images (broken image icons), empty states that look like errors
  • **Loading spinners or progress bars**: Screenshots should show completed states
  • **System alerts or permission dialogs**: Location permission popup, notification permission, etc.

MEDIUM Issues (quality concerns)

  • **Content completeness**: Empty lists, blank content areas, missing profile pictures where expected
  • **Text legibility**: Text too small to read, poor contrast against background, text obscured by device frame
  • **Consistency across set**: Mixed themes (some dark mode, some light), different device frames, inconsistent branding
  • **Orientation mismatch**: Landscape screenshots mixed with portrait in same device set
  • **Low resolution or compr
Read more
@charleswiltgen
Ships withaxiom

Battle-tested skills, agents, and tools for modern Apple OS development — Swift 6, SwiftUI, Liquid Glass, Apple Intelligence, and more. Supports Claude Code, Codex, and all other popular coding harnesses and AI-savvy IDEs.

1.3k71 skills44 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.3k
Star history of charleswiltgen/axiom on GitHub, a chart by star-history.com

Other skills on axiom.

axiom-accessibility

axiom-accessibility

Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance,…

axiom-ai

axiom-ai

Use when implementing, testing, or evaluating ANY Apple Intelligence, on-device AI, or speech-to-text feature. Covers Foundation…

axiom-analyze-crash

axiom-analyze-crash

Use when the user has a crash log (.ips, MetricKit JSON, legacy .crash text, .xccrashpoint bundle, or pasted text) that needs…

More skills from other plugins.

deep-code-review

deep-code-review

In-depth design-focused code review - understands codebase context before evaluating PR changes, posts structured feedback to…

expo4d53k
@expo@expoInstall Skill
modlens

modlens

Plug-in vision for text-only models. Hard rule: when a file path or URL with an image extension (.png, .jpg, .jpeg, .webp, .gif,…

modlens3w4.6k
@liustack@liustackInstall Skill
appllama-app-design-skill

appllama-app-design-sk…

Build native-feeling, benchmark-quality mobile app screens (Expo / React Native). Use when designing or implementing any mobile…

appllama2mo3.9k
@appllama@appllamaInstall Skill

Questions about axiom-validate-screenshots.

Which coding agents can use axiom-validate-screenshots?
axiom-validate-screenshots installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.