Take mobile apps and games from zero to Submit for review on Google Play and the App Store. Bun CLI, MCP server, Agent Skills. npm: storebound · MIT https://storebound.dev
Find a file
2026-10-13 09:45:48 +08:00
.claude-plugin storebound 0.8.0: one version for the CLI and the desktop app (package.json, plugin manifests, the app's copies), CHANGELOG 0.8.0 section with the release summary, teaser v8 on the site and README poster (img/teaser.mp4, teaser-poster.webp, cache key v=4) 2026-10-13 08:17:16 +08:00
.codex-plugin storebound 0.8.0: one version for the CLI and the desktop app (package.json, plugin manifests, the app's copies), CHANGELOG 0.8.0 section with the release summary, teaser v8 on the site and README poster (img/teaser.mp4, teaser-poster.webp, cache key v=4) 2026-10-13 08:17:16 +08:00
.cursor/rules CLI runs on Node 20+: npx storebound (bunx keeps working) 2026-10-13 04:03:28 +08:00
.forgejo Releases on git.crt.fyi from a workflow: a v* tag push runs .forgejo/workflows/release.yml (tag = package.json version and every version copy, the full CI, Linux AppImage + deb and Windows NSIS on the VDS runners, privacy scan with the private terms, one Forgejo release with short CHANGELOG-summary notes, the installers and SHA256SUMS, older release entries deleted, tags kept); workflow_dispatch dry run makes a draft test-<sha> and deletes it; desktop.yml folded in, ci.yml and release.yml share .forgejo/actions/linux-setup and ci-run; tools/forgejo-release.ts (notes, upsert, prune, delete; uploads over 100 MB go to the origin because Cloudflare refuses them); desktop-release.ts upload-forgejo adds the notarized DMG and updater bundle from the Mac; docs/desktop-release.md release order 2026-10-13 07:44:18 +08:00
.github CLI runs on Node 20+: npx storebound (bunx keeps working) 2026-10-13 04:03:28 +08:00
apps/desktop storebound 0.8.0: one version for the CLI and the desktop app (package.json, plugin manifests, the app's copies), CHANGELOG 0.8.0 section with the release summary, teaser v8 on the site and README poster (img/teaser.mp4, teaser-poster.webp, cache key v=4) 2026-10-13 08:17:16 +08:00
bin CLI runs on Node 20+: npx storebound (bunx keeps working) 2026-10-13 04:03:28 +08:00
brand New logo from one master: brand/, tools/brand-assets.py makes every app icon, favicon, header mark and og image; no hand-written SVG left 2026-10-11 10:13:13 +08:00
cli apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
docs apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
examples play data-safety: PSL_SUPPORT_DATA_DELETION_BY_USER is the general 'can users request deletion?' question; a delete-account URL answers yes (with PSL_DATA_DELETION_URL), dataSafety.dataDeletion for apps without one; check flags a no next to a delete-account URL 2026-10-12 09:46:58 +08:00
media/teaser teaser v8: a 58 s story instead of a feature list (the game is done; the stores pile up; one missing line; hand it to your AI; a montage of builds, screenshots, products, forms, consoles; the scan turns green; one button is yours; Waiting for review; the end card), one short line per scene, cuts on the 120 BPM beat; music rewritten for the arc (calm, tension, near silence, a driving build, a stop, a resolve), mastered with one gain instead of dynamic loudnorm; the pile shows real console plan, Data safety CSV and price sheet lines, the builds beat real apple / play build dry runs; desktop.ts captures submit-ready (Send for review before the press); tests check every line, the beat-aligned cuts and the caption times; two unused teaser icons dropped 2026-10-13 04:48:33 +08:00
site apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
skills apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
specs storebound api: every App Store Connect and Google Play operation 2026-10-11 23:37:09 +08:00
templates apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
tests apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
tools apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
.gitignore CLI runs on Node 20+: npx storebound (bunx keeps working) 2026-10-13 04:03:28 +08:00
.mcp.json Adapters for every AI tool from one source, tests and CI 2026-10-10 21:03:10 +08:00
AGENTS.md CLI runs on Node 20+: npx storebound (bunx keeps working) 2026-10-13 04:03:28 +08:00
bunfig.toml idempotency: WIP 2026-10-12 04:00:58 +08:00
CHANGELOG.md apple build exports each build into build/ios/export/<version>-<build>/ (cleaned first), runs xcodebuild with Apple's tool folders first on PATH (Homebrew rsync 3.x broke Xcode's IPA step: exportArchive Copy failed), shows the IDEDistribution log's real error lines and exits non-zero on any export failure; apple upload fails with exit 1 when the IPA's build number is already on App Store Connect (stale IPA after a failed build), --allow-existing re-checks, --build N picks that build's IPA, release and beta flows use both; doctor flags a non-Apple rsync first on PATH; desktop publish calls rsync by absolute path without --chmod (publishSteps); site download notice per OS (macOS signed and notarized, Windows unsigned for now, Linux unsigned); game-report credential tests hermetic against a machine default profile (pitfalls 53, 54) 2026-10-13 09:45:48 +08:00
CONTRIBUTING.md One product per machine: the CLI and the desktop app share one version, the store accounts and the app folder list 2026-10-13 06:17:37 +08:00
gemini-extension.json storebound 0.8.0: one version for the CLI and the desktop app (package.json, plugin manifests, the app's copies), CHANGELOG 0.8.0 section with the release summary, teaser v8 on the site and README poster (img/teaser.mp4, teaser-poster.webp, cache key v=4) 2026-10-13 08:17:16 +08:00
GEMINI.md CLI runs on Node 20+: npx storebound (bunx keeps working) 2026-10-13 04:03:28 +08:00
LICENSE crt-ship 0.1.0: CLI, Claude Code skills and templates for shipping mobile games to Google Play and the App Store 2026-10-10 20:29:20 +08:00
package.json storebound 0.8.0: one version for the CLI and the desktop app (package.json, plugin manifests, the app's copies), CHANGELOG 0.8.0 section with the release summary, teaser v8 on the site and README poster (img/teaser.mp4, teaser-poster.webp, cache key v=4) 2026-10-13 08:17:16 +08:00
README.md One product per machine: the CLI and the desktop app share one version, the store accounts and the app folder list 2026-10-13 06:17:37 +08:00
SECURITY.md 0.4.0: changelog, version, README (journey, commands, skills, MCP, safety, FAQ, roadmap), agent rules, adapters 2026-10-10 23:30:48 +08:00
tsconfig.json storebound scan: offline rejection-risk scan of the project itself 2026-10-11 23:20:55 +08:00

storebound logo

storebound

From an empty folder to "Submit for review" on Google Play and the App Store.

Your AI agent does all of it with storebound: builds, uploads, store text, screenshots in every language and size, in-app products and prices, the compliance forms, even the consoles that have no API. You only press Submit.

npm license: MIT version 0.6.0 runtime: Node 20+ or Bun 1.1+ runtime dependencies: 0 Agent Skills: 25 MCP: 2026-07-28

Website: storebound.dev · Docs: docs/ · npx storebound init

The storebound teaser: from an empty folder to Submit for review in under a minute (opens the video on storebound.dev)

Watch the teaser on storebound.dev: the demo game from an empty folder to both stores, then the desktop app.

Your agent does the whole job

Do it, don't ask. You ask once ("get my app ready for both stores"); your agent and storebound do the work: the app records, builds and uploads, listings in every language, screenshots and previews in every store size, icons, in-app products and subscriptions priced in 175 countries, Data safety, App Privacy, age rating and every other form, and the console pages that have no API (the agent drives them from a console plan). Each step is planned first:

storebound release plan 1.0.0: every step left on both stores for a brand-new app, in fix order, with the owner's next step named

You press only the final public or irreversible buttons (Submit for review, releasing, App Privacy Publish, legal agreements) and answer, once and in one batch, the facts no file can prove. The full rules: AGENTS.md; the whole journey step by step: docs/journey.md.

You won't get rejected for the avoidable things

storebound scan reads your project (Xcode and Gradle files, manifests, lockfiles, SDKs, your listings) and the store state, and names every App Review or Play policy problem it can prove before the stores do: the guideline, the evidence as file:line, and the fix.

storebound scan on a sign-in app: blockers for Guideline 2.1(a) (no demo account) and 5.1.1(v) (no account deletion), each with its evidence and fix

Every rule, what it proves and what only a reviewer can see: docs/rejections.md.

The desktop app: every app, both stores, one window

Every app and game you ship on Google Play and the App Store side by side: releases, charts, catalog and prices, crash health, reviews, TestFlight and the rejection checks. Send for review from there too: a dry run first, then a confirm, then your click. Same storebound underneath, same version number as the CLI, and the same store accounts and app folders as your terminal (~/.storebound).

storebound desktop, Releases › Send for review: the dry run of the submission with the build picked by number and the confirm step

More screens: portfolio, growth charts, prices, checks, TestFlight, console plan

Portfolio: every app of every studio with its state on both stores Growth: store analytics chart with the day under the pointer Prices: products by key territory, both stores' prices per country, gaps marked Checks: rejection risks with evidence and the fix TestFlight: groups, testers and builds Console plan: the steps, answer sheet and never-press list for a console form without an API

npx storebound desktop installs it for you (macOS, Windows, Linux; signature checked, no admin rights) and opens it on the current app folder. Manual downloads: storebound.dev/#download. Internals: docs/desktop.md.

Works with your AI, safe by design

Skills, an MCP server and the CLI for Claude Code, Codex, Cursor, Gemini CLI, Copilot, Windsurf, OpenCode or anything that reads AGENTS.md. Every write shows a dry run first; submit, release and delete are not MCP tools; keys stay in env vars or the gitignored .storebound/.

storebound play products --dry: two in-app products planned with regional prices in 174 Google Play regions, nothing written

Per-tool setup: docs/getting-started.md · MCP tools: docs/mcp.md · Safety model: docs/safety.md.

Install and start

You need Node 20+ or Bun 1.1+ (and ffmpeg for icons, screenshots and video).

cd my-app
npx storebound init                     # storebound.config.ts + .storebound/ in this project (--profile app | subscription-app | game)
npx storebound desktop                  # installs the desktop app once (asks first) and opens it on this folder

One product, installed once per machine: the CLI (npx / bunx) and the desktop app have the same version, the same store accounts (~/.storebound/credentials, npx storebound accounts) and the same list of app folders. Each project has its storebound.config.ts and a gitignored .storebound/ (upload keystore, review contact). Then npx storebound install --agent claude (or codex, cursor, gemini, copilot, windsurf, opencode) and npx storebound check. Every npx storebound ... works as bunx storebound ... too.

Then ask your agent: "take my app to Google Play and the App Store". Claude Code plugin, credentials, coming from fastlane: docs/getting-started.md.

What it covers

Store screenshots of the demo game, rendered by storebound in every size and language:

Store screenshots rendered by storebound: four scenes in English plus the hero scene in Turkish, Japanese and Arabic

Contributing and license

Issues and pull requests are welcome; see CONTRIBUTING.md (bun run ci must be green). MIT, see LICENSE. Copyright (c) 2026 CRTkafa. Not affiliated with Google or Apple.