Add design for pixel-perfect clone capture: APK resource design tokens +
Play screenshots, Unity IL2CPP/Mono RE + AssetRipper game assets, and a
standalone Clone Build Spec artifact feeding writing-plans.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replaces the AppBrain scraper (Cloudflare-blocked 403, confirmed dead).
play.google.com server-rendered chart HTML works: live-validated, real
Android packages + names + ratings from both /store/apps/top and
/store/apps/category/<CAT>. CLI: <top|category> [--category CAT]
[--region R] [--limit N] [--html-file F]; output source:"google-play",
entries {rank,name,package,rating}. Package link is the stable field;
title (Epkrse class) and rating are best-effort.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
AppBrain is Cloudflare-blocked (403) for free scraping. play.google.com's
own /store/apps/top + /store/apps/category HTML works (validated live 46/46).
Rework Task 1, fetch-play-charts.py CLI/output, and all downstream prose.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
NOTE: AppBrain returns a Cloudflare JS challenge (HTTP 403) for
automated requests; live fetch degrades gracefully to an error (the
skill falls back to Apple RSS + web search). Offline test passes
against synthetic fixture — that is the test gate per the brief.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Approved spec for market-research v2: AppBrain Play charts + Play
resolver/saturation scripts + best-effort Google Trends + curated numeric
sources, numeric source-cited scoring, 1-2 verified Play links per candidate,
survivor-only enrichment for efficiency.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Six-task TDD plan for the market-research plugin: scaffold + marketplace
entry, fetch-charts.py (App Store RSS), history.py (non-repeat memory),
reference rubrics, 6-phase SKILL.md with clone-app handoff, test aggregator.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Umbrella spec for two new plugins (market-research, hermes-build) plus a
one-branch clone-app Phase 7 edit, chaining discover -> analyze -> build.
Decomposes into three implementation plans built in order.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the hand-rolled two-step APKCombo curl/grep flow with apkeep
(default source apk-pure): no auth, no JavaScript, handles XAPK split
bundling and retries itself, and the per-mirror HTML parsing is no longer
ours to maintain. The script still prints a stable app.apk/app.xapk path.
- download-apk.sh: invoke apkeep, rename artifact to app.<ext>, clear error
when the binary is missing; CLONE_APP_APKEEP (test stub) and
CLONE_APP_APKEEP_SOURCE (mirror override) env hooks
- test-download-apk.sh: rewritten against an apkeep stub (xapk/apk/fail/
missing-binary cases)
- SKILL.md Phase 1: prose updated for apkeep install + source override
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Phase 2 rewrite: invoke android-reverse-engineering skill in an isolated
subagent (fallback to direct scripts), extract Tier-2 payloads for
auth/payment/core flows, persist a digest contract to $WORK/.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The APKPure direct endpoint (d.apkpure.com/b/APK/<pkg>) now returns an HTTP
403 Cloudflare bot challenge for every package, so downloads always failed —
which also blocked the entire reverse-engineering chain downstream (it never
ran because Phase 1 produced no APK).
- download-apk.sh: fetch the APKCombo download page with a browser UA, extract
the embedded /r2?u=<signed-url> link, and download that. No JS needed; the
URL slug is ignored so a literal 'app' works for any package. Verified
end-to-end against com.wonder (Elevate) -> 126MB xapk -> RE fingerprint.
- test-download-apk.sh: model the two-step flow and the page-without-link case.
- resolve-re-scripts.sh: warn (stderr) when bash < 4, since the upstream RE
scripts use ${VAR,,} and fail with 'bad substitution' on macOS bash 3.2.
- SKILL.md / README.md / CLAUDE.md: document the APKCombo source and bash 4+ req.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>