What it does
This skill does competitor monitoring the way a diligent product marketer would if they had the time: it reads one competitor's public surface each week, pricing, product, changelog, blog, careers, and integrations, compares what it finds with the snapshot it saved last run, and reports only what changed. Each change is labeled Added, Removed, or Changed with the before and after text, classified (Pricing, Packaging, Product, Positioning, People, Customers, Content), and rated High, Medium, or Low for deal impact against the two or three questions you told it matter. It replaces the chore nobody owns: the quarterly scramble when a rep loses a deal to a pricing change that had been live on the competitor's site for two months.
The difference between a useful version and a useless one is the diff. A bad competitor report is a fresh profile every week, so the reader has to remember last week to spot what moved, and quickly stops reading. A good one carries state: it emits a terse snapshot at the end of every run, you paste it back in next time, and the output is only the delta. The second discipline is honesty about what it read. A page that timed out is marked Unread, not silently treated as unchanged, and a quiet week is reported as "No material change" rather than padded with blog titles. Anything about intent or roadmap is confined to a one-line Inferred watch item, because a monitor that speculates trains reps to repeat guesses as facts.
It beats the manual version on the two things humans are worst at: consistency and thresholds. The same pages get read every week whether or not anyone is busy, and every change is scored against the same deal questions, so a seat-minimum drop is High and a new blog post is Low no matter who is looking. Because the output names an action per change (update the battlecard, brief the team, none), the digest ends in a to-do rather than a feeling. And because it is a skill rather than a script, you point it at a new competitor by changing one URL list and a paragraph of positioning; there is no scraper to maintain when a page layout changes.
Where it does not help: it reads public pages only. It has no view of a competitor's private pricing, sales calls, or roadmap, and it will not pretend to. It also needs web access, which means claude.ai with browsing on, Claude Code with fetch enabled, or a Routine, where it is most at home. The paired use case shows the Routine setup: a weekly schedule, this skill as the brief, the digest posted to Slack. Run by hand it is a ten-minute Monday task with a saved file. Run as a Routine it is a chore that no longer exists.
The competitor monitoring watchlist and snapshot
The skill needs two things you write once: the deal questions that decide whether a change matters, and a snapshot to diff against. Copy the template below, fill in the top half, and let the first (baseline) run fill the snapshot. From then on, paste the latest snapshot back in each week and save the one the skill emits.
COMPETITOR WATCHLIST, {{our company}}
Owner: {{name}} Cadence: weekly, {{day}} Last run: {{date}}
DEAL QUESTIONS (what makes a change matter)
1. {{e.g. Did they move on price or seat minimums?}}
2. {{e.g. Did they ship or announce the feature we sell against?}}
3. {{e.g. Are they hiring into our segment?}}
OUR POSITIONING (one paragraph, honest)
{{...}}
COMPETITOR: {{name}}
Pages: {{/pricing}} {{/product}} {{/changelog}} {{/blog}} {{/careers}} {{/integrations}}
SNAPSHOT ({{date}})
/pricing: {{plans, prices, minimums, billing terms}}
/product: {{named features a rep would cite}}
/changelog: {{last 3 entries, dated}}
/blog: {{last 3 titles, dated}}
/careers: {{open roles by function, count}}
/integrations: {{named integrations, count}}
The deal questions are the filter. Without them every blog post is a 'change' and the digest becomes noise nobody reads. Three questions, tied to how you actually win and lose, is the right number.
Inputs & outputs
Inputs
- Competitor name and the 4-6 public URLs to watch: pricing, product, changelog, blog, careers, integrations (required)
- The snapshot emitted by the previous run (omit on the first run to create a baseline)
- Your honest one-paragraph positioning against this competitor
- The 2-3 deal questions that decide whether a change matters (price and minimums, a feature you sell against, hiring into your segment)
- Optional: a date range or a single page to re-check between weekly runs
Outputs
- A dated diff with a one-line headline: the most important change, or "No material change this week"
- Each change as Added, Removed, or Changed with before and after text, its category, its deal-impact rating, and the page it came from
- A one-line "means for us" and a suggested action (battlecard, brief team, none) for every High and Medium change
- A short Inferred watch list, kept separate from what was actually read
- The updated snapshot, terse and per page, to paste into next week's run
How to set it up
Decide where the skill lives
In claude.ai, create one Project per competitor, paste the SKILL.md body below into its custom instructions, and keep the filled-in watchlist and the latest snapshot as Project files; browsing must be on. In Claude Code, save the SKILL.md in skills/competitor-monitor/ and keep a competitors/
Write the deal questions before the first competitor monitoring run
Fill the top half of the watchlist template: three questions tied to how you win and lose against this competitor, and one honest paragraph of positioning. The questions are the impact filter. "Did they move on price or seat minimums" makes a pricing change High; without it, the skill has to guess, and a guessing monitor is either noisy or blind. Then pick the four to six URLs that actually change: pricing and changelog first, then product, blog, careers, integrations. Skip the homepage; it changes for marketing reasons that rarely matter in a deal.
Run the baseline, then diff weekly
The first run has no snapshot, so the skill reads every page and writes one. Save the snapshot block exactly as emitted. From the following week, paste it back in with the same URLs and the output becomes a diff. Pick a fixed day; Monday morning means reps hear about a pricing change before their first call of the week. If a page comes back Unread, re-run that page later rather than accepting a blank; an Unread page is not an unchanged page.
Route the actions, not the report
Nobody needs the whole diff. The High items with a battlecard action go to whoever owns the battlecard skill, and regenerating that card takes a minute. The brief-team items become two lines in the sales standup or the Slack channel. Everything Low stays in the snapshot for the record. Once a month, read the Inferred watch lines in sequence; a pattern across four weeks (hiring, pricing, and a blog post all pointing at your segment) is the kind of signal a single week never shows.
The SKILL.md
Save this as SKILL.md in a folder named competitor-monitor, or paste the body into a Claude Project (one per competitor). Give it the URLs, your deal questions, and last run's snapshot; it returns the diff and the next snapshot.
---
name: competitor-monitor
description: Use for weekly competitor monitoring of one named competitor. Reads the competitor's public surface (pricing, product, changelog, blog, careers, integrations), compares it with the saved snapshot from the last run, and returns a dated diff: each change classified, rated for deal impact, and translated into what it means for our reps, plus the updated snapshot to save. Reports only what it read; never infers a roadmap or invents a change.
---
# Competitor Monitor
You watch one competitor and report what changed since last time. Output a diff, not a profile. A quiet week is a valid result: say so in one line.
## Inputs
- Competitor name and the URLs to watch (required): pricing, product or features, changelog or release notes, blog, careers, integrations.
- The previous snapshot (the block this skill emitted last run). If none, this is a baseline run.
- Our positioning in one paragraph and the 2-3 deal questions that matter (price moves, a feature gap we sell against).
## Method
1. Read each URL with web access. Record the date. If a page is unreachable, mark it Unread; do not fill in from memory.
2. Baseline run: write the snapshot only. Per page, list the facts a rep would care about: plans and prices, named features, integrations, open roles by function, last three post titles. Keep it to what is on the page.
3. Diff run: compare each page with the snapshot. List every change as Added, Removed, or Changed, with the before and after text.
4. Classify each change: Pricing, Packaging, Product, Positioning, People, Customers, Content.
5. Rate deal impact High, Medium, or Low against the deal questions given. High means a rep in an active deal should know this week.
6. For High and Medium items, write one line of "what it means for us" grounded in our positioning, and one suggested action (update the battlecard, brief the team, no action).
7. Emit the updated snapshot in full so the next run has a clean baseline.
## Hard rules
- Report only what a page says. Speculation about intent or roadmap is labeled Inferred and kept to one line.
- Never invent a change to make the week look interesting. "No material change" is a fine answer.
- Distinguish a page you could not read from a page that did not change.
## Output template
**Competitor Monitor: <Competitor>, <date>, [Baseline | Diff vs <last date>]**
Pages read: <list> Unread: <list or none>
**Headline**
<one sentence: the most important change, or "No material change this week.">
**Changes**
- [Category | Impact] <Added/Removed/Changed>: <before> -> <after> (<page>)
Means for us: <one line> Action: <battlecard | brief team | none>
**Watch (Inferred)**
- <one line, if any>
**Snapshot (save for next run)**
<per-page facts, terse>
Run it from the terminal
Example run
A product marketer runs the weekly diff on an incumbent competitor the Monday after a quiet-looking pricing page edit.
Prompt: competitor-monitor. Competitor: LegacyCRM. Pages: /pricing /product /changelog /blog /careers /integrations. Deal questions: (1) price or seat minimums, (2) AI or routing features we sell against, (3) hiring into mid-market. Positioning: native AI, live in a week, no seat minimum. Previous snapshot: [pasted from 2026-09-01].
Output:
Competitor Monitor: LegacyCRM, 2026-09-08, Diff vs 2026-09-01
Pages read: /pricing, /product, /changelog, /blog, /careers, /integrations Unread: none
Headline
Growth plan seat minimum dropped from 25 to 10, and "AI Assist" now appears inside the Growth plan rather than as a separate add-on.
Changes
- [Pricing | High] Changed: "25-seat minimum" -> "10-seat minimum" on Growth (/pricing)
Means for us: our "no seat minimum" line still holds, but the gap shrank; reps should stop citing 25. Action: battlecard
- [Packaging | High] Changed: "AI Assist add-on, contact sales" -> "AI Assist included in Growth" (/pricing, /product)
Means for us: "their AI is a paid add-on" is now false for Growth; argue native-to-the-data-model, not bolt-on. Action: battlecard, brief team
- [Product | Medium] Added: changelog entry 2026-09-04 "Territory rules: round-robin by capacity" (/changelog)
Means for us: closes part of the routing gap we sell against in mid-market. Action: brief team
- [People | Low] Changed: mid-market AE openings 2 -> 4 (/careers)
Means for us: consistent with a mid-market push; no rep action. Action: none
- [Content | Low] Added: 2026-09-05 "Introducing Growth for smaller teams" (/blog)
Means for us: confirms the pricing move is deliberate positioning, not a test. Action: none
Watch (Inferred)
- Four mid-market AE roles plus a 10-seat minimum reads like a segment move into our core market. One line, not a conclusion.
Snapshot (save for next run)
/pricing: Starter $35/seat/mo, Growth $79/seat/mo (AI Assist included), Enterprise contact sales; 10-seat minimum on Growth, 25 on Enterprise; annual billing only
/product: pipeline management, forecasting, territory rules incl. capacity round-robin, AI Assist (Growth and up)
/changelog: 2026-09-04 "Territory rules: round-robin by capacity", 2026-08-21 "Forecast snapshots", 2026-08-07 "Bulk record merge"
/blog: 2026-09-05 "Introducing Growth for smaller teams", 2026-08-28 "Why your pipeline review is broken", 2026-08-14 "Customer story: Meridian Logistics"
/careers: 16 open roles: 6 engineering, 6 sales (4 mid-market AE), 2 CS, 2 marketing
/integrations: 41 listed; unchanged
Related plays
- Weekly Competitor Intel Digest, Run by a Claude Routine →The paired play: a scheduled Routine that runs this skill every week and posts the digest to Slack.
- Battlecard: Build a Rep-Ready One vs Any Competitor →Where a High-impact change goes next: regenerate the card.
- Claude Routines: scheduled cloud agents, explained →The scheduling layer that turns this from a Monday task into a chore that no longer exists.
- Claude + Slack integration guide →Posting the brief-team items where reps will actually read them.