blog-cover-image-cli
Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand…
Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.
Claude Code
$ npx -y skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage --agent claude-code
Codex
$ npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a codex -y
Cursor
$ npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a cursor -y
Gemini CLI
$ npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a gemini-cli -y
GitHub Copilot
$ npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a github-copilot -y
OpenCode
$ npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a opencode -y
Windsurf
$ npx skills add Varnan-Tech/opendirectory --skill app-store-review-arbitrage -a windsurf -y
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." version: 1.0.0
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.
---
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.
---
Accept a natural language prompt containing one app URL. Extract the URL.
**Platform detection:**
**ID extraction (do this before calling the script):**
| Platform | What to extract | How | |---|---|---| | App Store | Numeric `app_id` | Digits after `/id` in the URL | | App Store | `country` | 2-letter code after `apps.apple.com/` (e.g., `us`, `gb`) | | Google Play | `package_name` | Value 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.
---
Run the full fetch script:
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.
If the script fails, read the error from stderr. Common causes:
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:**
**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.
---
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:**
**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:
> ⚠ **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.
**Tier classification** (for the leaderboard table in Section 1):
Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand…
World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then…
Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused…
Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using…
Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat…
Give it your product URL or description. It finds your top 5 competitors, runs three-track PR research across all of them…
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use…
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…