Agent skill

App Store Review Arbitrage

by Varnan-Tech in Varnan-Tech/opendirectory

Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

MITAuto-check passedMobile

Install App Store Review Arbitrage

skills CLI
$ npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Varnan-Tech/opendirectory app-store-review-arbitrage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/app-store-review-arbitrage .claude/skills/app-store-review-arbitrage && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
app-store-review-arbitrage
GitHub stars
674
Token cost
~2.8k tokens
SKILL.md length
1,310 words
Files
11 (incl. scripts, references)
Skills in repo
61
Repo updated
First seen
Licence
MIT

At a glance

Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

  • Works in 7 steps: Parse Input and Detect Platform → Collect Reviews & Metadata → Complaint Clustering → …
  • Tasks that involve App store release
  • SKILL.md covers Critical Rules (read before…, Step 1 — Parse Input and…, Step 2 — Collect Reviews &… and Step 3 — Complaint Clustering, plus 4 more sections
  • Runs Python scripts from its folder; calls pip and python3

What it does

App Store Review Arbitrage is an agent skill from Varnan-Tech/opendirectory. Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including scripts and reference files (for example `README.md`, `evals/README.md` and `evals/evals.json`). Compatibility notes: ["claude-code","gemini-cli","github-copilot"]

It sits in Mobile, covering App store release. The repository describes itself as: AI Agent Skills built for Founders who hate Marketing. The licence is MIT.

When your agent uses it

  • Tasks that involve App store release

Example prompts

  • “Use the app-store-review-arbitrage skill to fetch low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and…”
  • “/app-store-review-arbitrage”

Requirements

  • Python 3
  • Compatibility (from SKILL.md): ["claude-code","gemini-cli","github-copilot"]

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Parse Input and Detect Platform
  2. Collect Reviews & Metadata
  3. Complaint Clustering
  4. Broken Promise Detection
  5. Generate Copy
  6. Self-QA
  7. Save Output

What it can do on your machine

Read from SKILL.md and the folder at commit 62e437a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • pip
    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    ["claude-code","gemini-cli","github-copilot"]

    From compatibility in the SKILL.md frontmatter.

Context cost

App Store Review Arbitrage loads about 2.8k tokens when it runs, and up to ~7.1k if it reads all its reference files. Until then it costs about 47 tokens; SKILL.md has 1,310 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~47
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from Varnan-Tech/opendirectory at commit 62e437a, republished under its MIT licence (© Varnan-Tech). 1,310 words, ~2,787 tokens.

Download SKILL.mdSave it as .claude/skills/app-store-review-arbitrage/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
app-store-review-arbitrage
description
Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.
compatibility
["claude-code","gemini-cli","github-copilot"]
version
1.0.0

app-store-review-arbitrage

Convert a competitor's App Store or Google Play URL into a one-session GTM brief: ranked complaint clusters, a broken promise map, landing page headlines, and ad copy directions — all sourced from verbatim reviews.


Critical Rules (read before Step 1)

These rules apply throughout all steps. Violating any of them fails Self-QA (Step 6).

  1. Every quote must be verbatim. No paraphrase, no grammar correction, no cleaning. Exact reviewer words only.
  2. No fabricated statistics. Do not write "40% faster" or "2× more reliable" unless a reviewer explicitly used similar language. The Self-QA step checks for uncited percentages.
  3. Cluster names must use reviewer language. Study the anti-pattern table in Step 3.
  4. Every headline and ad copy direction must cite its source cluster. Format: [cluster: "cluster-name"].
  5. Section 2 is always present in the output — even when degraded. Never skip or omit it.
  6. No banned words in any generated copy: powerful, robust, seamless, innovative, game-changing, streamline, leverage, revolutionize, transform.

Step 1 — Parse Input and Detect Platform

Accept a natural language prompt containing one app URL. Extract the URL.

Platform detection:

  • apps.apple.com → App Store
  • play.google.com/store/apps/details?id= → Google Play
  • Any other URL → stop and respond: "Please provide a direct App Store or Google Play URL. I can't analyse review data from other sources."

ID extraction (do this before calling the script):

PlatformWhat to extractHow
App StoreNumeric app_idDigits after /id in the URL
App Storecountry2-letter code after apps.apple.com/ (e.g., us, gb)
Google Playpackage_nameValue of id= query parameter

Persist the extracted values — you will need them for the output filename in Step 7.

If product_context was provided in the user's prompt (what their own product does), store it — used to personalise copy in Step 5.


Step 2 — Collect Reviews & Metadata

Run the full fetch script:

bash
python3 scripts/fetch_reviews.py "{app_url}" --output {tmpdir}/asr-raw.json

(Note: Replace {tmpdir} with your operating system's temp directory, e.g., /tmp on macOS/Linux or C:\Temp on Windows).

This fetches both the store description metadata and the reviews.

  • App Store: iTunes API — free, no auth. App Store reviews are fetched via Apple's public iTunes RSS feed. Some apps return 0 reviews due to Apple's API limitations — in that case the skill continues with available data and logs a warning. Google Play is the primary supported path.
  • Google Play: google-play-scraper package — free, no auth

If the script fails, read the error from stderr. Common causes:

  • Package not installed: run pip install google-play-scraper
  • App not found: verify the URL is a current, live listing
  • Google Play API error: run pip install --upgrade google-play-scraper and retry

The script will print collection progress to stderr. Wait for it to complete. After completion, read {tmpdir}/asr-raw.json and display the collection summary to the user:

✓ Collected [N] reviews ([N] low-star 1–3★) from [platform]
  Date range: [oldest] to [newest]
  Package: [iTunes API | google-play-scraper]

Check the exit code:

  • Exit 0 → collection succeeded, check metadata.store_description. If null: note this — Section 2 will use the degraded state. Proceed to Step 3.
  • Exit 1 → error (read stderr message, surface it to user, stop)
  • Exit 2 → Gate 1 triggered (< 10 low-star reviews found)

Gate 1 — Low signal stop: If the script exits with code 2, read the gate_message from {tmpdir}/asr-raw.json and surface it to the user verbatim. Do not proceed to Step 3. Do not produce a partial brief.


Step 3 — Complaint Clustering

Load low_star_reviews from {tmpdir}/asr-raw.json.

Cluster all low-star reviews into 4–6 named complaint themes. Apply this formula to score each review:

complaint_weight = (4 - rating) × recency_factor

recency_factor:
  review age ≤ 90 days  → 1.0
  review age 91–365 days → 0.7
  review age > 365 days  → 0.4

review age = (today's date) − (review date field) in days.

cluster_score = sum of complaint_weight for all reviews in the cluster.

Cluster naming — critical rule:

You will want to write abstract names. Resist. Use the exact verb and noun from reviews.

❌ Abstracted (wrong)✅ Reviewer language (correct)
"Stability issues""Crashes when exporting to PDF"
"Sync problems""Data lost after sync between phone and desktop"
"Monetisation friction""Paywall appears after 3 days, not 14 as promised"
"Performance degradation""App freezes every time I search"
"Onboarding issues""Can't figure out how to invite a teammate"

Rules:

  • Each review belongs to exactly one cluster (assign to its dominant theme)
  • Discard any cluster with fewer than 3 reviews — log it as noise
  • Select 3–4 verbatim quotes per cluster: lowest star rating first, then most recent

Gate 2 — Minimum cluster size: After discarding sub-3-review clusters, check how many clusters remain.

Gate 3 — Low-confidence flag: If fewer than 3 clusters remain:

  • Do NOT stop. Continue to output.
  • Prepend this to the brief header immediately after the app metadata:

    ⚠ LOW CONFIDENCE: Only [N] complaint cluster(s) met the minimum evidence threshold (≥ 3 supporting reviews). Output reflects limited data. Consider a competitor with more reviews, or broaden the rating filter.

  • Include Medium-tier clusters in the output (score ≥ 5)

Tier classification (for the leaderboard table in Section 1):

  • Critical: score ≥ 60
  • High: score 15–59
  • Medium: score 5–14 (include only when Gate 3 applies)
  • Noise: score < 5 (discard, do not include)

Write clusters to {tmpdir}/asr-clusters.json:

json
{
  "clusters": [
    {
      "name": "cluster name in reviewer language",
      "score": 34.5,
      "tier": "High",
      "review_count": 14,
      "verbatim_quotes": [
        {"rating": 1, "text": "exact reviewer words", "date": "YYYY-MM-DD"},
        ...
      ]
    }
  ],
  "discarded_noise": 2,
  "gate_3_triggered": false
}

Show full SKILL.md (536 more words)Show less

Step 4 — Broken Promise Detection

This is the step that differentiates this skill from every existing tool. It must run as a distinct, named step.

Load:

  • metadata.store_description from {tmpdir}/asr-raw.json
  • All clusters from {tmpdir}/asr-clusters.json

If store_description is null: Set store_description_available: false. Write {tmpdir}/asr-promises.json with empty broken_promises array and detection_note as specified below. Proceed to Step 5.

If store description is available:

  1. Extract claims. A claim is any specific, testable assertion about app behavior. See references/broken-promise.md for the full definition and examples. Exclude vague superlatives, team descriptions, and press quotes.

  2. Cross-reference. For each claim, check all cluster names and verbatim quotes. A contradiction exists when the cluster directly documents failure of the promised behavior (minimum 3 reviews).

  3. Produce broken promise records — one per confirmed contradiction:

    json
    {
      "claim_text": "verbatim excerpt from store description",
      "complaint_cluster": "exact cluster name",
      "gap_label": "Claims X; users report Y",
      "evidence_count": 18
    }

Write to {tmpdir}/asr-promises.json:

json
{
  "store_description_available": true,
  "broken_promises": [...],
  "no_contradictions_found": false,
  "detection_note": null
}

Degraded states:

  • No description: store_description_available: false, detection_note: "Store description unavailable (fetched YYYY-MM-DD, returned empty). Broken promise comparison cannot be performed."
  • No contradictions: no_contradictions_found: true, detection_note: "No broken promises detected. Store description does not appear to overclaim relative to complaint clusters."

See references/broken-promise.md for anti-patterns (what NOT to flag).


Step 5 — Generate Copy

Using clusters from Step 3 and broken promises from Step 4, generate Sections 3–5 of the brief.

Copy rules (apply to all three sections):

  • Every headline and direction must cite its source cluster: [cluster: "cluster-name"]
  • No banned words: powerful, robust, seamless, innovative, game-changing, streamline, leverage, revolutionize, transform
  • No fabricated statistics — no percentages or numbers unless a reviewer used them
  • If product_context was provided: make "Say this" directions specific to that product's features. If not: write as positioning templates the user fills in.
  • Use reviewer language in headlines — derive from or quote actual review text

Section 3 — Landing Page H1 Bank (3–5 headlines):

  • Each: "[headline text]" [cluster: "cluster-name"]
  • ≤ 8 words where possible
  • Address the frustrated user directly

Section 4 — Ad Copy Directions (exactly 3 pairs):

Cluster: [cluster name]
Not that: "[what the competitor claims or a generic weak alternative]"
Say this: "[counter-claim grounded in complaint evidence]"
Evidence: [N] reviewers reported [verbatim complaint summary]

Section 5 — Anti-Claim Warnings:

  • One warning per broken promise from Step 4
  • If Section 2 is degraded: single note (see references/brief-format.md for exact wording)

Step 6 — Self-QA

Before saving, verify the generated brief against these checks. If any check fails, fix the specific item and re-verify — do not save a failing brief.

CheckRule
Verbatim quotes presentEvery cluster has ≥ 2 verbatim quotes
No banned wordsNone of the 9 banned words appear in Sections 3–5
No uncited percentagesAny % in output must trace to a reviewer's actual words
All copy citedEvery headline and "Say this" has a [cluster: "name"] citation
Cluster count ≥ 1At least one cluster survived Gates 2/3
Section 2 presentSection 2 appears in the output (in any state)
Quote ratings ≤ 3All verbatim quotes came from 1–3★ reviews

Note on cluster count: The minimum for a passing brief is 1 cluster (not 3). The Gate 3 low-confidence flag handles cases where < 3 clusters survive — that is a warning, not a failure. Self-QA fails only if 0 clusters exist.


Step 7 — Save Output

Assemble the full brief per the format in references/brief-format.md.

Save to:

docs/review-briefs/[app-id]-[YYYY-MM-DD].md

Create the docs/review-briefs/ directory if it does not exist.

Print the full brief to the user.

Clean up temp files: {tmpdir}/asr-raw.json, {tmpdir}/asr-clusters.json, {tmpdir}/asr-promises.json.

© Varnan-Tech, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (scripts, references) in skills/app-store-review-arbitrage of Varnan-Tech/opendirectory.

  • SKILL.md
  • .env.example
  • README.md
  • evals/README.md
  • evals/evals.json
  • evals/fixtures/eval3-mock.json
  • package.json
  • references/brief-format.md
  • references/broken-promise.md
  • references/scoring.md
  • scripts/fetch_reviews.py

Open the folder on GitHubat commit 62e437a

Compare with similar skills

App Store Review Arbitrage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

App Store Review Arbitrage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
App Store Review Arbitrage this skillVarnan-Tech/opendirectory674—~2.8kAutomated safety check: PassMIT
Aso Appstore Screenshotsadamlyttleapps/claude-skill-aso-appstore-screenshots1.8k1 repos~9.6kAutomated safety check: PassMIT
Asc Ppp Pricingrorkai/app-store-connect-cli-skills1.1k3 repos~4.2kAutomated safety check: PassMIT
Maintain Docusaurus Manualmatthiasn/lotti1.2k—~930Automated safety check: PassGPL-3.0
Workbuddy Skin Studiocdredfox/workbuddy-skin-studio198—~1.5kAutomated safety check: PassMIT
App Store AsoTimBroddin/app-store-aso-skill100—~1.5kAutomated safety check: PassMIT

Similar skills

  • Aso Appstore Screenshots

    adamlyttleapps/claude-skill-aso-appstore-screenshots

    Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.

    1.8k GitHub starsUsed in 1 repo~9.6k tokens
    MobileAuto-check passed
  • Asc Ppp Pricing

    rorkai/app-store-connect-cli-skills

    Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands.

    1.1k GitHub starsUsed in 3 repos~4.2k tokens
    MobileAuto-check passed
  • Maintain a Docusaurus product manual whose prose, navigation, localized page trees, screenshots, coverage metadata, and release build must stay aligned with the application.

    1.2k GitHub stars~930 tokensUpdated today
    MobileAuto-check passed
  • Workbuddy Skin Studio

    cdredfox/workbuddy-skin-studio

    Apply a reversible theme/skin to the WorkBuddy desktop app (Tencent AI office agent) via local Chromium DevTools Protocol (CDP) injection.

    198 GitHub stars~1.5k tokensUpdated 2 mo ago
    MobileAuto-check passed
  • App Store Aso

    TimBroddin/app-store-aso-skill

    Generate optimized Apple App Store metadata recommendations with ASO best practices.

    100 GitHub stars~1.5k tokensUpdated 5 mo ago
    MobileAuto-check passed
  • Marionette Flutter Drive App

    leancodepl/marionette_mcp

    Set up and drive a running Flutter app (debug or profile) with Marionette — an AI agent's hands and eyes for the app.

    482 GitHub stars~11k tokensUpdated 4 days ago
    MobileAuto-check passed

More from Varnan-Tech/opendirectory

All 61 skills in this repo
  • Graphic Ebook

    Varnan-Tech/opendirectory

    Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF.

    674 GitHub stars~5k tokensUpdated 1 mo ago
    Auto-check passed
  • Docs From Code

    Varnan-Tech/opendirectory

    Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture.

    674 GitHub stars~1.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Graphic Chart

    Varnan-Tech/opendirectory

    Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6.

    674 GitHub stars~2.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Graphic Gif

    Varnan-Tech/opendirectory

    Creates animated looping GIFs from CSS animations (default) or AI image-to-video.

    674 GitHub stars~3k tokensUpdated 1 mo ago
    Auto-check passed
  • Map Your Market

    Varnan-Tech/opendirectory

    Given a product description, category keywords, or competitor names (any combination), searches Reddit, Hacker News, GitHub Issues, G2, and Google Trends for the real pains your market experiences…

    674 GitHub stars~4.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Newsletter Digest

    Varnan-Tech/opendirectory

    Aggregates RSS feeds from the past week, synthesizes the top stories using Gemini, and publishes a newsletter digest to Ghost CMS.

    674 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about App Store Review Arbitrage

What does App Store Review Arbitrage do?

Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities. App Store Review Arbitrage is an agent skill from Varnan-Tech/opendirectory. Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

When should I use App Store Review Arbitrage?

App Store Review Arbitrage fits situations like: tasks that involve App store release.

How do I install App Store Review Arbitrage in Claude Code?

Run `npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a claude-code`. Or copy the skill folder (skills/app-store-review-arbitrage in Varnan-Tech/opendirectory) into .claude/skills/app-store-review-arbitrage in your project. Claude Code loads it when a task matches its description.

How do I install App Store Review Arbitrage in Codex?

Run `npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a codex`. Or copy the skill folder (skills/app-store-review-arbitrage in Varnan-Tech/opendirectory) into .agents/skills/app-store-review-arbitrage in your project. Codex loads it when a task matches its description.

Can I use App Store Review Arbitrage in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/app-store-review-arbitrage, .gemini/skills/app-store-review-arbitrage, .github/skills/app-store-review-arbitrage and .opencode/skills/app-store-review-arbitrage in your project.

What does App Store Review Arbitrage need to run?

Going by SKILL.md and its folder, App Store Review Arbitrage needs Python for the scripts in its folder and the command-line tools its instructions call (pip and python3). Our summary lists: Python 3. Compatibility (from SKILL.md): ["claude-code","gemini-cli","github-copilot"].

Does App Store Review Arbitrage access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is App Store Review Arbitrage safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does App Store Review Arbitrage use?

App Store Review Arbitrage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does App Store Review Arbitrage use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.3k tokens, read only when the agent opens those files.

What are the alternatives to App Store Review Arbitrage?

Skills that share tags, products or a category with App Store Review Arbitrage: Aso Appstore Screenshots (adamlyttleapps/claude-skill-aso-appstore-screenshots, 1.8k stars), Asc Ppp Pricing (rorkai/app-store-connect-cli-skills, 1.1k stars), Maintain Docusaurus Manual (matthiasn/lotti, 1.2k stars) and Workbuddy Skin Studio (cdredfox/workbuddy-skin-studio, 198 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains App Store Review Arbitrage?

Varnan-Tech (a GitHub organization) maintains it in Varnan-Tech/opendirectory, which has 674 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on August 16, 2026.

Source: Varnan-Tech/opendirectory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.