Market research skill for pain-point extraction, trend detection, competitor positioning, and discovery across community sources (Reddit, HN, Bluesky, Mastodon, GitHub Issues, web). Built-in harvest fetchers, deterministic CLI compute, intent-auto SWOT/Porter's 5F/PESTEL frameworks. Use for market research, pain point analysis, trend detection, competitor research, user complaints, voice-of-customer, 시장조사, 사용자 페인, 트렌드, 경쟁구도.
75
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Classify user intent into pain / trend / competitor / discovery, fan-out to community sources via oma market harvest, score and cluster findings with deterministic CLI compute, auto-apply strategic frameworks, and emit a single LAW-compliant markdown brief.
oma search fetch standalone--intent pain|trend|competitor|discovery--window 7d|30d|90d|180d (default: 30d)--sources <list> to override defaults--vs <entity> for competitor COMPARISON mode--frameworks auto|none|swot,5f,pestel--sites <list> (grounding site: filters, e.g. Naver/tistory/brunch for ko locale), --query-strict (post-filters results to those whose title contains every whitespace-separated query token)--window is explicitly pinned. Disable with --no-widen; force it on even with a pinned window via --widen-on-thin; tune the thin-corpus cutoff with --widen-threshold <n>..agents/results/market/{topic-slug}-{YYYYMMDD}.mdWhat we learned: body opener (or COMPARISON title), engine footer## in body (framework/COMPARISON sections excepted)oma market harvest built-in per-source fetchers (all network I/O stays inside harvest)resources/intent-rules.md, resources/operator-packs/, resources/output-laws.mdyt-dlp is installedoma market detect-trap "<topic>" to preflight the query.--intent flag.oma market harvest (parallel, per-source-limit 12, cache TTL 15m).--vs <entity> flag is present, switch to COMPARISON template.sources_failed; harvest exits 2 only when all sources fail.| Action | SSL primitive | Evidence |
|---|---|---|
| Run detect-trap preflight | VALIDATE | Topic arg, trap pattern rules |
| Classify intent | SELECT | Intent rules, user flags |
| Select operator pack | SELECT | resources/operator-packs/ |
| Fan-out harvest | CALL_TOOL | oma market harvest built-in per-source fetchers |
| Score candidates | INFER | Engagement weights, freshness, intent blends |
| Fuse and deduplicate | INFER | URL canonicalize, RRF k=60, author cap |
| Cluster by entity overlap | INFER | Overlap coefficient >= 0.4, MMR lambda=0.75 |
| Select frameworks | SELECT | Intent-to-framework toggle table |
| Render and self-check | WRITE | Output LAWs, framework templates |
| Write brief | WRITE | .agents/results/market/ |
| Report preview | NOTIFY | First 50 lines of brief |
oma market detect-trap (preflight gate)oma market discover-competitors (auto-discover peer entities for a topic; feeds --vs in competitor mode)oma market harvest (fan-out via built-in per-source fetchers)oma market score (engagement weights, log1p, intent blends)oma market fuse (URL canonical, RRF, diversity guard)oma market cluster (entity overlap, MMR)oma market render (md/json, LAW self-check, file write)TOPIC="VS Code pain points"
oma market detect-trap "$TOPIC" \
&& oma market harvest "vscode (broken OR bug OR migrate OR quit OR slow)" \
--sources reddit,hn,bluesky,mastodon,github,grounding --window 30d \
--operator-pack pain \
| oma market score --intent pain \
| oma market fuse \
| oma market cluster \
| oma market render --format md --intent pain --frameworks auto| Scope | Resource target |
|---|---|
NETWORK | Community sources via harvest's built-in fetchers (reddit, hn, bluesky, mastodon, github, grounding; youtube via yt-dlp) |
LOCAL_FS | Brief output at .agents/results/market/; cache at ~/.cache/oma/market-research/ |
PROCESS | oma market subcommands |
MEMORY | Intent classification, operator pack selection, cluster summaries |
.agents/results/market/{topic-slug}-{YYYYMMDD}.md.~/.cache/oma/market-research/{sha256-16hex}/result.json (TTL 15m).--force bypasses the trap gate unconditionally; use it only after the user explicitly reconfirms a refused topic.oma market harvest's per-source fetchers; no direct platform HTTP from other stages or the agent.[harvest] <source> skipped: stderr notice when the env key is absent; never a hard error. X/TikTok/Instagram/Perplexity fetchers are deferred stubs pending integration and land in sources_failed even when keyed.--no-self-check for debug only.| Intent | Operator pack | Auto frameworks | Notes |
|---|---|---|---|
pain | resources/operator-packs/pain.md | SWOT | Weights: engagement 0.40, freshness 0.30, quality 0.30 |
trend | none (optional: resources/operator-packs/positive.md for pain/positive contrast) | SWOT | Weights: freshness 0.50, engagement 0.30, quality 0.20 |
competitor | resources/operator-packs/competitor.md | SWOT + Porter's 5F | Weights: relevance 0.35, engagement 0.35, quality 0.30; --vs enables COMPARISON template; discover-competitors can suggest the --vs entity |
discovery | resources/operator-packs/discovery.md | SWOT + PESTEL | Weights: relevance 0.45, engagement 0.30, quality 0.25 |
Porter's 5F and PESTEL: the CLI renders complete labeled framework skeletons (all 5 forces / all 6 dimensions); the host LLM fills them using the analyst prompts in resources/frameworks/porters-5f.md and pestel.md (execution-protocol Step 6).
oma market detect-trap exits 0 or halts./oma-market "Next.js pain points" --intent pain --window 30d
/oma-market "AI coding tools trend" --intent trend
/oma-market "Cursor vs Windsurf" --intent competitor --vs Windsurf
/oma-market "developer productivity market" --intent discoveryThe rendered brief is a static file at .agents/results/market/{slug}-{YYYYMMDD}.md. Brainstorm or PM workflows consume it by reading that path directly — there is no intake flag to pass.
resources/intent-rules.mdresources/operator-packs/ (pain.md, positive.md, competitor.md, discovery.md)resources/frameworks/ (swot.md, porters-5f.md, pestel.md — analyst prompts the host LLM fills into the rendered slots)resources/execution-protocol.mdresources/output-laws.mdresources/examples.mdresources/checklist.mdresources/error-playbook.md../_shared/core/context-loading.md../_shared/core/lessons-learned.md3021301
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.