Studio With Claude
Claude can build a whole screenshot set for you: capture screens from the Simulator, write headlines, pick a style, check its own work and export. The studio never calls the Claude API and needs no API key. Claude drives it through a command-line tool or MCP connector on your Mac, on your normal Claude subscription, so it uses no API credits.
There are two ways in. Set both up with the steps in Use It From Claude on Your Mac.
| Claude Code | Claude desktop app (chat) | |
|---|---|---|
| Set up with | npm run install:claude | npm run install:desktop |
| Claude uses | the appshot CLI and its skill | the openappshot MCP connector |
| Best for | working inside your app's project, where Claude also builds and runs the app in the Simulator | asking about and editing screenshot sets from a chat |
Claude Code
npm run install:claude runs npm link, which puts the appshot CLI (and appshot-mcp) on your PATH, and links the skill into ~/.claude/skills/openappshot, so Claude Code knows the workflow in every project. Open a new terminal if appshot isn't found.
Open Claude Code in your app's project and ask, for example: "Make App Store screenshots for this app."
Following the skill, Claude:
Runs
appshot statusandappshot hereto find the app linked to the current folder and read what it remembers about it.If there's no app yet, creates one and links it to the project:
bashappshot create "App Name" --preset neutral --subtitle "Short tagline" --icon path/to/icon.png --project .Fills in the app's profile (bundle ID, what it does, audience, brand colors, which screens to capture and how) so the next session doesn't have to work it out again.
Builds and runs your app, navigates to each screen, and captures it.
Writes headlines, picks a style, renders previews and looks at them before telling you it's done.
Exports when you ask.
. stands for "the app linked to this folder" in every appshot command. Linking happens through the Project folder in the app's profile.
Claude Desktop App
npm run install:desktop adds an openappshot entry to ~/Library/Application Support/Claude/claude_desktop_config.json, with your OpenConnect address and token, after saving a backup of the file as claude_desktop_config.json.bak. Quit and reopen the Claude app, then ask, for example: "What screenshots does My App have in the screenshot studio?"
Its tools are listed in the Studio Reference.
Capturing Screenshots
From the iOS Simulator
Build and run your app in the Simulator, go to the screen you want, then:
appshot capture . --clean-status-bar # also sets 9:41, full battery and signal
appshot capture . --headline "Plan *every* workout" --screen "Today"
appshot capture . --slide 3 # replace slide 3's screenshot instead of adding a slide- Capture uses the booted Simulator. Pass
--udid <id>to pick one when several are booted. --clean-status-baroverrides the Simulator's status bar to 9:41, Wi-Fi and full cellular bars, and a full, charged battery.- The device (iPhone, iPhone Duo or iPad) is detected from the screenshot's exact pixel size. Boot a matching Simulator for each device you want; each capture fills the same slides' slot for that device.
- The screenshot records where it came from, such as "Simulator · iPhone 18 Pro".
From a Mac App
appshot capture . --mac "App Name"This captures the app's frontmost window without its shadow. The app must be running with its window visible. The first time, macOS asks to give your terminal Screen Recording permission.
From Files
appshot add . shots/*.png --headlines "First *headline*|Second one|Third"Each file fills the next slide missing a screenshot for its device, then new slides are added. Pass --device iphone|duo|ipad|mac if the size doesn't identify it.
Building a Whole Set From a Spec
For a full set in one step, write a JSON spec and apply it. Paths are relative to the spec file. It updates the app named in name (or --app), or creates it.
{
"name": "Stretic",
"profile": { "projectPath": "/Users/me/Developer/Stretic", "bundleId": "com.acme.stretic" },
"subtitle": "120+ guided stretches",
"icon": "./AppIcon-1024.png",
"preset": "forest",
"layout": "top",
"align": "center",
"devices": ["iphone", "duo", "ipad"],
"replaceSlides": true,
"slides": [
{ "headline": "Tailored *Programs*\n& Routines", "screen": { "name": "Programs tab" }, "shots": { "iphone": "./shots/programs.png", "ipad": "./ipad/programs.png" } },
{ "headline": "Stretch in Under\n*5 Minutes*", "shots": { "iphone": "./shots/routine.png" } }
]
}appshot apply spec.jsonWithout replaceSlides, slides are updated by position and extra ones are appended. Style keys (preset, layout, align, alternate, font, theme) go at the top level.
Checking the Work
appshot preview . # renders PNGs and prints their paths
appshot preview . --slide 2,3 --device iphone
appshot open . # opens the app in the editorIn the desktop app, preview_slide returns the slide as an image in the chat.