oma-market — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited oma-market (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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 | 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 (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: the CLI renders empty framework slots; 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.#### Standalone
/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#### Shared (from other skills or workflows) 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, 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.md~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.