Open source · MIT · Claude Code skill

Your App Store listing, built from your code.

Vitrin reads your iOS project, studies the competition and produces ASO-ready metadata, screenshots and animated App Previews — validated against Apple's current rules and uploaded with fastlane. You approve; it does the busywork.

git clone https://github.com/ardasnturk/auto-asc-metadata && auto-asc-metadata/skill/scripts/install.sh
Generated screenshot: Never break the streak, with a magnified calendar heatmap Generated screenshot: On your schedule, with a tilted device and a 'New stats in 1.2' sticker

Claude decides. The CLI does.

Creative choices — copy, keywords, art direction, shot list, video plan — are written by Claude into schema-checked JSON. Everything deterministic is a TypeScript CLI you can read, test and run in CI.

  1. 1

    Analyze

    Parses .pbxproj, Info.plist, entitlements, String Catalogs, asset catalogs, StoreKit and code signals into an app profile where every feature points to a file.

  2. 2

    Research

    Searches the App Store per storefront, reads competitors' screenshots with on-device OCR, extracts palettes and scores keyword candidates.

  3. 3

    Create

    Claude writes localized metadata and picks an art direction that stands out from competitors. Vitrin captures the simulator and renders screenshots, creatives and App Previews.

  4. 4

    Validate & upload

    Byte-accurate limits, forbidden terms, claim ↔ evidence, pixel sizes, video specs. Then a dry-run plan, your explicit approval, fastlane upload and a read-back.

Everything a listing needs

Metadata that fits

Name, subtitle, keyword field, description, promo text and What's New per locale. Grapheme and UTF-8 byte counting — alışkanlık is 10 characters but 13 bytes — no duplicates across fields, no competitor brands.

Screenshot engine

13 layouts from hero to callout, full-bleed, tilted and statement. Two-tier headlines with accent words, sticker and laurel badges, embedded fonts, RTL, automatic text fitting and exact pixel sizes without alpha.

Animated App Previews

Remotion compositions with 3D device entrances, camera zooms into real UI, counters, feature chips and kinetic typography — normalized to H.264 High@4.0, 30 fps, 15–30 s.

Truthful by design

Every headline, badge and video beat must link to an evidenced feature (App Review 2.3). Ratings come from the live App Store, testimonials only from your own reviews, verbatim.

Best practices built in

First three screenshots tell the story, at least 60 % real UI, headlines of five words or fewer, two lines max, no calls to action or other platforms — checked on every run.

Safe uploads

Keys stay in .env and are masked in every log. Uploads start with a dry-run plan, require approval, never touch version or release settings, and read back what App Store Connect stored.

Four ways to move

Pick a style per preview — or render all four with vitrin video --styles all and choose.

Showcase3D entrances, camera push-ins, light leaks
KineticWord-by-word type cards, punchy cuts
EnergeticTilted devices, banners, fast wipes
ClassicCalm entrances and fades

Every size Apple asks for

6.3" (required) and 6.9" iPhone, 13" iPad, iPhone Duo outer and inner displays, product page headers (21:9) and search result creatives (3:2) — sizes kept in one data file and checked against App Store Connect.

13-inch iPad screenshot iPhone Duo outer display screenshot 21:9 product page header creative

Caught before Apple does

One command checks text, images, videos and claims, and tells Claude exactly what to fix. The skill loops until the report is clean.

  • Keyword field over 100 bytes, spaces after commas, plural duplicates
  • Subtitle repeating the name, competitor brands, unproven “#1”
  • Alpha channels, wrong pixel sizes, headlines below 96 px on 6.9"
  • 60 fps or silent App Previews, wrong H.264 level
  • Badges or captions without evidence in your code
$ vitrin validate
ERROR keywords.repeats-name [en-US] “habit” is already in the name/subtitle
      → Remove “habit”.
ERROR shot.cta [tr] Screenshot 04: call to action (“hemen indir”)
WARN  shot.headline-long [en-US] Screenshot 03: 6 words; 5 recommended
WARN  url.placeholder [en-US] supportUrl is a placeholder

FAILED — 2 errors, 2 warnings, 0 info → .vitrin/validation.json

Quick start

Requires macOS, Node.js 22+, pnpm, Xcode, Ruby + Bundler and ffmpeg. Run vitrin doctor to check them.

  1. Install the CLI and the skill

    git clone https://github.com/ardasnturk/auto-asc-metadata
    auto-asc-metadata/skill/scripts/install.sh
  2. Set up your app repo

    cd path/to/YourApp
    vitrin init

    Creates vitrin.config.yaml, .env.example and the fastlane files. Add your App Store Connect API key to .env — never to the chat.

  3. Run it in Claude Code

    /vitrin

    Claude walks through analyze → research → write → capture → design → video → validate → review, then shows the upload plan and waits for your “yes”.

FAQ

Do I need an OpenAI or Anthropic API key?

No. The creative work happens inside your Claude Code session through the /vitrin skill. The CLI itself makes no LLM calls.

Will it upload anything without asking?

No. vitrin upload always builds a dry-run plan first and needs explicit approval (--yes). Submitting for review needs vitrin submit --confirm <bundleId>. Prices, releases and the age-rating and privacy questionnaires stay with you.

Can it create the app record in App Store Connect?

Apple doesn't allow that with an API key. Create the app once in App Store Connect; Vitrin stops and tells you if it's missing.

How does it capture real screenshots?

It builds your app for the simulator and opens each screen with launch arguments (for example -VitrinDemo -VitrinScreen stats) in dedicated simulators with a 9:41 status bar and the right system language. The sample app shows how to add a demo-data mode.

What about licenses?

Vitrin is MIT licensed. It bundles OFL fonts and Lucide icons. App Previews are rendered with Remotion, which is free for individuals and companies with up to three employees; larger teams need a Remotion company license.

Is this an Apple product?

No. Vitrin is an independent open-source project and is not affiliated with, endorsed by or sponsored by Apple Inc.