Skip to content
OpenConnectmain · October 2026 (after 1.2.0)

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 CodeClaude desktop app (chat)
Set up withnpm run install:claudenpm run install:desktop
Claude usesthe appshot CLI and its skillthe openappshot MCP connector
Best forworking inside your app's project, where Claude also builds and runs the app in the Simulatorasking 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:

  1. Runs appshot status and appshot here to find the app linked to the current folder and read what it remembers about it.

  2. If there's no app yet, creates one and links it to the project:

    bash
    appshot create "App Name" --preset neutral --subtitle "Short tagline" --icon path/to/icon.png --project .
  3. 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.

  4. Builds and runs your app, navigates to each screen, and captures it.

  5. Writes headlines, picks a style, renders previews and looks at them before telling you it's done.

  6. 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:

bash
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-bar overrides 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 ​

bash
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 ​

bash
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.

json
{
  "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" } }
  ]
}
bash
appshot apply spec.json

Without 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 ​

bash
appshot preview .                       # renders PNGs and prints their paths
appshot preview . --slide 2,3 --device iphone
appshot open .                          # opens the app in the editor

In the desktop app, preview_slide returns the slide as an image in the chat.

Odd Omens is a one-person studio building privacy-first software.