Skip to content

Repository files navigation

Screenshot Factory

Generate professional, framed App Store screenshots with text overlays — in seconds.

SwiftmacOSLicensefastlane

 Raw PNGs (UITests) → Screenshot Factory → App Store Connect
+ device frame
+ text overlays
+ shadows & glow
  • No Swift dependencies — framing engine uses only Apple SDK (SwiftUI ImageRenderer, AppKit)
  • Requires fastlane — for capture (snap) and upload (deliver)
  • Configuration-driven — one screenshots.json defines design, screens, and localized text
  • Full pipeline — capture + frame in a single command
  • 6 ready-to-use templates — dark, light, vibrant, minimal, and more

Setup via AI assistant (recommended)

Install the skill in your iOS project once, then just call it:

Claude Code

npx skills add iMark21/ScreenshotFactory

Then run /setup-screenshots in your project.

OpenCode Copy the skill to your project (one time):

mkdir -p .opencode/skills
cp -r path/to/ScreenshotFactory/.opencode/skills/setup-screenshots .opencode/skills/

Then run /setup-screenshots in your project.

OpenCode also reads .claude/skills/ automatically, so if you already installed the Claude Code skill it works without extra steps.

Codex (OpenAI) The AGENTS.md file at the root of this repo is read automatically. Ask your agent to set up Screenshot Factory.

The skill handles everything: clones and builds this tool if needed, asks the right questions, and sets up your project without touching a single file until you confirm.

To remove everything it created: call /setup-screenshots and say "uninstall".


Manual installation

git clone https://github.com/iMark21/ScreenshotFactory.git
cd ScreenshotFactory
swift build -c release
cp "$(swift build -c release --show-bin-path)/screenshot-factory" /usr/local/bin/

Or as a Swift Package:

.package(url:"https://github.com/iMark21/ScreenshotFactory.git", from:"2.4.0")

Manual project setup

Copy these files to your project:

cp Capture/SnapshotHelper.swift MyApp/MyAppUITests/
cp Capture/capture.sh MyApp/fastlane/
cp Capture/pipeline.sh MyApp/fastlane/
chmod +x MyApp/fastlane/capture.sh MyApp/fastlane/pipeline.sh

Configure fastlane/Snapfile:

project("MyApp.xcodeproj")scheme("MyApp")devices(["iPhone 17 Pro Max"])# Add "iPad Pro 13-inch (M5)" if neededlanguages(["en-US","es-ES"])launch_arguments(["--screenshot-mode"])output_directory("./fastlane/screenshots")

Start from a template:

cp Templates/dark-teal-accent.json fastlane/screenshots.json

Edit fastlane/screenshots.json — add your app's texts per locale and adjust colors. Then run:

./fastlane/pipeline.sh # capture + frame

Or frame only (if raw screenshots already exist):

screenshot-factory \
--config fastlane/screenshots.json \
--input fastlane/screenshots/ \
--output fastlane/screenshots_framed/

Templates

TemplateStyleBest for
dark-teal-accentDark bg + per-screen accent {words}Games, social, entertainment
space-navyDeep navy/indigo shifting per screenMeditation, lifestyle, health
obsidian-minimalPure black, white text, alternating layoutPremium, e-commerce, productivity
dark-atmosphericMoody single dark gradientAtmospheric, immersive apps
light-cleanWhite/gray bg, dark textUtilities, tools, professional
vibrant-gradientBold diagonal color gradientFitness, social, creative

Use {word} syntax in keyword text to highlight a word in the accent color:

"keyword": "Keep track of your {goals}"

App Store required sizes

KeyDeviceSize
iPhone_6.9iPhone 17 Pro Max1320 × 2868
iPad_13iPad Pro 13" (M5)2064 × 2752

Apple auto-scales to smaller devices. Each device class needs its own raw captures — never reuse iPhone screenshots for iPad.


Requirements

  • macOS 13+
  • Swift 5.9+ (Xcode 15+)

License

MIT — see LICENSE.

About

Generate professional, framed App Store screenshots with text overlays. Zero dependencies — Swift Package (Library + CLI).

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages