Agent skill

Store Screenshots

by pandulapeter in pandulapeter/campfire

Retake Campfire's promotional images for every platform and form factor — the store listings (Play Store, App Store, Mac App Store, Microsoft Store), the Play Store feature graphic, Apple's product…

MPL-2.0Auto-check passedMobile

Install Store Screenshots

skills CLI
$ npx skills add pandulapeter/campfire --skill store-screenshots -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install pandulapeter/campfire store-screenshots --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/pandulapeter/campfire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/store-screenshots .claude/skills/store-screenshots && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
store-screenshots
GitHub stars
101
Token cost
~3k tokens
SKILL.md length
1,555 words
Files
3 (incl. scripts)
Skills in repo
5
Repo updated
First seen
Licence
MPL-2.0

At a glance

Retake Campfire's promotional images for every platform and form factor — the store listings (Play Store, App Store, Mac App Store, Microsoft Store), the Play Store feature graphic, Apple's product…

  • Works in 8 steps: Render. ./gradlew :tools:screenshots:run… → Check every image before importing… → Stage. Screenshot Bro is sandboxed and… → …
  • Update the store screenshots / store images / listing screenshots / README
  • SKILL.md covers What a run needs, Where everything goes, Steps and The shots and their rules, plus 1 more section
  • Runs Python scripts from its folder; calls python3

What it does

Store Screenshots is an agent skill from pandulapeter/campfire. Retake Campfire's promotional images for every platform and form factor — the store listings (Play Store, App Store, Mac App Store, Microsoft Store), the Play Store feature graphic, Apple's product page header and search results images, the README banners and campfire-songbook.com's screenshots and link preview. Renders them with the offscreen screenshot tool in tools/screenshots, checks them, frames them in the Screenshot Bro project and exports the store images to a new folder on the Desktop, the README banners…

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/readme_banners.py` and `scripts/website_screenshots.py`).

It sits in Mobile, covering App store release and Technical documentation. It works with macOS. The repository describes itself as: A cross-platform songbook and metronome with a built-in chordPro editor, setlists, transposition, PDF export, and Dropbox sync. The licence is MPL-2.0.

When your agent uses it

  • Update the store screenshots / store images / listing screenshots / README
  • Website screenshots
  • Reorder one of them

Example prompts

  • “/store-screenshots”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Render. ./gradlew :tools:screenshots:run (in the background; one app start per image, a few seconds each)
  2. Check every image before importing anything: a contact sheet per shot (PIL), then any device that looks off at
  3. Stage. Screenshot Bro is sandboxed and reads only its own container: copy renders/ into
  4. Import. Take get_project first: the user arranges the rows by hand between runs, and **their layout is kept
  5. Look at every row with render_preview, a column at full size where anything is in doubt: the status bar's
  6. Export with export_project (into the app's temp folder; a non-empty unrenderable means holes — report it).
  7. The website: `python3 -I .claude/skills/store-screenshots/scripts/website_screenshots.py
  8. Clean up the staging and export folders in the app's container, and report the Desktop folder, what was

What it can do on your machine

Read from SKILL.md and the folder at commit 94d4b7f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • mozilla.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Store Screenshots loads about 3k tokens when it runs. Until then it costs about 244 tokens; SKILL.md has 1,555 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~244
When it runs · the whole SKILL.md, loaded when a task matches
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from pandulapeter/campfire at commit 94d4b7f, republished under its MPL-2.0 licence (© pandulapeter). 1,555 words, ~3,047 tokens.

Download SKILL.mdSave it as .claude/skills/store-screenshots/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
store-screenshots
description
Retake Campfire's promotional images for every platform and form factor — the store listings (Play Store, App Store, Mac App Store, Microsoft Store), the Play Store feature graphic, Apple's product page header and search results images, the README banners and campfire-songbook.com's screenshots and link preview. Renders them with the offscreen screenshot tool in tools/screenshots, checks them, frames them in the Screenshot Bro project and exports the store images to a new folder on the Desktop, the README banners to documentation/screenshots and the website's images to the sibling CampfireWebsite repository. Invoke this skill WHENEVER the user asks to retake, regenerate, refresh or update the store screenshots / store images / listing screenshots / README or website screenshots, or to add, change or reorder one of them. Not for screenshots taken to verify a change while developing (that is the run skill and the platform verification recipes).
<!--
 This file is part of Campfire.
 Copyright (c) Pandula Péter 2017-2026.
 https://github.com/pandulapeter/campfire

 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
 If a copy of the MPL was not distributed with this file, You can obtain one at
 https://mozilla.org/MPL/2.0/.
-->

Campfire promotional images

Every image is made from the desktop build drawn offscreen as each platform (the platforms share every line of the interface), with that platform's fonts, scale and system bars, at the exact pixels of the Screenshot Bro device frame it goes into. Nothing here touches the production apps: the tool is tools/screenshots, which no app module depends on, and the only seam in the app is PlatformImpersonation in :presentation's desktop source set, which the desktop app never sets. See tools/screenshots/CLAUDE.md for how the tool works.

What a run needs

  • The library, in tools/screenshots/library/ (gitignored, never committed): a Campfire data folder's library/, covers/ and preferences/preferences.json, copied from the user's desktop library without the sync credentials, the sync index or the log. If it is missing, stop and ask. Never write into the user's real data folder. Its setlists were trimmed for the shots (Frey-Tully Nuptials and Getting started); keep them that way.
  • Screenshot Bro running, with the Campfire project (list_projects), and Full Disk Access for the IDE that runs Claude Code (Android Studio), without which nothing can be staged in the app's sandbox (step 3).
  • The display does not matter: nothing is drawn on screen.

Where everything goes

