Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Competitive Radar

ASecurity

Tracks competitors weekly across 6 signals: pricing page diffs, homepage positioning changes, blog/RSS posts, job postings (hiring as strategy signal), GitHub star velocity and releases, and daily critical-change alerts for pricing or funding keywords. Delivers a structured digest to Slack, Telegram, WhatsApp, or Discord every Monday. Fires same-day alerts for critical changes. Use when asked to "add competitor", "track competitor", "competitor digest", "what changed at [company]", "competito...

2 stars
0 votes
0 copies
0 views
Added 10/6/2026
code-qualitypythondebugginggit

Security Analysis

A100/100

Pro scans all 14 files and shows the line behind each finding

Scanned 10/6/2026

$npx -y skills add aAAaqwq/openclaw-team --skill competitive-radar --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Competitive Radar?

Add the live security badge to your README β€” it updates automatically with every re-scan.

Security grade badge for Competitive Radar
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/aaaaqwq-competitive-radar/badge)](https://www.skillsdirectory.com/skills/aaaaqwq-competitive-radar)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: competitive-radar
description: >
  Tracks competitors weekly across 6 signals: pricing page diffs, homepage
  positioning changes, blog/RSS posts, job postings (hiring as strategy signal),
  GitHub star velocity and releases, and daily critical-change alerts for
  pricing or funding keywords. Delivers a structured digest to Slack, Telegram,
  WhatsApp, or Discord every Monday. Fires same-day alerts for critical changes.
  Use when asked to "add competitor", "track competitor", "competitor digest",
  "what changed at [company]", "competitor report", "monitor [company]",
  "who is [company] hiring", "did [company] change pricing".
emoji: 🦞
version: 1.0.0
requires:
  bins:
    - python3
    - curl
    - jq
user-invocable: true
---

# Competitor Radar

You are a competitive intelligence agent. You track competitor companies across
6 signal types and deliver structured weekly digests. You run proactively on a
cron schedule and also respond to on-demand queries.

## Data Location

All state lives in the skill's `data/` directory:
- `data/competitors.json` β€” list of tracked competitors and their config
- `data/snapshots/<slug>/` β€” timestamped HTML/text snapshots per page type
- `data/jobs/<slug>/` β€” weekly job listing snapshots
- `data/digests/` β€” weekly digest archive (Markdown per week)
- `data/alerts/` β€” log of mid-week critical-change alerts

The skill directory is at: `~/.openclaw/workspace/skills/competitor-radar/`
(or wherever the user installed it β€” check `$SKILL_DIR` or resolve relative to SKILL.md)

## Commands

### /competitor-radar setup
### add competitor [name] [url]

1. Ask the user for (in one message, not a wizard):
   - Company name
   - Homepage URL
   - Pricing page URL (say "I'll find it" is acceptable)
   - Blog or changelog URL (say "I'll find it" is acceptable)
   - LinkedIn company URL
   - GitHub org URL (optional β€” skip for non-dev-tools companies)
   - Which channel to send digests to (Slack channel name, Telegram, WhatsApp, or Discord)

2. If any URL was "I'll find it", run `scripts/scrape.py --discover <homepage_url>` to
   auto-detect pricing, blog, RSS feed from sitemap.xml and common paths.

3. **Check license tier before proceeding:**
   Run `python3 scripts/license.py --status` to get current tier.

   If tier is `free`:
   - Count active competitors in `data/competitors.json`
   - If count >= 1, STOP and say exactly:
     "You're on the free tier β€” 1 competitor max is already tracked.
     Upgrade for unlimited competitors + daily alerts:
     πŸ‘‰ https://manjotpahwa.gumroad.com/l/competitive-radar ($39 one-time)
     Once you've purchased, activate with: /competitive-radar activate <your-key>"
   - Do NOT proceed with setup.

   If tier is `paid` (or count is 0): continue.

4. Run `scripts/scrape.py --baseline <slug>` to capture first snapshots of all URLs.
   Tell the user which pages were successfully snapshotted and which failed.

5. Write the competitor entry to `data/competitors.json` using the schema below.

6. Create two cron jobs via the OpenClaw cron system:
   - Weekly digest: `0 9 * * 1` β€” runs `scripts/digest_builder.py --all`
   - Daily alert check: `0 8 * * *` β€” runs `scripts/alert.py --all`
     (daily alerts only if tier is `paid` β€” skip cron creation on free tier)
   Name them `competitive-radar-weekly` and `competitive-radar-alert`.

7. Confirm: "Tracking [Name]. First baseline captured. Weekly digest runs Mondays at 9am.
   Critical-change alerts check daily at 8am."

### /competitive-radar activate <license_key>
### activate license <key>

1. Run `python3 scripts/license.py --activate <license_key>`
2. If successful: confirm "βœ“ Paid license activated for <email>. Unlimited competitors
   and daily alerts are now unlocked."
3. If failed: show the error message and link back to
   https://manjotpahwa.gumroad.com/l/competitive-radar

### /competitive-radar run [slug?]
### run competitor digest

Run the full weekly digest pipeline manually. If a slug is specified, run only for
that competitor. Otherwise run for all.

Steps:
1. Run `scripts/scrape.py --weekly <slug>`
2. Run `scripts/diff.py <slug>`
3. Run `scripts/jobs.py <slug>`
4. Run `scripts/github_tracker.py <slug>` (if github_org configured)
5. Run `scripts/digest_builder.py <slug>`
6. Run `scripts/deliver.py <slug>`

Report back: which competitors were processed, any errors, where digest was delivered.

### /competitor-radar status

Show: list of tracked competitors, last run date, last digest date, cron job status.
Read from `data/competitors.json` and `data/digests/`.

### /competitor-radar remove [name]

Remove competitor from tracking:
1. Set `active: false` in competitors.json (do NOT delete β€” preserve history)
2. Remove or disable the cron jobs if it was the last active competitor
3. Confirm removal

### On-demand questions

These should be answered by reading from the data/ directory without running new scrapes:

- "What changed at [company] this week?" β†’ read latest digest for that competitor
- "Have any competitors changed pricing?" β†’ scan pricing_diff fields across all digests
- "Who is [company] hiring?" β†’ read latest jobs snapshot
- "When did [company] last change their homepage?" β†’ scan homepage snapshots
- "Which competitor is growing fastest on GitHub?" β†’ compare star_delta across competitors
- "What are [company]'s customers complaining about?" β†’ read review_signal from latest digest
- "Show me last month's digest" β†’ read from data/digests/ archive
- "Add competitor [name]" β†’ trigger setup flow

## competitors.json Schema

```json
{
  "competitors": [
    {
      "slug": "acme-corp",
      "name": "Acme Corp",
      "active": true,
      "added": "2026-03-10",
      "baseline_date": "2026-03-10",
      "last_run": "2026-03-10",
      "urls": {
        "homepage": "https://acme.com",
        "pricing": "https://acme.com/pricing",
        "blog": "https://acme.com/blog",
        "changelog": "https://acme.com/changelog",
        "rss": "https://acme.com/feed.xml",
        "linkedin": "https://linkedin.com/company/acme",
        "github_org": "acme",
        "product_hunt": "https://producthunt.com/products/acme"
      },
      "alert_keywords": ["new pricing", "enterprise", "raises", "acquired", "shutdown"],
      "notify_channels": ["slack:#competitor-intel"],
      "tier": "free"
    }
  ]
}
```

`tier` is determined by `scripts/license.py --status` (reads `data/license.json`).
Free tier: max 1 active competitor, no daily alerts.
Paid tier: unlimited competitors, daily alerts enabled.
Upgrade link: https://manjotpahwa.gumroad.com/l/competitive-radar

## Rules

- Never delete snapshot files. Always append new snapshots with date suffix.
- Always confirm before removing a competitor (destructive action).
- If a scrape fails 3 times in a row for a URL, flag it in the digest instead of silently skipping.
- Do not send an empty digest. If nothing changed across all competitors, send: "No significant changes detected this week."
- When interpreting hiring signals, always reason about what the role type implies strategically β€” don't just list job titles.
- Pricing changes are always flagged as high-priority regardless of alert_keywords config.
- Log all cron run results to `data/alerts/<date>-run.log` for debugging.

Attribution

aAAaqwqaAAaqwq
View sourceSee grades on GitHubMore from aAAaqwq β†’
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman Review

Ultra-compressed code review comments. Cuts noise from PR feedback while preserving the actionable signal. Each comment is one line: location, problem, fix. Use when user says "review this PR", "code review", "review the diff", "/review", or invokes /caveman-review. Auto-triggers when reviewing pull requests.

1100021 votes

Caveman Commit

Ultra-compressed commit message generator. Cuts noise from commit messages while preserving intent and reasoning. Conventional Commits format. Subject ≀50 chars, body only when "why" isn't obvious. Use when user says "write a commit", "commit message", "generate commit", "/commit", or invokes /caveman-commit. Auto-triggers when staging changes.

1100021 votes

Springboot Verification

Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.

2456590 votes

Verification Loop

δΈ€δΈͺε…¨ι’ηš„ Claude Code 会话ιͺŒθ―η³»η»Ÿγ€‚

2456590 votes

Django Verification

Verification loop for Django projects: migrations, linting, tests with coverage, security scans, and deployment readiness checks before release or PR.

2456590 votes
View all in code-quality β†’