agent rules: first rule "Do it, don't ask" (agents-core and every adapter, README, store-pitfalls lead, first-release, declarations and console skills); the agent runs the real command after the dry run, the owner presses only final public or irreversible buttons and answers compliance facts in one batch; handoff text removed from skills; tests/do-it-dont-ask.test.ts. Pitfall 26

This commit is contained in:
CRTkafa 2026-10-12 09:28:45 +08:00
parent fc524cd2d4
commit dfc28c15f8
22 changed files with 393 additions and 105 deletions

View file

@ -10,10 +10,12 @@ or `bun <toolchain>/cli/index.ts`; agents can also use the `storebound mcp` tool
It reads `storebound.config.ts` in the project (create with `storebound init`) and credentials from env or
`.storebound/credentials.json` (gitignored). Every write command has `--dry`. Run `storebound check` first.
**Ask the owner before anything public or irreversible**: production releases, "Send for review", publishing,
deleting products. Sending a first release for review is the owner's action in the Console, not yours.
**Do it, don't ask** (first rule in AGENTS.md / `docs/agents-core.md`): you run every step below yourself, API steps
with storebound and UI steps in Play Console with your browser tool, and verify each. The owner only presses the
public or irreversible buttons (Send changes for review, production release or rollout, agreements, deleting
products) and answers the compliance facts no file proves, all in one batch at the start.
## Steps (API = storebound does it, UI = Play Console by hand)
## Steps (API = storebound, UI = Play Console, driven by you with your browser tool)
1. **UI · Create the app.** `storebound console plan play-app-record` (then drive the form with your browser tool,
or the scripted `storebound console fill play-app-record`). The form is
@ -25,10 +27,11 @@ deleting products. Sending a first release for review is the owner's action in t
`/console/u/0/developers/<developerId>/app/<appId>/app-dashboard`: put that app id in `play.appId` (the App
content forms deep-link from it).
**Owner step after every Create app:** a service account's app-level permissions do NOT cover apps created later.
The owner opens Users and permissions > the service account > Add app > the new app > Admin (or at least: view app
information, manage store presence, release to testing tracks, manage testing tracks, manage production releases,
manage policy declarations, manage orders and subscriptions) > Apply > Save changes. Never do this yourself: it is
a permission grant (agents in auto mode are blocked from it too). Then `storebound apps check --store play`.
Granting them is the owner's (a permission grant; agents in auto mode are blocked from it too): give the exact
path in the same message as the Create app button, Users and permissions > the service account > Add app > the new
app > Admin (or at least: view app information, manage store presence, release to testing tracks, manage testing
tracks, manage production releases, manage policy declarations, manage orders and subscriptions) > Apply > Save
changes. Then run `storebound apps check --store play` yourself.
2. **UI · API access.** Google Cloud project (any) > enable "Google Play Android Developer API" > create a service
account > JSON key (keep it outside the repo). Play Console > Users and permissions > Invite new users > the
service account email > app permissions: view app information, manage store presence, release to testing tracks,
@ -52,7 +55,7 @@ deleting products. Sending a first release for review is the owner's action in t
6. **API · Listing text.** Fill `store/listing.md` (one section per language), then `storebound play listing`.
It also sets contact email + website (website = the domain serving app-ads.txt). Run `--dry` first and show the
owner the plan (details and per language old -> new per field; draft languages skipped until `listing reviewed`,
`--include-drafts` only on the owner's word); the real run asks in a terminal and PUTs only what changes.
`--include-drafts` only on the owner's word); then run it yourself with `--yes`: it PUTs only what changes.
7. **API · Graphics.** Render (`store-screenshots` skill), `storebound shots jpeg`, then
`storebound play images > .storebound/play-images.log 2>&1 &` and follow the log (it is slow: one edit per language).
Required: the 512 x 512 icon, the 1024 x 500 feature graphic and at least 2 phone screenshots (Play Console Help
@ -68,7 +71,8 @@ deleting products. Sending a first release for review is the owner's action in t
with the demo account (`review-access`); with accounts: the delete-account URL (`account-deletion`); subscriptions:
`storebound play subscriptions` (`store-subscriptions`).
11. **UI · Store settings.** Category + tags, contact details.
12. **API + UI · Production.** `storebound play release --version-code N --production draft`, then in the Console:
12. **API + UI · Production.** `storebound play release --version-code N --production draft`, then in the Console
(you, with your browser tool):
Production > Countries/regions > Add countries > select all > Save; Production > the draft release > Edit >
Next > Save; Publishing overview > **Send changes for review** (owner).
13. **Verify.** `storebound validate --play` (no blockers), `storebound play status` (tracks, listings, products), Console dashboard has no open tasks,