storebound/skills/console-autofill/SKILL.md

63 lines
4.6 KiB
Markdown

---
name: console-autofill
description: AI-assisted autofill of App Store Connect and Google Play Console forms that have no API (the New App dialog, App Privacy, the Play IARC content rating questionnaire, Target audience and content plus the Ads declaration; the App Store age rating is shown as guidance because the API sets it) in a visible Chromium the owner signs in to. Answers come only from storebound.config.ts; anything the config does not prove stays empty and highlighted. storebound never signs in, never saves, submits or publishes. Use when the user wants help filling one of these console forms, asks what to answer in them, or wants the answers as a checklist.
---
# Console autofill (forms without an API)
CLI: `storebound` (or `bunx storebound` in a project that has it, or `bun <toolchain>/cli/index.ts`).
**Read this to the owner first.** Console pages change without notice. This is AI-assisted autofill and it may put an
answer in the wrong place. The owner reviews every field and presses the final button. storebound never types a
password, never touches a sign-in page, never reads cookies, and never clicks Save, Submit, Publish, Create, Next or
any similar control (English or Turkish console). It is not available over MCP.
## Forms
| form | where | filled from |
|---|---|---|
| `apple-app-record` | App Store Connect > Apps > + > New App | app.name, apple.primaryLocale, apple.bundleId, console.appRecord (SKU, user access) |
| `apple-age-rating` | App Information > Age Ratings | guide only: `storebound apple appinfo` sets every question through the API |
| `apple-app-privacy` | the app > App Privacy | dataSafety (types and purposes); linked to identity and tracking are always the owner's |
| `play-content-rating` | Policy > App content > Content rating | app.contactEmail, app.profile, products, console.contentRating |
| `play-target-audience` | Policy > App content > Target audience and content (+ Ads) | console.targetAudience, ads.appAdsTxt |
## Steps
1. `storebound console fill` lists the forms. `storebound console fill <form> --dry` prints every answer with its
source; `[check]` lines are not proven by the config. Show them to the owner.
2. For each `[check]` line, ask the owner (AGENTS.md rule 5: never guess a compliance answer). If they want it filled
next time, add it to the config, for example:
```ts
console: {
appRecord: { sku: 'com.example.game', userAccess: 'full' },
contentRating: { category: 'game', answers: { violence: false, lootBoxes: false, userInteraction: false } },
targetAudience: { ages: ['13-15', '16-17', '18-over'], appealsToChildren: false, containsAds: true },
},
```
Age rating answers live in `apple.info.ageRating` (also `socialMedia`, `socialMediaAgeRestricted`).
3. The owner runs `storebound console fill <form>` in a terminal (or presses the button in the desktop app). A Chromium
window opens with its own profile (`~/.storebound/console-profile/<store>`, or `--profile <dir>` /
`STOREBOUND_CONSOLE_PROFILE`). If a sign-in page shows, storebound prints "sign in in the browser window, storebound
waits" and waits up to 10 minutes. The sign-in stays in that profile for the next run.
4. storebound prints what to click to open the form (Play Console has no deep link; App Store Connect opens the app
when `apple.appId` is set). When the form appears it fills the certain answers, outlines every unproven or
unfillable field with a "storebound: check this" label, and lists them in the terminal.
5. Multi-page forms: the owner reviews the page and clicks Next; storebound fills the next page when it appears.
6. On the last page storebound prints "review every field and press <Save | Submit | Publish | Create> yourself". The
command ends when the owner closes the window (`--json` then prints the result with `filled`, `highlighted`,
`fallback`, `stoppedAt`).
7. If a field cannot be found or matches twice, the console UI changed: storebound stops filling and prints the
step-by-step list ("label: answer") for the owner to copy. That is the expected safe behavior, not an error.
## The owner decides
Every `[check]` answer, linked-to-identity and tracking for each App Privacy data type, the IARC answers, the target
ages, and pressing the final button (App Privacy Publish, IARC Submit, Target audience Save, New App Create).
## Out of scope
- Signing in, two-factor codes, accepting agreements, choosing a developer account.
- Forms with an API: Data safety (`storebound play data-safety`), age rating, categories and content rights
(`storebound apple appinfo`), export compliance (`storebound apple encryption`).
- Recording or reading console data: storebound only fills the visible form.