solo-research
Use when "research this idea", "find competitors", "check the market", "domain availability", "market size", "analyze opportunity", or need evidence before validation. Do NOT use for idea scoring (/validate) or SEO auditing (/seo-audit).
Install
npx skills add https://github.com/fortunto2/solo-factory/tree/main/skills/research
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install fortunto2-solo-factory@llmmart
git clone https://github.com/fortunto2/solo-factory.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole fortunto2/solo-factory collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
/research
Deep research before PRD generation. Produces a structured research.md with competitive analysis, user pain points, SEO/ASO keywords, naming/domain options, and market sizing.
Live Context
- Branch: !
git branch --show-current 2>/dev/null - Recent changes: !
git log --oneline -5 2>/dev/null
MCP Tools (use if available)
If MCP tools are available, prefer them over CLI:
kb_search(query, n_results)— search knowledge base for related docsweb_search(query, engines, include_raw_content)— web search with engine routingweb_extract(url, size, page)— one page as clean markdown, boilerplate removedsession_search(query, project)— find how similar research was done beforeproject_info(name)— check project details and stackscodegraph_explain(project)— architecture overview of an existing project (stack, patterns, deps)codegraph_query(query)— raw Cypher queries against code graph (find shared packages, dependencies)project_code_search(query, project)— semantic search over project source code
MCP web_search supports engine override: engines="reddit", engines="youtube", etc.
For reading one page in full, prefer web_extract over include_raw_content: it runs
trafilatura, so navigation and footers are gone and tables survive. size="s|m|l" caps
at 5k/10k/25k chars, size="f" paginates the whole document and page=2 walks it.
If MCP tools are not available, use WebSearch/WebFetch as primary. If MCP web_search tool is available, use it for better results.
Reddit Search Best Practices
- Max 3 keywords in reddit queries — more keywords = fewer results
- Good:
"product hunt outreach launch"— Bad:"product hunt scraper maker profiles linkedin outreach launch strategy" include_raw_content=truerarely works for Reddit — use fallback chain below
Reddit Content Access — Fallback Chain
When a search finds a relevant Reddit post, reading its full content requires a fallback chain:
1. MCP Playwright (old.reddit.com) ← BEST: bypasses CAPTCHA, full post + comments
2. PullPush API (api.pullpush.io) ← search by query/subreddit/author/score/date
3. MCP web_extract / web_search raw ← sometimes works, often truncated
4. WebFetch / WebSearch snippets ← last resort, partial data only
Method 1: MCP Playwright (recommended for full post content)
- Use
browser_navigate("https://old.reddit.com/r/...")— old.reddit.com loads without CAPTCHA www.reddit.comshows CAPTCHA ("Prove your humanity"), always useold.reddit.com- Snapshot contains full post text + comments in structured YAML
- Example:
old.reddit.com/r/indiehackers/comments/abc123/post_title/
Method 2: PullPush API (for search/discovery)
- Endpoint:
https://api.pullpush.io/reddit/submission/search - Params:
q,subreddit,author,score(e.g.>10,<100),since/until(unix timestamps),size(max 100) - Rate limits: soft 15 req/min, hard 30 req/min, 1000 req/hr. Sleep 4 sec between requests.
- Returns JSON with full
selftext, author, score, created_utc - Comment search:
/reddit/comment/search(same params) - Can use via curl:
curl -s "https://api.pullpush.io/reddit/submission/search?q=product+hunt+launch&subreddit=indiehackers&size=10"
Method 3: Reddit .json endpoint (often blocked)
- Append
.jsonto any Reddit URL:reddit.com/r/sub/comments/id.json - Returns raw JSON with full post + comments
- Frequently blocked (403/429) — use as opportunistic fallback only
Method 4: PRAW (Reddit Official API, for live search/user profiles)
- praw-dev/praw — Python Reddit API Wrapper
- OAuth2 auth, built-in rate limiting, sync/async support
- Best for: live subreddit search, user profiles, comment trees
pip install praw/uv add praw
Search Strategy: Hybrid (MCP + WebSearch)
Use multiple search backends together. Each has strengths:
| Step | Best backend | Why |
|---|---|---|
| Competitors | WebSearch + site:producthunt.com + site:g2.com |
Broad discovery + Product Hunt + B2B reviews |
| Reddit / Pain points | MCP web_search with engines: reddit (max 3 keywords!) + MCP Playwright for full posts |
PullPush API, selftext in content |
| YouTube reviews | MCP web_search with engines: youtube |
Video reviews (views = demand) |
| Market size | WebSearch | Synthesizes numbers from 10 sources |
| SEO / ASO | WebSearch | Broader coverage, trend data |
| Page scraping | MCP web_extract (fallback: WebFetch) |
Clean markdown, size=f + page=n for long docs |
| Hacker News | WebSearch site:news.ycombinator.com |
HN discussions and opinions |
| Funding / Companies | WebSearch site:crunchbase.com |
Competitor funding, team size |
| Verified revenue | WebFetch trustmrr.com/startup/<slug> |
Stripe-verified MRR, growth, tech stack, traffic |
Search Availability
Use WebSearch/WebFetch as primary. If MCP web_search tool is available, use it for better results (supports engine routing and raw content extraction).
Steps
Parse the idea from
$ARGUMENTS. If empty, ask the user what idea they want to research.Detect product type — infer from the idea description:
- Keywords like "app", "mobile", "iPhone", "Android" → mobile (ios/android)
- Keywords like "website", "SaaS", "dashboard", "web app" → web
- Keywords like "CLI", "terminal", "command line" → cli
- Keywords like "API", "backend", "service" → api
- Keywords like "extension", "plugin", "browser" → web (extension)
- Default if unclear → web
- Only ask via AskUserQuestion if truly ambiguous (e.g., "build a todo app" could be web or mobile)
- This determines which research sections apply (ASO for mobile, SEO for web, etc.)
Search knowledge base and past work:
- If MCP
kb_searchavailable:kb_search(query="<idea keywords>", n_results=5) - If MCP
session_searchavailable:session_search(query="<idea keywords>")— check if this idea was researched before - Otherwise: Grep for keywords in
.mdfiles - Check if
research.mdorprd.mdalready exist for this idea.
- If MCP
Check existing portfolio (if MCP codegraph tools available):
codegraph_explain(project="<similar project>")— architecture overview of related projects in the portfolioproject_code_search(query="<relevant pattern>", project="<sibling>")— find reusable code, patterns, infrastructurecodegraph_query("MATCH (p:Project)-[:DEPENDS_ON]->(pkg:Package) WHERE pkg.name CONTAINS '<relevant tech>' RETURN p.name, pkg.name")— find projects using similar tech- This helps assess: feasibility, reusable code, stack decisions, and time estimates
- If no MCP tools available, skip this step.
Competitive analysis — use WebSearch (primary) + MCP web_search (if available):
"<idea> competitors alternatives 2026"— broad discovery"<idea> app review pricing"— pricing data- WebFetch or MCP
include_raw_content=true: scrape competitor URLs for detailed pricing - MCP
engines: redditor WebSearch:"<idea> vs"— user opinions "site:producthunt.com <idea>"— Product Hunt launches"site:g2.com <idea>"or"site:capterra.com <idea>"— B2B reviews"site:crunchbase.com <competitor>"— funding, team size"site:trustmrr.com <idea>"or WebFetchtrustmrr.com/startup/<slug>— Stripe-verified MRR, growth %, tech stack, traffic (24h/7d/30d)- For each competitor extract: name, URL, pricing, key features, weaknesses, verified MRR (if on TrustMRR)
User pain points — use MCP web_search / WebSearch + YouTube:
- MCP
engines: redditor WebSearch:"<problem>"— Reddit discussions (max 3 keywords!) - If Reddit post found but content not available → open via MCP Playwright:
browser_navigate("https://old.reddit.com/r/...")— old.reddit.com bypasses CAPTCHA - MCP
engines: youtubeor WebSearch:"<problem> review"— video reviews "site:news.ycombinator.com <problem>"— Hacker News opinions- WebSearch:
"<problem> frustrating OR annoying"— broader sweep - Synthesis: top 5 pain points with quotes and source URLs
- MCP
SEO / ASO analysis (depends on product type from step 2):
For web apps:
"<competitor> SEO keywords ranking"— competitor keywords"<problem domain> search volume trends 2026"— demand signals- WebFetch or MCP
include_raw_content: scrape competitor pages for meta tags - Result: keyword table (keyword, intent, competition, relevance)
For mobile apps:
"<category> App Store top apps keywords 2026"— category landscape"site:reddit.com <competitor app> review"— user complaints- Result: ASO keywords, competitor ratings, common complaints
Naming, domains, and company registration:
- Generate 7-10 name candidates (mix of descriptive + invented/brandable)
- Domain availability: triple verification (whois → dig → RDAP)
- Trademark + company name conflict checks
See
references/domain-check.md(bundled with this skill) for TLD priority tiers, bash scripts, gotchas, and trademark check methods.User Personas (2-3 quick personas from research data):
Based on pain points (step 6) and competitive gaps (step 5), generate 2-3 lightweight personas:
Field Example Name "Alex, freelance designer" Segment Early-career freelancers, $3-8K/mo JTBD "When I finish a project, I want to send a professional invoice in under 60 seconds so I can get paid faster" Pain Top pain point from step 6 with source quote Current solution What they use today (competitor or workaround) Switching trigger What would make them try something new Keep personas grounded in evidence from steps 5-6. No fictional demographics — only what the data supports. These feed directly into
/validatefor ICP and PRD generation.Interview Script (optional, if user plans customer interviews):
Generate a 7-question JTBD interview script based on the personas above:
- Context: "Tell me about the last time you [core action]..." (open-ended, past tense)
- Trigger: "What prompted you to look for a solution?" (switching moment)
- Current workflow: "Walk me through how you do this today, step by step"
- Pain: "What's the most frustrating part?" (don't lead — let them name it)
- Alternatives tried: "What else have you tried? What happened?"
- Outcome: "What would 'solved' look like for you?"
- Willingness to pay: "If something did exactly that, what would it be worth to you?"
Rules: past tense only (what they DID, not what they WOULD do), no leading questions, no feature pitching. Reference: JTBD interview methodology (Bob Moesta).
Write to docs/interview-script.md if generated.
- Market sizing (TAM/SAM/SOM) — use WebSearch (primary):
- WebSearch:
"<market> market size 2025 2026 report"— synthesizes numbers - WebSearch:
"<market> growth rate CAGR billion"— growth projections - Extrapolation: TAM → SAM → SOM (Year 1)
Write
research.md— write todocs/research.mdin the current project directory. Create the directory if needed.Output summary:
- Key findings (3-5 bullets)
- Recommendation: GO / NO-GO / PIVOT with brief reasoning
- Path to generated research.md
- Suggested next step:
/validate <idea>
research.md Format
See references/research-template.md (bundled with this skill) for the full output template (frontmatter, 6 sections, tables).
Notes
- Always use kebab-case for project directory names
- If research.md already exists, ask before overwriting
- Run search queries in parallel when independent
Common Issues
MCP web_search not available
Cause: MCP server not running or not configured. Fix: Use WebSearch/WebFetch as primary. For better results with engine routing (Reddit, GitHub, YouTube), set up SearXNG (private, self-hosted, free) and configure solograph MCP.
Domain check returns wrong results
Cause: .app/.dev whois shows TLD creation date for unregistered domains.
Fix: Use the triple verification method (whois -> dig -> RDAP). Check Name Server and Registrar fields, not creation date.
research.md already exists
Cause: Previous research run for this idea. Fix: Skill asks before overwriting. Choose to merge new findings or start fresh.
Proactive Search Practices
Reddit Deep Dive
- MCP web_search or WebSearch — use for discovery (max 3 keywords for Reddit), get post URLs
- MCP Playwright — open
old.reddit.comURLs to read full post + comments (bypasses CAPTCHA) - Extract quotes — copy key phrases with attribution (u/username, subreddit, date)
- Cross-post detection — same post in multiple subreddits = higher signal
Product Hunt Research
- producthunt.com/visit-streaks — streak leaderboard (scrapeable via Playwright)
- producthunt.com/@username — profile with social links, maker history, points
- PH API v2 is broken — redacts usernames/Twitter since Feb 2023, use scraping
- Apify actors — check for DEPRECATED status before relying on them (mass deprecation Sep 2025)
TrustMRR Revenue Validation
trustmrr.com/startup/<slug>— Stripe-verified MRR, growth %, subscriptions, traffic- WebFetch works — no auth needed, returns full page with JSON-LD structured data
- Data fields: MRR, all-time revenue, last 30 days, active subs, tech stack, traffic (24h/7d/30d), category, founder X handle
- Use for: competitor revenue validation, market sizing with real data, tech stack discovery
- Search:
"site:trustmrr.com <category or idea>"to find similar startups with verified revenue - Apify scrapers: TrustMRR Scraper for bulk extraction
GitHub Library Discovery
- MCP
engines: github— often returns empty, use WebSearch as primary - github.com/topics/ — browse topic pages via Playwright or WebFetch
- Check stars, last update, open issues — avoid abandoned repos
Blocked Content Fallback Chain
MCP Playwright (best) → PullPush API (Reddit) → WebFetch → WebSearch snippets → MCP web_search include_raw_content
If a page returns 403/CAPTCHA via WebFetch:
- Reddit: MCP Playwright →
old.reddit.com(always works, no CAPTCHA) - Reddit search: PullPush API
api.pullpush.io(structured JSON, full selftext) - Product Hunt / other sites: MCP Playwright
browser_navigate(no captcha on most sites) - General: WebSearch snippets + WebSearch synthesis
Files (solo-factory)
-
references
-
domain-check.md 2.7 KB
# /research — Domain & Naming Check Reference Referenced by SKILL.md step 7. ## TLD Priority Tiers Check in order, skip regionals except .us: | Tier | TLDs | When to check | |------|------|---------------| | **Must** | `.com` | Always — SEO, credibility | | **Core** | `.app`, `.dev`, `.io`, `.co` | All candidates — tech/startup standard | | **Budget** | `.win`, `.xyz`, `.cc`, `.work`, `.club`, `.org` | All candidates — cheap alternatives ($4-12/yr) | | **Premium** | `.ai` | Only if AI product — NOTE: $160/yr from March 2026 | | **US only** | `.us` | Add-on if US-focused ($6.50/yr) | | **Skip** | `.ru`, `.de`, `.uk`, `.fr`, `.jp`, etc. | Regional — skip unless targeting that market | | **Skip** | `.net`, `.info`, `.biz`, `.mobi`, `.site`, `.online`, `.store`, `.shop` | Low trust / overpriced for the value | ## Step 1: whois + dig combo (most reliable) ```bash # Check all TLD tiers at once for name in candidate1 candidate2 candidate3; do for ext in com app dev io co win xyz cc work club org us; do domain="${name}.${ext}" # whois check match=$(whois "$domain" 2>/dev/null | grep -i "no match\|not found\|domain not found\|no data found" | head -1) if [ -n "$match" ]; then echo "AVAILABLE: $domain" else # DNS fallback for ambiguous whois ns=$(dig +short "$domain" 2>/dev/null) if [ -z "$ns" ]; then echo "LIKELY FREE: $domain (no DNS)" else echo "TAKEN: $domain" fi fi done echo "---" done ``` ## Step 2: RDAP cross-check (for uncertain results) ```bash # IMPORTANT: use -L to follow redirects (RDAP returns 302) # 404 = available, 200 = registered for name in candidate1 candidate2; do for ext in com app io; do code=$(curl -sL -o /dev/null -w "%{http_code}" "https://rdap.org/domain/${name}.${ext}") if [ "$code" = "404" ]; then r="AVAIL"; else r="taken"; fi printf " %-25s %s\n" "${name}.${ext}" "$r" done done ``` ## Gotchas - `.app`/`.dev` (Google Registry): whois shows TLD creation date 2015 even for unregistered domains — do NOT use creation date as indicator. Check Name Server and Registrar fields instead. - `.ai`: $160/yr from March 2026. Only worth it for AI-branded products. - `.win`: extremely cheap ($4-5/yr) — good for MVPs and redirects. - RDAP rate limits after ~20 requests — prefer whois+dig combo for bulk checks. **Summary:** whois checks availability → dig confirms no DNS → RDAP cross-checks uncertain cases. ## Trademark & Company Checks - `"<name> trademark"` — basic conflict check - `"site:trademarkia.com <name>"` — US trademarks - `"site:opencorporates.com <name>"` — 240M+ companies worldwide - `"<name> LLC OR Inc OR Corp"` — existing businesses -
research-template.md 1.8 KB
# /research — research.md Output Template Referenced by SKILL.md step 9. ## Format ```markdown --- type: research status: draft title: "Deep Research — <Idea Name>" created: <today> tags: [<project>, research, competitive-analysis] product_type: web|ios|android|desktop|cli|api --- # Deep Research: <Idea Name> ## Executive Summary <!-- 3-4 sentences: problem, market, competitors, recommendation --> ## 1. Competitive Landscape | Competitor | URL | Pricing | Key Features | Weaknesses | |-----------|-----|---------|-------------|------------| | ... | ... | ... | ... | ... | ### Gap Analysis <!-- What nobody does. Where our advantage is. --> ## 2. User Pain Points | Pain Point | Source | URL | Sentiment | |-----------|--------|-----|-----------| | ... | Reddit r/... | ... | negative | ### Top Insights <!-- 3-5 key insights --> ## 3. SEO / ASO Analysis | Keyword | Intent | Competition | Relevance | |---------|--------|------------|-----------| | ... | commercial | medium | primary | ## 4. Naming & Domains | Name | .com | .app | .dev | .io | .co | .win | .xyz | .cc | .us | .ai | Trademark | Notes | |------|------|------|------|-----|-----|------|------|-----|-----|-----|-----------|-------| | ... | avail | — | — | avail | — | $4 | — | — | — | $160 | clean | ... | ### Recommended Name: **<name>** ## 5. User Personas | Persona | Segment | JTBD | Top Pain | Current Solution | Switching Trigger | |---------|---------|------|----------|-----------------|-------------------| | ... | ... | "When I..., I want to..., so I can..." | ... | ... | ... | ## 6. Market Size - **TAM:** $X — <source> - **SAM:** $X — <reasoning> - **SOM (Year 1):** $X — <assumptions> ## 7. Recommendation **Verdict:** GO / NO-GO / PIVOT ## Sources 1. [Title](url) — brief description ```
-
-
SKILL.md 15.6 KB
--- name: solo-research description: Use when "research this idea", "find competitors", "check the market", "domain availability", "market size", "analyze opportunity", or need evidence before validation. Do NOT use for idea scoring (/validate) or SEO auditing (/seo-audit). license: MIT metadata: author: fortunto2 version: "1.8.0" openclaw: emoji: "🔍" allowed-tools: Read, Grep, Bash, Glob, Write, Edit, WebSearch, WebFetch, AskUserQuestion, mcp__solograph__kb_search, mcp__searxng__web_search, mcp__searxng__web_extract, mcp__solograph__session_search, mcp__solograph__project_info, mcp__solograph__codegraph_query, mcp__solograph__codegraph_explain, mcp__solograph__project_code_search, mcp__playwright__browser_navigate, mcp__playwright__browser_snapshot, mcp__playwright__browser_close argument-hint: "[idea name or description]" --- # /research Deep research before PRD generation. Produces a structured `research.md` with competitive analysis, user pain points, SEO/ASO keywords, naming/domain options, and market sizing. ## Live Context - Branch: !`git branch --show-current 2>/dev/null` - Recent changes: !`git log --oneline -5 2>/dev/null` ## MCP Tools (use if available) If MCP tools are available, prefer them over CLI: - `kb_search(query, n_results)` — search knowledge base for related docs - `web_search(query, engines, include_raw_content)` — web search with engine routing - `web_extract(url, size, page)` — one page as clean markdown, boilerplate removed - `session_search(query, project)` — find how similar research was done before - `project_info(name)` — check project details and stacks - `codegraph_explain(project)` — architecture overview of an existing project (stack, patterns, deps) - `codegraph_query(query)` — raw Cypher queries against code graph (find shared packages, dependencies) - `project_code_search(query, project)` — semantic search over project source code MCP `web_search` supports engine override: `engines="reddit"`, `engines="youtube"`, etc. For reading one page in full, prefer `web_extract` over `include_raw_content`: it runs trafilatura, so navigation and footers are gone and tables survive. `size="s|m|l"` caps at 5k/10k/25k chars, `size="f"` paginates the whole document and `page=2` walks it. If MCP tools are not available, use WebSearch/WebFetch as primary. If MCP web_search tool is available, use it for better results. ### Reddit Search Best Practices - **Max 3 keywords** in reddit queries — more keywords = fewer results - Good: `"product hunt outreach launch"` — Bad: `"product hunt scraper maker profiles linkedin outreach launch strategy"` - `include_raw_content=true` rarely works for Reddit — use fallback chain below ### Reddit Content Access — Fallback Chain When a search finds a relevant Reddit post, reading its full content requires a fallback chain: ``` 1. MCP Playwright (old.reddit.com) ← BEST: bypasses CAPTCHA, full post + comments 2. PullPush API (api.pullpush.io) ← search by query/subreddit/author/score/date 3. MCP web_extract / web_search raw ← sometimes works, often truncated 4. WebFetch / WebSearch snippets ← last resort, partial data only ``` **Method 1: MCP Playwright** (recommended for full post content) - Use `browser_navigate("https://old.reddit.com/r/...")` — old.reddit.com loads without CAPTCHA - `www.reddit.com` shows CAPTCHA ("Prove your humanity"), always use `old.reddit.com` - Snapshot contains full post text + comments in structured YAML - Example: `old.reddit.com/r/indiehackers/comments/abc123/post_title/` **Method 2: PullPush API** (for search/discovery) - Endpoint: `https://api.pullpush.io/reddit/submission/search` - Params: `q`, `subreddit`, `author`, `score` (e.g. `>10,<100`), `since`/`until` (unix timestamps), `size` (max 100) - Rate limits: soft 15 req/min, hard 30 req/min, 1000 req/hr. Sleep 4 sec between requests. - Returns JSON with full `selftext`, author, score, created_utc - Comment search: `/reddit/comment/search` (same params) - Can use via curl: ```bash curl -s "https://api.pullpush.io/reddit/submission/search?q=product+hunt+launch&subreddit=indiehackers&size=10" ``` **Method 3: Reddit .json endpoint** (often blocked) - Append `.json` to any Reddit URL: `reddit.com/r/sub/comments/id.json` - Returns raw JSON with full post + comments - Frequently blocked (403/429) — use as opportunistic fallback only **Method 4: PRAW** (Reddit Official API, for live search/user profiles) - [praw-dev/praw](https://github.com/praw-dev/praw) — Python Reddit API Wrapper - OAuth2 auth, built-in rate limiting, sync/async support - Best for: live subreddit search, user profiles, comment trees - `pip install praw` / `uv add praw` ## Search Strategy: Hybrid (MCP + WebSearch) Use **multiple** search backends together. Each has strengths: | Step | Best backend | Why | |------|-------------|-----| | **Competitors** | WebSearch + `site:producthunt.com` + `site:g2.com` | Broad discovery + Product Hunt + B2B reviews | | **Reddit / Pain points** | MCP `web_search` with `engines: reddit` (max 3 keywords!) + MCP Playwright for full posts | PullPush API, selftext in content | | **YouTube reviews** | MCP `web_search` with `engines: youtube` | Video reviews (views = demand) | | **Market size** | WebSearch | Synthesizes numbers from 10 sources | | **SEO / ASO** | WebSearch | Broader coverage, trend data | | **Page scraping** | MCP `web_extract` (fallback: WebFetch) | Clean markdown, `size=f` + `page=n` for long docs | | **Hacker News** | WebSearch `site:news.ycombinator.com` | HN discussions and opinions | | **Funding / Companies** | WebSearch `site:crunchbase.com` | Competitor funding, team size | | **Verified revenue** | WebFetch `trustmrr.com/startup/<slug>` | Stripe-verified MRR, growth, tech stack, traffic | ### Search Availability Use WebSearch/WebFetch as primary. If MCP `web_search` tool is available, use it for better results (supports engine routing and raw content extraction). ## Steps 1. **Parse the idea** from `$ARGUMENTS`. If empty, ask the user what idea they want to research. 2. **Detect product type** — infer from the idea description: - Keywords like "app", "mobile", "iPhone", "Android" → mobile (ios/android) - Keywords like "website", "SaaS", "dashboard", "web app" → web - Keywords like "CLI", "terminal", "command line" → cli - Keywords like "API", "backend", "service" → api - Keywords like "extension", "plugin", "browser" → web (extension) - Default if unclear → web - Only ask via AskUserQuestion if truly ambiguous (e.g., "build a todo app" could be web or mobile) - This determines which research sections apply (ASO for mobile, SEO for web, etc.) 3. **Search knowledge base and past work:** - If MCP `kb_search` available: `kb_search(query="<idea keywords>", n_results=5)` - If MCP `session_search` available: `session_search(query="<idea keywords>")` — check if this idea was researched before - Otherwise: Grep for keywords in `.md` files - Check if `research.md` or `prd.md` already exist for this idea. 4. **Check existing portfolio** (if MCP codegraph tools available): - `codegraph_explain(project="<similar project>")` — architecture overview of related projects in the portfolio - `project_code_search(query="<relevant pattern>", project="<sibling>")` — find reusable code, patterns, infrastructure - `codegraph_query("MATCH (p:Project)-[:DEPENDS_ON]->(pkg:Package) WHERE pkg.name CONTAINS '<relevant tech>' RETURN p.name, pkg.name")` — find projects using similar tech - This helps assess: feasibility, reusable code, stack decisions, and time estimates - If no MCP tools available, skip this step. 5. **Competitive analysis** — use WebSearch (primary) + MCP web_search (if available): - `"<idea> competitors alternatives 2026"` — broad discovery - `"<idea> app review pricing"` — pricing data - WebFetch or MCP `include_raw_content=true`: scrape competitor URLs for detailed pricing - MCP `engines: reddit` or WebSearch: `"<idea> vs"` — user opinions - `"site:producthunt.com <idea>"` — Product Hunt launches - `"site:g2.com <idea>"` or `"site:capterra.com <idea>"` — B2B reviews - `"site:crunchbase.com <competitor>"` — funding, team size - `"site:trustmrr.com <idea>"` or WebFetch `trustmrr.com/startup/<slug>` — Stripe-verified MRR, growth %, tech stack, traffic (24h/7d/30d) - For each competitor extract: name, URL, pricing, key features, weaknesses, verified MRR (if on TrustMRR) 6. **User pain points** — use MCP web_search / WebSearch + YouTube: - MCP `engines: reddit` or WebSearch: `"<problem>"` — Reddit discussions (**max 3 keywords!**) - If Reddit post found but content not available → open via MCP Playwright: `browser_navigate("https://old.reddit.com/r/...")` — old.reddit.com bypasses CAPTCHA - MCP `engines: youtube` or WebSearch: `"<problem> review"` — video reviews - `"site:news.ycombinator.com <problem>"` — Hacker News opinions - WebSearch: `"<problem> frustrating OR annoying"` — broader sweep - Synthesis: top 5 pain points with quotes and source URLs 7. **SEO / ASO analysis** (depends on product type from step 2): **For web apps:** - `"<competitor> SEO keywords ranking"` — competitor keywords - `"<problem domain> search volume trends 2026"` — demand signals - WebFetch or MCP `include_raw_content`: scrape competitor pages for meta tags - Result: keyword table (keyword, intent, competition, relevance) **For mobile apps:** - `"<category> App Store top apps keywords 2026"` — category landscape - `"site:reddit.com <competitor app> review"` — user complaints - Result: ASO keywords, competitor ratings, common complaints 8. **Naming, domains, and company registration:** - Generate 7-10 name candidates (mix of descriptive + invented/brandable) - Domain availability: triple verification (whois → dig → RDAP) - Trademark + company name conflict checks See `references/domain-check.md` (bundled with this skill) for TLD priority tiers, bash scripts, gotchas, and trademark check methods. 9. **User Personas** (2-3 quick personas from research data): Based on pain points (step 6) and competitive gaps (step 5), generate 2-3 lightweight personas: | Field | Example | |-------|---------| | **Name** | "Alex, freelance designer" | | **Segment** | Early-career freelancers, $3-8K/mo | | **JTBD** | "When I finish a project, I want to send a professional invoice in under 60 seconds so I can get paid faster" | | **Pain** | Top pain point from step 6 with source quote | | **Current solution** | What they use today (competitor or workaround) | | **Switching trigger** | What would make them try something new | Keep personas grounded in evidence from steps 5-6. No fictional demographics — only what the data supports. These feed directly into `/validate` for ICP and PRD generation. 10. **Interview Script** (optional, if user plans customer interviews): Generate a 7-question JTBD interview script based on the personas above: 1. **Context:** "Tell me about the last time you [core action]..." (open-ended, past tense) 2. **Trigger:** "What prompted you to look for a solution?" (switching moment) 3. **Current workflow:** "Walk me through how you do this today, step by step" 4. **Pain:** "What's the most frustrating part?" (don't lead — let them name it) 5. **Alternatives tried:** "What else have you tried? What happened?" 6. **Outcome:** "What would 'solved' look like for you?" 7. **Willingness to pay:** "If something did exactly that, what would it be worth to you?" Rules: past tense only (what they DID, not what they WOULD do), no leading questions, no feature pitching. Reference: JTBD interview methodology (Bob Moesta). Write to `docs/interview-script.md` if generated. 11. **Market sizing** (TAM/SAM/SOM) — use WebSearch (primary): - WebSearch: `"<market> market size 2025 2026 report"` — synthesizes numbers - WebSearch: `"<market> growth rate CAGR billion"` — growth projections - Extrapolation: TAM → SAM → SOM (Year 1) 12. **Write `research.md`** — write to `docs/research.md` in the current project directory. Create the directory if needed. 13. **Output summary:** - Key findings (3-5 bullets) - Recommendation: GO / NO-GO / PIVOT with brief reasoning - Path to generated research.md - Suggested next step: `/validate <idea>` ## research.md Format See `references/research-template.md` (bundled with this skill) for the full output template (frontmatter, 6 sections, tables). ## Notes - Always use kebab-case for project directory names - If research.md already exists, ask before overwriting - Run search queries in parallel when independent ## Common Issues ### MCP web_search not available **Cause:** MCP server not running or not configured. **Fix:** Use WebSearch/WebFetch as primary. For better results with engine routing (Reddit, GitHub, YouTube), set up [SearXNG](https://github.com/fortunto2/searxng-docker-tavily-adapter) (private, self-hosted, free) and configure solograph MCP. ### Domain check returns wrong results **Cause:** `.app`/`.dev` whois shows TLD creation date for unregistered domains. **Fix:** Use the triple verification method (whois -> dig -> RDAP). Check Name Server and Registrar fields, not creation date. ### research.md already exists **Cause:** Previous research run for this idea. **Fix:** Skill asks before overwriting. Choose to merge new findings or start fresh. ## Proactive Search Practices ### Reddit Deep Dive 1. **MCP web_search or WebSearch** — use for discovery (max 3 keywords for Reddit), get post URLs 2. **MCP Playwright** — open `old.reddit.com` URLs to read full post + comments (bypasses CAPTCHA) 3. **Extract quotes** — copy key phrases with attribution (u/username, subreddit, date) 4. **Cross-post detection** — same post in multiple subreddits = higher signal ### Product Hunt Research 1. **producthunt.com/visit-streaks** — streak leaderboard (scrapeable via Playwright) 2. **producthunt.com/@username** — profile with social links, maker history, points 3. **PH API v2 is broken** — redacts usernames/Twitter since Feb 2023, use scraping 4. **Apify actors** — check for DEPRECATED status before relying on them (mass deprecation Sep 2025) ### TrustMRR Revenue Validation 1. **`trustmrr.com/startup/<slug>`** — Stripe-verified MRR, growth %, subscriptions, traffic 2. **WebFetch works** — no auth needed, returns full page with JSON-LD structured data 3. **Data fields:** MRR, all-time revenue, last 30 days, active subs, tech stack, traffic (24h/7d/30d), category, founder X handle 4. **Use for:** competitor revenue validation, market sizing with real data, tech stack discovery 5. **Search:** `"site:trustmrr.com <category or idea>"` to find similar startups with verified revenue 6. **Apify scrapers:** [TrustMRR Scraper](https://apify.com/actor_builder/trustmrr-scraper/api) for bulk extraction ### GitHub Library Discovery 1. **MCP `engines: github`** — often returns empty, use WebSearch as primary 2. **github.com/topics/<keyword>** — browse topic pages via Playwright or WebFetch 3. **Check stars, last update, open issues** — avoid abandoned repos ### Blocked Content Fallback Chain ``` MCP Playwright (best) → PullPush API (Reddit) → WebFetch → WebSearch snippets → MCP web_search include_raw_content ``` If a page returns 403/CAPTCHA via WebFetch: 1. **Reddit:** MCP Playwright → `old.reddit.com` (always works, no CAPTCHA) 2. **Reddit search:** PullPush API `api.pullpush.io` (structured JSON, full selftext) 3. **Product Hunt / other sites:** MCP Playwright `browser_navigate` (no captcha on most sites) 4. **General:** WebSearch snippets + WebSearch synthesis
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.