Review replies: storebound reviews list | draft | send, review-replies skill
App Store customerReviews / customerReviewResponses and Google Play reviews.list / reviews.reply. draft writes one Markdown file per unanswered review to .storebound/replies (front matter approved: false, never overwritten); send only sends approved, unsent drafts that pass the checks (Play 350 characters, no incentives or rating requests, personal data / link / tone warnings) after a confirmation, and marks them sent. MCP: reviews_list, reviews_draft; send is never exposed.
This commit is contained in:
parent
56e107dbbe
commit
c99febc45b
11 changed files with 508 additions and 1 deletions
54
skills/review-replies/SKILL.md
Normal file
54
skills/review-replies/SKILL.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
---
|
||||
name: review-replies
|
||||
description: Reply to App Store and Google Play reviews of a mobile game the safe way - list new reviews, write reply drafts into local files (.storebound/replies), keep the tone human and short, never offer incentives or ask for a better rating, respect the store limits (Play 350 characters), and send only drafts the owner approved. Use when the user asks to answer reviews, handle bad ratings, or check what players are saying.
|
||||
---
|
||||
|
||||
# Review replies
|
||||
|
||||
CLI: `storebound reviews list | draft | send`. MCP: `reviews_list` (read-only) and `reviews_draft` (local files).
|
||||
**Sending is the owner's step**: `storebound reviews send` in a terminal, after reading the drafts; it is not an MCP
|
||||
tool, and an agent never sets `approved: true` by itself.
|
||||
|
||||
## Flow
|
||||
1. `storebound reviews list --unanswered` (or `--rating 1,2`): what came in. Google Play's API only returns reviews
|
||||
created or edited in the **last 7 days**, so run this weekly; the App Store keeps the full history.
|
||||
2. `storebound reviews draft` writes `.storebound/replies/<store>-<review id>.md` per unanswered review (gitignored;
|
||||
existing drafts are never overwritten). Front matter: `store`, `review_id`, `rating`, `where` (territory or
|
||||
language), `limit`, `approved: false`, `sent: null`. Below it the review, then `## Reply`.
|
||||
3. Write each reply under `## Reply` (the agent drafts, the owner edits). Then show the owner the list of drafts.
|
||||
4. The owner sets `approved: true` on the ones to send and runs `storebound reviews send --dry`, then
|
||||
`storebound reviews send` (asks for confirmation). Sent files get `sent: <time>`; re-running skips them.
|
||||
|
||||
## How to write a reply
|
||||
- **In the reviewer's language** (`where`: Play gives the language, Apple the territory; when unsure, mirror the
|
||||
review's language).
|
||||
- **Short and specific**: thank them in one line, answer the actual point, say what changed or what to do. Play
|
||||
allows **350 characters** (HTML is stripped); App Store replies can be longer but rarely should be.
|
||||
- **Bug reports**: name the fix and the version if it is released ("Version 1.2.1 fixes the crash on level 3"); if
|
||||
not, say it is known and being worked on, without dates you cannot keep. Point to in-game Settings > Support or the
|
||||
public support page for details.
|
||||
- **Ads / difficulty / price complaints**: explain the option that exists (e.g. "Remove Ads" in the shop, a setting),
|
||||
no argument, no blame.
|
||||
- **Positive reviews**: a short thanks is enough; do not answer every 5-star review with the same template.
|
||||
- One reply per review. A new send replaces the old one (both stores); the reviewer is notified and may update
|
||||
their review on their own.
|
||||
|
||||
## Never (store policy, and storebound blocks the obvious cases)
|
||||
- **No incentives** for ratings or review changes: no coins, gems, items, discounts or refunds "for" a better review,
|
||||
and no "please give us 5 stars" / "update your rating". Google Play prohibits incentivized or manipulated ratings
|
||||
(Play Console Help, "User Ratings, Reviews, and Installs", answer 9898684); Apple removes apps that manipulate
|
||||
reviews or ratings (App Review Guidelines, Developer Code of Conduct). `reviews send` refuses replies that match
|
||||
these patterns.
|
||||
- **No personal data**: no player names beyond what the store shows, no emails or phone numbers of players, no
|
||||
account details. Your public support address is fine.
|
||||
- **No marketing or spam**: no promo codes, no links to other games, no all-caps or "!!!" (Apple's guidance:
|
||||
https://developer.apple.com/app-store/responding-to-reviews/).
|
||||
- **No arguing or disclosing**: do not dispute facts publicly, do not reveal internal plans, cheats or how anti-cheat
|
||||
works. Hostile or abusive reviews: skip or keep it to one polite line; report policy-violating reviews in the console.
|
||||
|
||||
## Gotchas
|
||||
- Apple shows a reply after up to about 24 hours (`PENDING_PUBLISH` first). Apple documents no maximum length;
|
||||
storebound warns above 5970 characters (commonly reported App Store Connect limit, not verified).
|
||||
- Replying needs the Account Holder, Admin or Customer Support role on Apple's side and the "Reply to reviews"
|
||||
permission for the Play service account.
|
||||
- Drafts contain public reviewer nicknames: keep `.storebound/` out of git (it is gitignored by `storebound init`).
|
||||
Loading…
Add table
Add a link
Reference in a new issue