README is a short front page (about 120 lines) with one real visual per section; every former section moved unchanged into docs/*.md with a docs/README.md index (journey, rejections, getting-started, commands, growth, studios, store-art, listing-languages, api, skills, mcp, safety, faq, project). The site tells the same story on one page: the teaser in the hero, real CLI output as text, the desktop app as a section with light/dark captures of eight screens and the per-system downloads (desktop/latest.json); /desktop/ redirects to /#download. New capture tools: tools/site-desktop-shots.ts (fixture-mode desktop frames) and tools/site-term-shots.ts (real CLI output as text and WebP). tests/docs-links.test.ts checks README, docs and site links resolve.
99 lines
6.3 KiB
Markdown
99 lines
6.3 KiB
Markdown
# Roadmap, contributing and credits
|
|
|
|
## Roadmap
|
|
|
|
Wave 2 (TestFlight, vitals, review replies, price sheets, analytics, MCP 2026-07-28, Product Page Optimization) shipped
|
|
in 0.4.0. 0.5.0 made storebound app-first (profiles, app screenshot style, account deletion, review access) and
|
|
brought the full in-app catalog: subscriptions on both stores with offers and offer codes, non-renewing products and
|
|
the cross-store `catalog diff`. Next, roughly in this order:
|
|
|
|
- Play prepaid base plans for `non_renewing`.
|
|
- The App Asset Library (API 4.5.1) for screenshots, custom product pages and in-app events once the screenshot sets
|
|
it replaces stop working.
|
|
- Play store listing experiments and their results, as soon as Google offers an API.
|
|
- App preview treatments and alternate icons in Product Page Optimization tests.
|
|
- The iPhone Duo screenshot classes Apple lists for apps built with the iOS 27.1 SDK (required from April 2027).
|
|
|
|
## Contributing
|
|
|
|
Issues and pull requests are welcome: store rule updates (with a source), new capture sources, adapters for more AI
|
|
tools. See [CONTRIBUTING.md](../CONTRIBUTING.md); `bun run ci` must be green.
|
|
|
|
<details>
|
|
<summary><b>Agent support: formats and what is not verified</b></summary>
|
|
|
|
Checked against each tool's own docs in October 2026:
|
|
|
|
- **Agent Skills**: frontmatter is only `name` (lowercase-hyphen, equals the folder) and `description`; the generator
|
|
fails if a skill adds anything else.
|
|
- **Claude Code**: plugin manifest + root `.mcp.json` with `${CLAUDE_PLUGIN_ROOT}`; `claude plugin validate .` passes.
|
|
- **Codex**: `.codex-plugin/plugin.json` with `"skills": "./skills/"`. Not verified: whether Codex starts the root
|
|
`.mcp.json` from a plugin and expands `${CLAUDE_PLUGIN_ROOT}` there, so use `install --agent codex` for the MCP
|
|
server. OpenAI also documents a newer portable root `plugin.json`; not shipped yet.
|
|
- **Gemini CLI**: `gemini-extension.json` with `${extensionPath}${/}`, `GEMINI.md` as context, `skills/` inside the
|
|
extension. Google now points unpaid users to Antigravity CLI; not tested there. The `.gemini/skills` folder used by
|
|
`install --agent gemini` is not verified (the extension route is).
|
|
- **Windsurf**: the current docs name `~/.config/devin/mcp_config.json`; `install` keeps using
|
|
`~/.codeium/windsurf/mcp_config.json` when that file already exists (older installs).
|
|
- **MCP**: built for 2026-07-28 (final, modelcontextprotocol.io) and dual-era: `initialize` clients get 2025-11-25
|
|
(or 2025-06-18 / 2025-03-26 / 2024-11-05). Tested with both handshakes on one stdio process, not yet against every
|
|
client listed above.
|
|
- **Not verified against a live account yet** (no credentials during development; request builders are tested with
|
|
fixtures from the official docs): the scale of the Play Reporting API rates (read as fractions, 0.0109 = 1.09 %),
|
|
the App Store review reply limit (5970 characters is commonly reported; Apple documents none, storebound only
|
|
warns), the TestFlight "What to Test" limit (4000 assumed), whether an analytics segment checksum covers the gzip
|
|
file or its content (both are accepted), that a new App Store price schedule replaces the old one (Apple's example
|
|
implies it), stopping a Product Page Optimization test with `started: false`, and `APP_IPHONE_61` for the 6.3"
|
|
iPhone set. From 0.5.0 (request bodies follow Apple's and Google's published schemas, tested with fixtures, not
|
|
yet run against a live account): free promotional offers and offer codes sent with territories but no price point,
|
|
subscription prices and introductory offers created inline through `PATCH /v1/subscriptions/{id}`, Play
|
|
pay-as-you-go offers as a `relativeDiscount`, Play "developer determined" offers as offers without targeting plus an
|
|
offer tag, the ISO 8601 strings for Play billing periods (Google lists them only in words), the Play subscription
|
|
benefit length (40, from Play Console), the Data safety sign-up method ids (`PSL_ACM_*`, Google publishes none:
|
|
compare with a Console export) and the data deletion question ids (`PSL_ACCOUNT_DELETION_URL` is confirmed by a
|
|
Play 400; `PSL_SUPPORT_DATA_DELETION_BY_USER` with its three options and `PSL_DATA_DELETION_URL` are in Google's
|
|
empty form exported 2026-10-12, `cli/data/play-data-safety-form.csv`, which every generated pair is checked
|
|
against). From the store
|
|
operations (built from the App Store Connect API 4.5.1 OpenAPI spec and the cited Help pages, tested with recorded
|
|
answers, not yet run live): the first IAP of a type sent through `reviewSubmissionItems` next to the app version
|
|
(`--no-submit` leaves the draft for the UI if Apple refuses it), free IAP offer code and win-back prices without a
|
|
price point, the order request for promoted purchases, the Play earnings / sales zip names beyond the documented
|
|
prefix (storebound lists the prefix), and where Xcode stores `AttributionCopyEndpoint` (top level or inside an
|
|
`AdAttributionKit` dictionary: both are read).
|
|
- **Apple IAP description**: 45 characters (App Store Connect Help, "In-app purchase information"); an older App Store
|
|
marketing page says 55. storebound checks 45.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>Develop</b></summary>
|
|
|
|
```sh
|
|
bun install
|
|
bun run ci # adapters fresh (gen-adapters --check), tests, typecheck, secrets / personal data scrub
|
|
bun tools/gen-adapters.ts # after editing skills/*/SKILL.md or docs/agents-core.md
|
|
```
|
|
|
|
`skills/*/SKILL.md` and `docs/agents-core.md` are the single source; `AGENTS.md`, `GEMINI.md`, the plugin manifests,
|
|
`.github/copilot-instructions.md` and `.cursor/rules/storebound.mdc` are generated and committed, and CI fails when
|
|
they are stale.
|
|
|
|
</details>
|
|
|
|
## Thanks and idea sources
|
|
|
|
Some skills were sparked by other people's open work. I wrote my own text; the ideas deserve the credit:
|
|
|
|
- [rorkai/app-store-connect-cli-skills](https://github.com/rorkai/app-store-connect-cli-skills) (MIT): App Store Connect
|
|
workflow ideas.
|
|
- [rshankras/claude-code-apple-skills](https://github.com/rshankras/claude-code-apple-skills) (MIT): Apple platform and
|
|
App Store topic ideas.
|
|
|
|
Built with Bun and plain `fetch` against the Google Play Developer API v3, the Play Developer Reporting API and the App
|
|
Store Connect API. Screenshot
|
|
fonts come from Google Fonts at render time (Noto, Paytone One, Montserrat, Inter; SIL Open Font License 1.1). Not affiliated
|
|
with Google or Apple.
|
|
|
|
---
|
|
|
|
[All docs](README.md) · [README](../README.md)
|