test(market-research): cover v2 scripts in smoke; update README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
81a92fbc6f
commit
6737558d56
|
|
@ -6,14 +6,16 @@ scored, non-repeating clone candidates, then hands user-chosen candidates to the
|
|||
|
||||
## What it does
|
||||
|
||||
`/market-research` runs a 6-phase workflow:
|
||||
`/market-research` runs an 8-phase workflow (0–7):
|
||||
|
||||
0. **Seed rotation** — pick varied search angles (category × region × niche) so runs differ.
|
||||
1. **Gather** — App Store RSS chart data (`fetch-charts.py`) + free web search for trends.
|
||||
1. **Gather** — App Store RSS (`fetch-charts.py`) + play.google.com charts (`fetch-play-charts.py`) + Google Trends best-effort (`trends.py`) + free web search.
|
||||
2. **Synthesize** — cluster findings into ≥10 distinct app/game ideas.
|
||||
3. **Score** — composite score: cloneability + market opportunity + monetization fit.
|
||||
3. **Score** — composite numeric score: cloneability 35 + market 35 + monetization 20 + niche 10 (see `scoring-guide.md` + `numeric-sources.md`).
|
||||
4. **Dedup** — exclude anything already in `./work/market-research/history.json`.
|
||||
5. **Present + handoff** — show the ranked table; chosen candidates flow into `clone-app`.
|
||||
5. **Present** — show the scored, ranked table.
|
||||
6. **Survivor-only enrichment** — for user-chosen candidates only: resolve the Play Store package ID (`play.py`) and verify the link is live via WebFetch before handing off.
|
||||
7. **Handoff** — chosen candidates (with verified Play links) flow into `clone-app`.
|
||||
|
||||
## State
|
||||
|
||||
|
|
@ -23,7 +25,10 @@ Written under `./work/market-research/` in your current directory:
|
|||
|
||||
## Scripts
|
||||
|
||||
- `scripts/fetch-charts.py` — fetch App Store RSS chart feeds → normalized JSON.
|
||||
- `scripts/fetch-charts.py` — fetch Apple App Store RSS chart feeds → normalized JSON.
|
||||
- `scripts/fetch-play-charts.py` — fetch play.google.com top/category charts → normalized JSON (no AppBrain; uses the public Play web endpoint directly).
|
||||
- `scripts/play.py` — resolve an app name or bundle ID to a Play Store package ID and count search results (used in survivor-only enrichment, Phase 6).
|
||||
- `scripts/trends.py` — best-effort Google Trends interest data for a keyword; never hard-fails (falls back to `null` if the endpoint is unavailable).
|
||||
- `scripts/history.py` — read / append / dedup the suggestion history.
|
||||
|
||||
Python is stdlib-only. Tests run offline against `tests/fixtures/`:
|
||||
|
|
@ -32,6 +37,15 @@ Python is stdlib-only. Tests run offline against `tests/fixtures/`:
|
|||
bash plugins/market-research/tests/run-all.sh
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
AI-judgment rubrics under `skills/market-research/references/`:
|
||||
|
||||
- `research-angles.md` — rotating category × region × niche seeds for run-to-run variety.
|
||||
- `scoring-guide.md` — the 0–100 weighted composite formula and per-dimension guidance.
|
||||
- `numeric-sources.md` — how to map raw data (chart rank, install count, rating, search results) to numeric sub-scores used by `scoring-guide.md`.
|
||||
- `report-template.md` — output format for the scored candidate table and per-candidate write-ups.
|
||||
|
||||
## Effort convention
|
||||
|
||||
Effort is measured in **AI Sprints** (one focused Claude session), never calendar time.
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ must_exist "$P/.claude-plugin/plugin.json"
|
|||
must_exist "$P/commands/market-research.md"
|
||||
must_exist "$P/README.md"
|
||||
must_exist "$P/skills/market-research/SKILL.md"
|
||||
for s in fetch-charts.py history.py; do
|
||||
for s in fetch-charts.py history.py fetch-play-charts.py play.py trends.py; do
|
||||
must_exist "$P/skills/market-research/scripts/$s"
|
||||
must_exec "$P/skills/market-research/scripts/$s"
|
||||
done
|
||||
for r in research-angles scoring-guide report-template; do
|
||||
for r in research-angles scoring-guide report-template numeric-sources; do
|
||||
must_exist "$P/skills/market-research/references/$r.md"
|
||||
done
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue