Skill
Give your AI assistant direct access to real-time HK/US stock data and trading capabilities with Longbridge Skill
A Claude Code skill that turns an App Store, Google Play, or Steam review page into a ranked list of what to fix first, with verbatim quotes as evidence.
SkillsPythonGitHub @Ying8109OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Claude Code skill: turn app-store reviews into a ranked 'what to fix first' report with TypeSafe's Jev model
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A Claude Code skill that turns an app-store review page into a ranked "what to fix first"
report for a product team. Paste a link to an App Store, Google Play, or Steam page (or a
CSV/JSON export of reviews), and Claude:
1. fetches the reviews,
2. drafts product areas specific to the app (e.g. "Free-tier limits", "Editor and typing"),
3. has TypeSafe's Jev model label every review for sentiment,
severity, product-area problems and praise, bugs, feature requests, churn signals, and
"since an update" regressions,
4. ranks the areas in code and writes a narrative with verbatim quotes.Read the full README ↗A Claude Code skill that turns an app-store review page into a ranked "what to fix first" report for a product team. Paste a link to an App Store, Google Play, or Steam page (or a CSV/JSON export of reviews), and Claude:
In our test runs, 300 reviews took about 6 seconds of model time and roughly $0.06–0.10 in Jev usage. Treat these as estimates: cost depends on review length, the number of product areas, and TypeSafe's current pricing. One run can potentially handle up to 10,000 reviews; see How many reviews.
Website: https://ying8109.github.io/app-review-triage/ has a one-minute intro video and a sample report you can open in your browser. The sample report uses public Google Play reviews of Todoist, shown without reviewer names. To have a review removed, open an issue.
report.html: a self-contained report with sentiment, ranked areas and their strongest
quotes, bugs, feature requests, churn signals, version breakdown, and borderline cases.
Claude opens it in your default browser and gives you a clickable link to it.review_labels.csv: one row per review with every label and probability.brief.md / summary.json: the aggregates behind the report.You need Claude Code and a TypeSafe API key. Nothing else from other repositories is required.
1. Clone this repository into your Claude Code skills folder.
git clone https://github.com/Ying8109/app-review-triage.git ~/.claude/skills/app-review-triage
To use it in one project only, clone it into that project's .claude/skills/app-review-triage
instead.
2. Install uv (recommended). It runs the scripts and installs their Python dependencies on first use, including a suitable Python if you don't have one.
curl -LsSf https://astral.sh/uv/install.sh | sh # or: brew install uv
See the uv installation guide for Windows and other options.
Without uv you need Python 3.10 or newer. Create a virtual environment inside the skill folder once, and Claude will use it:
cd ~/.claude/skills/app-review-triage && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
3. Set your TypeSafe API key. Create one at https://console.typesafe.ai/keys, then add
it to your shell profile (~/.zshrc or ~/.bashrc) so Claude Code can see it:
export TYPESAFE_API_KEY="your-key-here"
On Windows, set it once as a user environment variable instead
(setx TYPESAFE_API_KEY "your-key-here" in a terminal), then restart Claude Code.
Open a new terminal (or source your profile) and start Claude Code from it. In the Claude
desktop app, which doesn't start from a terminal, Claude runs the model steps through an
interactive shell so they can read the key from your profile. Never paste the key into a
chat or commit it to a repository.
4. Start a new Claude Code session. The skill is picked up automatically.
In Claude Code, run /app-review-triage or just ask:
Here's our App Store page: https://apps.apple.com/us/app/... — what should the product team fix?
Claude checks in with you three times, so you know what goes in and what comes back.
Before running anything, Claude asks four things and waits for your answers:
TYPESAFE_API_KEY (never the key itself; don't
paste it into chat),Claude then repeats your answers back before fetching anything.
Before calling Jev (the only paid step), Claude shows the run plan and waits for your go: the reviews it fetched and their dates, the product areas Jev will be asked about, what text goes to TypeSafe and to Anthropic, the estimated time and cost, and the files you'll get.
When it delivers the report, Claude recaps what you asked for against what was analyzed: review counts, dates, any limit it hit, areas it changed after the plan, labels left out of counts as borderline, and the actual Jev usage.
Estimates from test runs with jev-1.13.0 and about 18 product areas. Your numbers will vary
with review length, the number of product areas, and TypeSafe's current pricing. Model time
only; Claude's own steps (drafting product areas, writing the summary) add a few minutes.
| Reviews | Model time | Jev cost | Report size |
|---|---|---|---|
| 300 (default) | ~6 s | ~$0.10 | ~0.5 MB |
| 1,000 | ~20 s | ~$0.30 | ~1.2 MB |
| 5,000 | ~1.5 min | ~$1.50 | ~5 MB |
| 10,000 (maximum per run) | ~3 min | ~$3 | ~10 MB |
triage.py stops before calling the model and suggests an even sample across
a date window (--since). --allow-large runs them all; the report gets slow to open.| Path | What it is |
|---|---|
SKILL.md | The workflow Claude follows |
scripts/fetch_reviews.py | Fetches App Store, Google Play, Steam, JSON-LD pages, or normalizes exports |
scripts/sample_reviews.py | Prints a review sample for drafting product areas |
scripts/triage.py | Runs Jev (two passes, cached per question), aggregates, and writes outputs |
scripts/jev_questions.py | Every Jev question and threshold, in one place for review |
scripts/report_html.py | Renders the HTML report |
references/default_areas.json | Generic product areas to start from |
requirements.txt | Python dependencies, for setups without uv |
tests/ | Tests with a fake model and made-up reviews; no API key or network needed |
SECURITY.md | How to report a security problem, and what the skill defends against |
docs/ | The project website (served by GitHub Pages): one page, the intro video, and a sample report |
LICENSE | MIT |
brief.md (counts, ratings, versions, and
quotes) while it works, so that text goes to Anthropic as part of your Claude Code
session. The fetcher contacts only the store or page you link to, and the report's only
outside request is the Google Fonts stylesheet.TYPESAFE_API_KEY from your environment. No
script prints it or writes it to a file. Don't paste it into chat.--dangerously-skip-permissions) while you use this skill. Review text is written by
strangers and reaches Claude, and the prompts make any command wait for your OK.report.html;=, +, -, @) get a leading
apostrophe, in both review_labels.csv and the report's Download CSV;brief.md, the code's labels come first and each quote is a JSON string, so a review
can't pass off its own words as labels; every line the scripts print starts with the
code's own text, and the report is opened without a shell;http(s) links are fetched: never file:// or ftp://, and
never local or private network addresses, including through a redirect. The address is
checked just before the request, so a domain built to switch addresses between the check
and the connection (DNS rebinding) could still reach one. A response over 25 MB, or a
request that takes over 2 minutes from start to finish, is refused. For an export, only
the file's name is recorded, not its folder.YYYY-MM-DD
dates and versions must look like versions; anything else is dropped rather than guessed.The tests replace Jev with a deterministic fake and use only made-up reviews, so they need no API key, no network, and cost nothing:
uv run --python 3.12 --with pytest --with "typesafe-sdk>=0.7.2,<0.8" --with "google-play-scraper>=1.2.7,<2" pytest tests -q -p no:cacheprovider
Without uv: .venv/bin/pip install pytest && .venv/bin/python -m pytest tests -q.
MIT. Reports end with a one-line credit: "Created by Ying Chen, UX Researcher & writer of Signals to Solutions newsletter."
--from-file, their
text is sent to TypeSafe and appears in the report, just like public reviews. Make sure
you're allowed to do that before you run it.