From ops
Competitor-intel dashboard and management UI. Tracks brand signals, page-diff alerts, pricing changes, App Store moves, and weekly synthesis reports. Powered by the competitor-intel cron pipeline.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ops:ops-competitors [brand-name|refresh [brand]|add-url <brand> <competitor> <kind> <url>|alerts|help][brand-name|refresh [brand]|add-url <brand> <competitor> <kind> <url>|alerts|help]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before rendering, load competitor context:
Before rendering, load competitor context:
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname $(which ops-competitors 2>/dev/null) 2>/dev/null)/..}"
OPS_DATA_DIR="${OPS_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}"
source "$PLUGIN_ROOT/scripts/lib/competitor/context.sh" 2>/dev/null || true
CTX=$(competitor_context 2>/dev/null || echo '{"configured":false,"reason":"lib_not_found"}')
Parse $ARGUMENTS and dispatch to the matching mode below.
Show all tracked brands with last_run, alert counts, and recent activity. Use competitor_briefing_line for each brand row.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
OPS ► COMPETITORS — [date]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TRACKED BRANDS ([n] total)
[brand] last run [date] [n] alerts · [n] med · [n] low
...
PENDING QUEUES
immediate: [n] daily: [n]
RECENT HIGH ALERTS (last 7d)
[timestamp] [brand] [competitor] [snippet…]
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
If configured == false: print setup hint and stop.
# Load context
source "$PLUGIN_ROOT/scripts/lib/competitor/context.sh"
competitor_context --window-days 7
competitor_briefing_line
Mobile mode (Rule 7): one line per brand, no banner, no box-drawing.
<brand-name> — Drill-downFull event timeline (last 30d), top competitors, latest report, per-competitor signal breakdown.
competitor_context --brand "<brand>" --window-days 30.competitor)SLUG=$(echo "<brand>" | tr '[:upper:] /' '[:lower:]--' | tr -cd 'a-z0-9-_.')
REPORT="$OPS_DATA_DIR/reports/competitor-intel/latest-${SLUG}.md"
[[ -f "$REPORT" ]] && head -80 "$REPORT"
Output format:
BRAND: [name] category: [cat] last run: [date]
competitors: [a, b, c, ...]
SIGNAL BREAKDOWN
[competitor] high: [n] med: [n] low: [n]
LATEST REPORT (excerpt)
[first 80 lines of report]
EVENT TIMELINE (30d — [n] total)
[timestamp] HIGH [competitor] [source] [snippet…]
...
refresh [brand]Manually triggers the weekly intel cron immediately.
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-...}"
CRON_SCRIPT="$PLUGIN_ROOT/scripts/ops-cron-competitor-intel.sh"
# If a specific brand is given, pass it via env override
if [[ -n "$BRAND_ARG" ]]; then
BRAND_NAME="$BRAND_ARG" bash "$CRON_SCRIPT"
else
bash "$CRON_SCRIPT"
fi
Stream output. Inform the user when done and show updated competitor_briefing_line.
add-url <brand> <competitor> <kind> <url>Add a page-diff monitored URL to preferences.json. Valid <kind> values: pricing, features, changelog, careers.
Add URL for [brand] → [competitor] ([kind]):
[url]
[Add] / [Cancel]PREFS="$OPS_DATA_DIR/preferences.json"
jq --arg brand "$BRAND" --arg comp "$COMP" --arg kind "$KIND" --arg url "$URL" '
.competitor_intel.urls[$brand][$comp][$kind] = $url
' "$PREFS" > /tmp/prefs-tmp.json && mv /tmp/prefs-tmp.json "$PREFS"
alertsTail the last 20 lines of the alerts log:
ALERTS="$OPS_DATA_DIR/reports/competitor-intel/alerts.log"
if [[ -f "$ALERTS" ]]; then
tail -20 "$ALERTS"
else
echo "No alerts log found at $ALERTS"
fi
help / unknown argsPrint available subcommands:
ops-competitors — dashboard (all brands)
ops-competitors <brand> — drill-down: events, report, breakdown
ops-competitors refresh [brand] — run intel cron now (optional brand filter)
ops-competitors add-url <b> <c> <k> <url> — add page-diff URL to preferences.json
ops-competitors alerts — tail alerts.log (last 20 lines)
ops-competitors help — this message
configured == false → print "Competitor-intel not configured. Run /ops:setup competitor-intel to get started." and stop.CRON_SCRIPT not found → print path and stop.PREFS not writable for add-url → surface error, do not silently fail.npx claudepluginhub lifecycle-innovations-limited/claude-ops --plugin opsMonitors competitor products for changes: changelogs, API docs, pricing, and product updates. Snapshots pages, diffs against last run, produces structured intel reports. Can discover new competitors and run SWOT + positioning analysis.
Configures tiered competitor alerts for content, pricing, ads, social, ranking, SERP, and positioning changes with per-competitor thresholds and digest batching to reduce alert fatigue.
Monitors competitor pricing pages, feature tables, changelogs, and product changes using Firecrawl. Supports recurring competitive intelligence with pricing tier extraction and structured alerts.