Help us improve
Share bugs, ideas, or general feedback.
From oma
Extracts pain points, trends, competitor positioning, and discovery signals from community sources (Reddit, HN, Bluesky, Mastodon, GitHub Issues, web). Applies SWOT/Porter's 5F/PESTEL frameworks. Use for market research, user complaints, voice-of-customer, and trend detection.
npx claudepluginhub first-fluke/oh-my-agent --plugin omaHow this skill is triggered — by the user, by Claude, or both
Slash command
/oma:oma-marketThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Classify user intent into pain / trend / competitor / discovery, fan-out to community sources via `oma search fetch`, score and cluster findings with deterministic CLI compute, auto-apply strategic frameworks, and emit a single LAW-compliant markdown brief.
Searches Reddit, HN, GitHub Issues, G2, and Google Trends for real market pain signals, then synthesizes a positioning framework with ICP definition, ranked pain themes, and messaging angles.
Scans market trends, competitor activity, and emerging patterns for topics like AI coding assistants or SvelteKit using Product Hunt, GitHub Trending, HackerNews, and social platforms.
Extracts verbatim customer complaints about competitors from Reddit, LinkedIn, YouTube, Twitter, and review sites. Returns pain clusters with quotes and white-space opportunities for product copy, custdev, or strategy.
Share bugs, ideas, or general feedback.
Classify user intent into pain / trend / competitor / discovery, fan-out to community sources via oma search fetch, 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.agents/results/market/{topic-slug}-{YYYYMMDD}.mdWhat we learned: body opener (or COMPARISON title), engine footer## in body (framework/COMPARISON sections excepted)oma-search for all fetches (oma search fetch --only api); never fetches directlytrust-registry-cache (read-only); Trust Registry labels inherited from oma-searchresources/intent-rules.md, resources/operator-packs/, resources/output-laws.mdoma market detect-trap "<topic>" to preflight the query.--intent flag.oma search fetch URLs with operator pack query expansion.oma market harvest (parallel, per-source-limit 12, cache TTL 15m).--vs <entity> flag is present, switch to COMPARISON template.--window reduction or --no-cache.| 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 -> oma search fetch |
| 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 harvest (delegates to oma search fetch --only api)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-issues --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 oma search fetch (reddit, hn, bluesky, mastodon, github-issues, grounding) |
LOCAL_FS | Brief output at .agents/results/market/; cache at ~/.cache/oma/market/ |
PROCESS | oma market subcommands; oma search fetch |
MEMORY | Intent classification, operator pack selection, cluster summaries |
.agents/results/market/{topic-slug}-{YYYYMMDD}.md.~/.cache/oma/market/{sha1-hash}/result.json (TTL 15m).trust-registry-cache (no write).--force bypasses only in test mode.harvest calls oma search fetch --only api; no direct platform HTTP.oma-search.[INFO] stderr if env key absent; never error.--no-self-check for debug only.trust-registry-cache is read-only; write authority stays with oma-search.| Intent | Operator pack | Auto frameworks | Notes |
|---|---|---|---|
pain | resources/operator-packs/pain.md | SWOT | Weights: engagement 0.40, freshness 0.30, quality 0.30 |
trend | resources/operator-packs/positive.md | SWOT | Weights: freshness 0.50, engagement 0.30, quality 0.20 |
competitor | resources/operator-packs/competitor.md | SWOT + Porter's 5F (v1.1 stub) | Weights: relevance 0.35, engagement 0.35, quality 0.30; --vs enables COMPARISON template |
discovery | resources/operator-packs/discovery.md | SWOT + PESTEL (v1.1 stub) | Weights: relevance 0.45, engagement 0.30, quality 0.25 |
Porter's 5F and PESTEL are v1.1 stub templates only; auto-enabled by intent flag but render as placeholder sections.
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 discovery
Pass the rendered brief path (.agents/results/market/{slug}-{YYYYMMDD}.md) as a --use-market-research arg to Brainstorm or PM workflows. The brief is a static file; the calling skill reads it directly.
resources/intent-rules.mdresources/operator-packs/ (pain.md, positive.md, competitor.md, discovery.md)resources/frameworks/ (swot.md v1; porters-5f.md, pestel.md v1.1 stubs)resources/execution-protocol.mdresources/output-laws.mdresources/examples.mdresources/checklist.mdresources/error-playbook.md../_shared/core/context-loading.md../_shared/core/lessons-learned.md