Skip to content
Back to skills

Radar Diff Changes

ASecurity

Diffs this run's competitor dossiers against the previous run to find what materially changed (SERP moves, price changes, new news, sentiment shifts, new or dropped competitors). Produces a ranked change set the briefing and dashboard use. Use after all competitor-scout subagents have written their dossiers and before radar-merge-briefing.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
ai-agentsgo

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add sabahudin-web/competitive-intelligence-radar --skill radar-diff-changes --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Radar Diff Changes?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Radar Diff Changes
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sabahudin-web-radar-diff-changes/badge)](https://www.skillsdirectory.com/skills/sabahudin-web-radar-diff-changes)

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

Download with Pro
SKILL.md
---
name: radar-diff-changes
description: Diffs this run's competitor dossiers against the previous run to find what materially changed (SERP moves, price changes, new news, sentiment shifts, new or dropped competitors). Produces a ranked change set the briefing and dashboard use. Use after all competitor-scout subagents have written their dossiers and before radar-merge-briefing.
---

# radar-diff-changes

Automation level: AUTONOMOUS.

Goal: compute an honest, freshness-aware change set between the current run and the last one.

## Steps

1. Read `radar.config.json` to find `last_run.dossier_dir` (the previous run) and the current run
   directory from the caller. If there is no previous run, this is the baseline: every competitor is
   marked `New` and there are no deltas to compute. Say so.

2. Load all dossier JSON files from both runs, matched by competitor domain (the stable key).

3. For each competitor and each field, compare ONLY when the field is within its recency window on
   BOTH runs (see [freshness.md](../../rules/freshness.md)). A comparison across a stale value is not
   a real change; skip it and note the field as "not comparable this run."

4. Classify each material change with a type the dashboard understands:
   - `RISING`: competitor improved SERP rank, gained funding, ramped hiring, sentiment up.
   - `FALLING`: competitor lost rank, negative news, sentiment down.
   - `PRICE`: pricing or packaging changed.
   - `NEWS`: a fresh in-window headline that did not exist last run.
   - `NEW`: a competitor appearing for the first time, or newly ranking for a tracked keyword.
   Each change carries the supporting `source_url` and `fetched_at` from the dossier. No source, no
   change entry.

5. Rank changes by materiality (rank jumps on core keywords and price moves rank highest), and
   produce a one-line change digest for the briefing headline plus the structured change array for
   the dashboard.

6. Return the change set to the caller. Do not write surfaces here; that is the merge and publish
   skills.

## Edge cases

- A competitor present last run but absent now: mark `dropped` in notes (do not invent a reason).
- A field blocked this run but present last run: report "could not verify this run" rather than a
  false `FALLING`.
- Timestamps missing on an old dossier: treat that field as not comparable.

Attribution

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

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.