WhatMade fromEnds up in
Store listings (8 rows × 8 shots), Play Store banner, link preview, Apple header and search resultsShot.kt, Banners.kt → Screenshot Bro~/Desktop/Campfire store images <date>/, one folder per row (with the project's icon, poster and box art rows, which have no shots)
README banners (GitHub - Banner 1 / 2)Banners.kt → Screenshot Brodocumentation/screenshots/01–06.webp, 1200×900
Website screenshotsWebsite.kt, no Screenshot Bro../CampfireWebsite/assets/screenshots/*.webp at each file's own size
Website link previewthe exported Website - Link preview row../CampfireWebsite/assets/og-image.jpg, 1200×630

Raw renders go to the gitignored tools/screenshots/renders/, replaced on every run. Nothing is committed, in either repository; the user reviews and commits.

Steps

  1. Render. ./gradlew :tools:screenshots:run (in the background; one app start per image, a few seconds each) writes every shot of Shot.kt on every listing Device, the multi-device rows of Banners.kt and the website set of Website.kt into tools/screenshots/renders/<row label>/. --args="--only IPHONE,03-metronome,banners" renders part of it (device enum names, shot ids, or listing, banners, website). A failed render is reported and the run goes on. Never rebuild the tool while a render is running.

  2. Check every image before importing anything: a contact sheet per shot (PIL), then any device that looks off at full size — the theme, nothing loading, no stray dialog or snackbar, the shot's rules (below), text fitting. Fix the shot or the tool and render again rather than importing a bad image.

  3. Stage. Screenshot Bro is sandboxed and reads only its own container: copy renders/ into ~/Library/Containers/xyz.tleskiv.screenshot/Data/tmp/campfire/. The large Android tablet's frames are rotated 270°, so its images are staged rotated a quarter turn clockwise (PIL ROTATE_270).

  4. Import. Take get_project first: the user arranges the rows by hand between runs, and their layout is kept exactly — positions, sizes, tilts, stacking. import_screenshots fills a row's device frames one per column, in column order, the rearmost frame of each column, and resizes every frame it fills to the image's aspect ratio, so after every import put each frame's x, width and height back. Extra images append columns: never pass more than the row has.

    • The eight listing rows (one frame per column): import the row's eight images in order.
    • Rows with several frames in a column (the README banners, the Play Store banner, the link preview, Apple's header and search results): give each extra frame a temporary column (add_template, delete_shape the default device it drops in, move the frame's x there), import, move it back, remove_template. Then restore the stacking with z_order: front in back-to-front order, keeping every MacBook's black camera-housing strip above its frame.
    Row labelRow id
    Play Store - Android Phone961E2ED3-1432-46EA-AF1F-5738741BB18E
    Play Store - Android Small TabletC6B36C5A-7011-4721-AD0F-CE92E91DC1F2
    Play Store - Android Large Tablet4AB75520-E483-4E51-93A8-568848CE24BB
    Play Store - Chromebook15F6D06E-114E-468A-BEA1-E074FA445ECA
    App Store - iPhoneCA8CB67F-AD3B-4CE6-95F1-1A23555C1320
    App Store - iPad5B53E8FA-F8D5-4D72-B0A6-58D1F847CB0E
    Mac App Store - Mac09A157EA-A360-4800-B9F6-72E4ED90178F
    Microsoft Store - WindowsC369F36A-B693-46C7-A53C-E8AA13CC6D53
    GitHub - Banner 1D14A5619-01BE-4E2D-A654-187E8467999A
    GitHub - Banner 29B2BA297-3919-4691-A358-C90C3C2AAF95
    Play Store - Banner7EAB3190-9E8C-478D-B18A-3AD15B16DDA1
    Website - Link previewEB3026C2-34AF-48BA-A338-DAD16A8014B9
    App Store - Header (21:9, 3840×1646, iOS 27+)AACF099E-6929-47B0-8F4E-DF44DFEEC7B2
    App Store - Search results (3:2, 3840×2560, iOS 27+)D93A0DED-074D-4C47-B097-5CAC6DEC5DCA

    If a row's label or column count is not what this table and the code expect, stop and say so. Headlines are the project's text shapes, never part of the images.

  5. Look at every row with render_preview, a column at full size where anything is in doubt: the status bar's time and the navigation labels uncut, the image filling its frame, nothing upside down or stretched.

  6. Export with export_project (into the app's temp folder; a non-empty unrenderable means holes — report it). Copy every row's folder except the two GitHub banners to a new ~/Desktop/Campfire store images <date>/. The banners go to the README: python3 -I .claude/skills/store-screenshots/scripts/readme_banners.py <repo root> followed by banner 1's three exported images and then banner 2's.

  7. The website: python3 -I .claude/skills/store-screenshots/scripts/website_screenshots.py tools/screenshots/renders/Website "<Desktop folder>/Website - Link preview — 1200x630/01_Website - Link preview_en.png" "$HOME/Desktop/Campfire website images" writes every website screenshot at the size of the file it replaces, as WebP, and the link preview as og-image.jpg; where the sibling CampfireWebsite repository is missing it writes them to the Desktop folder instead.

  8. Clean up the staging and export folders in the app's container, and report the Desktop folder, what was rendered and anything that looked off.

Show full SKILL.md (660 more words)Show less

The shots and their rules

The listing alternates two dark, two light: 1–2 dark, 3–4 light, 5–6 dark, 7–8 light. Shared rules: the store screenshots are shown at 9:41 on Wednesday, October 7, 2026 (setlist dates are moved with the run's day, so their countdowns always read the same); the app icon anywhere in the system chrome is the default gradient one; Android phone frames are Screenshot Bro's Pixel frame; Share is shown on Android and iOS only; sync is a fake connected account, "Connected as Péter Pandula"; only public domain songs are opened full screen in the listing.

#HeadlineShot
1Your songbook, on any screenSongs, English filter, by artist, scrolled to Gotthard (pinned), "+" menu open
2Laid out for the way you playHouse of the Rising Sun (Traditional American); phones at 100% text with the Picking pattern folded, Chromebook at 100%, so the whole first verse shows
3A metronome that knows each songMetronome tab playing 6/8 at 236, beats 1 and 4 accented, caught on beat 1
4Setlists ready for the gigSetlists by date: Frey-Tully Nuptials "In 2 days", Friday Night by the Lake "Tomorrow"
5ChordPro editor with live previewHome on the Range in the editor; Split wherever the app offers it, Edit otherwise; Shortcuts always open
6Print a song or the whole setHome on the Range exported: PDF, A4, landscape (portrait on the small Android tablet), two columns, every option on
7Offline first, synced across devicesSettings → Library, sync connected
8Make it yours, down to the iconSettings → General

The README banners are shots 1, 3, 2, 4, 5 on the Android phone, iPhone, iPad, small Android tablet and Mac — dark in banner 1, light and in reverse order in banner 2. The Play Store banner is the Android phone's shots 1 and 2; the link preview the Mac's 2 and the iPhone's 1; Apple's header the iPad's 4, the Mac's 2 and the iPhone's 1, and its search results image the iPad's 2 and the iPhone's 3, all dark.

The website's songs are set at the text size where page one ends exactly where a section ends, never inside one: Still Alive 90% (Verse 2 in one column), Accidentally in Love 90% with the metronome panel open, I'll Be There for You 105% on the laptop. A song longer than a page is cut wherever a column ends, so these were found by rendering every size from 80% to 130% in steps of 2.5% and reading where page one ends; if a song, a device or the layout changes, try again the same way. Never fold the Chords section (or anything else) to make a song fit. The laptop is a Mac window with no system chrome at 1.5× (Device.LAPTOP).

Changing a shot

The listing is shots in Shot.kt, in store order; the website's are in Website.kt and the multi-device rows in Banners.kt. A shot sets the preferences it needs (preferences, per device), prepares state a screen only reads as it is first composed (prepare, e.g. a list's scroll position), then drives CampfireViewModel or taps what is labelled with a string resource (drive, tap, tapIfPresent) — so it works in every language — and can catch a metronome beat (beat). Keep each shot's rules in its comment and in the table above. Adding or removing a listing shot also means adding or removing that column in every listing row of the project (copying a neighbor's frame and headline), and updating the headlines there.

The system chrome is SystemChrome.kt, measured against the real systems (Android emulators, iOS simulators, the desktop app's own window). The Chromebook and Windows rows are framed in MacBook Pros whose camera housing a black rectangle of the project hides; their shots start the window under a black band of that rectangle's height (36 and 38 dp), so if those rectangles or frames are moved or resized, measure again and update the band heights.

© pandulapeter, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in .claude/skills/store-screenshots of pandulapeter/campfire.

  • SKILL.md
  • scripts/readme_banners.py
  • scripts/website_screenshots.py

Open the folder on GitHubat commit 94d4b7f

Compare with similar skills

Store Screenshots next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Store Screenshots compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Store Screenshots this skillpandulapeter/campfire101—~3kAutomated safety check: PassMPL-2.0
Workbuddy Skin Studiocdredfox/workbuddy-skin-studio198—~1.5kAutomated safety check: PassMIT
macOS Signing Entitlementsrobinebers/openusage4.3k—~445Automated safety check: PassMIT
Signing Entitlementsrobinebers/openusage4.3k—~468Automated safety check: PassMIT
iOS Accessibilitydpearson2699/swift-ios-skills1.2k—~4.6kAutomated safety check: PassCustom licence
Hunt macOSEncod3d-Sec/TORCH329—~1.9kAutomated safety check: PassMIT

Similar skills

  • Workbuddy Skin Studio

    cdredfox/workbuddy-skin-studio

    Apply a reversible theme/skin to the WorkBuddy desktop app (Tencent AI office agent) via local Chromium DevTools Protocol (CDP) injection.

    198 GitHub stars~1.5k tokensUpdated 2 mo ago
    MobileAuto-check passed
  • macOS Signing Entitlements

    robinebers/openusage

    Inspect macOS signing, entitlements, and Gatekeeper issues. An agent skill from robinebers/openusage.

    4.3k GitHub stars~445 tokensUpdated 3 days ago
    MobileAuto-check passed
  • Signing Entitlements

    robinebers/openusage

    Inspect signing, entitlements, hardened runtime, and Gatekeeper issues for macOS apps.

    4.3k GitHub stars~468 tokensUpdated 3 days ago
    MobileAuto-check passed
  • iOS Accessibility

    dpearson2699/swift-ios-skills

    Build and audit SwiftUI, UIKit, and AppKit accessibility for VoiceOver, Voice Control, Switch Control, Full Keyboard Access, Dynamic Type, focus restoration, labels/traits/actions, traversal, custom…

    1.2k GitHub stars~4.6k tokensUpdated 2 mo ago
    MobileAuto-check passed
  • Hunt macOS

    Encod3d-Sec/TORCH

    macOS attack hunting - foothold to root/persistence on a macOS host.

    329 GitHub stars~1.9k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Review Prompt

    gustavscirulis/snapgrid

    Generates smart App Store review prompt infrastructure with configurable conditions and platform detection.

    117 GitHub starsUsed in 1 repo~1.3k tokens
    MobileAuto-check: notes

More from pandulapeter/campfire

  • Code Style

    pandulapeter/campfire

    Code style, commenting, and documentation conventions for the Campfire codebase.

    101 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Codebase Review

    pandulapeter/campfire

    The Campfire review-sweep process — read-only area reviewers, one plan file per verified finding, a README.md that indexes them into parallel lanes, an EXECUTION.md orchestrator brief, and later the…

    101 GitHub stars~3.3k tokensUpdated today
    Auto-check passed
  • Prepare Release

    pandulapeter/campfire

    Prepare a Campfire release by writing a paste-ready GitHub release-notes draft (with the stores' "what's new" blurb and Play's update priority embedded in it), updating the localized in-app update…

    101 GitHub stars~4.9k tokensUpdated today
    Auto-check passed
  • Commit Messages

    pandulapeter/campfire

    Commit message conventions for the Campfire repo. An agent skill from pandulapeter/campfire.

    101 GitHub stars~700 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Store Screenshots

What does Store Screenshots do?

Retake Campfire's promotional images for every platform and form factor — the store listings (Play Store, App Store, Mac App Store, Microsoft Store), the Play Store feature graphic, Apple's product…. Store Screenshots is an agent skill from pandulapeter/campfire.com's screenshots and link preview.

When should I use Store Screenshots?

Store Screenshots fits situations like: update the store screenshots / store images / listing screenshots / README; website screenshots; reorder one of them.

How do I install Store Screenshots in Claude Code?

Run `npx skills add pandulapeter/campfire --skill store-screenshots -a claude-code`. Or copy the skill folder (.claude/skills/store-screenshots in pandulapeter/campfire) into .claude/skills/store-screenshots in your project. Claude Code loads it when a task matches its description.

How do I install Store Screenshots in Codex?

Run `npx skills add pandulapeter/campfire --skill store-screenshots -a codex`. Or copy the skill folder (.claude/skills/store-screenshots in pandulapeter/campfire) into .agents/skills/store-screenshots in your project. Codex loads it when a task matches its description.

Can I use Store Screenshots in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pandulapeter/campfire --skill store-screenshots -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/store-screenshots, .gemini/skills/store-screenshots, .github/skills/store-screenshots and .opencode/skills/store-screenshots in your project.

What does Store Screenshots need to run?

Going by SKILL.md and its folder, Store Screenshots needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Store Screenshots access the network?

SKILL.md names 1 domain. As links in the text: mozilla.org. This is read from the text; nothing was executed.

Is Store Screenshots safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Store Screenshots use?

Store Screenshots is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Store Screenshots use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Store Screenshots?

Skills that share tags, products or a category with Store Screenshots: Workbuddy Skin Studio (cdredfox/workbuddy-skin-studio, 198 stars), macOS Signing Entitlements (robinebers/openusage, 4.3k stars), Signing Entitlements (robinebers/openusage, 4.3k stars) and iOS Accessibility (dpearson2699/swift-ios-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Store Screenshots?

pandulapeter (a GitHub user) maintains it in pandulapeter/campfire, which has 101 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 9, 2026.

Source: pandulapeter/campfire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.