Skip to content
Agentmart
Submit a tool

competitor-monitoring

Keep watch on competitors (and, where sources allow, industry people) on a schedule and report only real changes.

Skill by HybridAIOne

IndexedMIT★ 159
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/hybridaione-competitor-monitoring

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Keep watch on competitors (and, where sources allow, industry people) on a schedule and report only real changes. Use when someone wants a competitor monitored, asks what a watched company has been doing, wants to change or stop a watch — and always when a scheduled run tells you to. Triggers include "watch", "keep an eye on", "monitor competitor", "what is the competition doing", "what changed at X", "stop watching", and their German equivalents ("beobachte", "behalte im Auge", "was macht der Wettbewerb").

Use cases: documents

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/competitor-monitoring

What's inside

Skill name
competitor-monitoring
Description
Keep watch on competitors (and, where sources allow, industry people) on a schedule and report only real changes. Use when someone wants a competitor monitored, asks what a watched company has been doing, wants to change or stop a watch — and always when a scheduled run tells you to. Triggers include "watch", "keep an eye on", "monitor competitor", "what is the competition doing", "what changed at X", "stop watching", and their German equivalents ("beobachte", "behalte im Auge", "was macht der Wettbewerb").
License
MIT
Instructions
242 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Competitor Monitoring

You watch competitors for a salesperson. They read the result in an app, not
in the chat — the Sales Companion iOS app parses a fenced `watch` block from
your daily memory note. Your job is not to write a nice report but to **detect
reliably what changed since the last run**, and to leave out everything else.

Keep the tone factual. No "exciting", no "interestingly". A salesperson reads
this in twenty seconds in the morning. Write names, titles and details in the
user's language.

## The four stores

| What | Where | How |
|---|---|---|
| Schedule | one cron task per target | `cron` `add` / `update` / `remove` — chat only |
| Watchlist | `watch/targets.json` in the workspace | `read` / `write` |
| Comparison state | `watch/<target-id>.json` in the workspace | `read` / `write` |
| Result for the app | today's daily note | `memory` with `action: "append"`, `target: "daily"` |

**`watch/targets.json` is the watchlist.** Scheduled runs cannot call `cron`
at all — the tool is blocked there — so they can only know the full list from
this file. Change it in the same step as the cron task, every time:

```
{"targets": [
  {"id": "<target-id>", "name": "<display name>", "kind": "company",
   "focus": "<what to watch>", "schedule": "<e.g. täglich 07:30>",
   "url": "<website>", "task_id": <number from cron add>}
]}
```

This and every other `<…>` shape in this file is a **template**: fill in
real values from the user's request, `watch/targets.json` or this run. Never
write a template, or an example company name from this file, into any file.

`task_id` is the number `cron add` reports ("Scheduled … task #42 …"); pass
it as `taskId` to `update` and `remove`.

Why these stores: the `memory` tool may only write today's daily note, and
only memory files are synced to the platform, where the app reads them. A
workspace file never reaches the app, so it holds your own state.

## A. Set up a watch

This happens in a chat with the user, where `cron` is available.

1. Clarify **who** and **what to look for**. If the focus is missing, ask
   exactly once ("What should I watch at Allianz — prices, products,
   people?"). If the website is missing, look it up yourself; do not ask.
2. Derive a **stable id** from the name: lowercase ASCII, hyphens, no
   umlauts — `allianz-de`, `barmenia`, `jane-doe`. If `watch/targets.json`
   already has it, update that watch instead of adding a second one.
3. Create the cron task:

   ```
   cron action=add
     cron="<minute> <hour> * * *"
     tz="<user's IANA time zone>"
     channel="<the user's email address>"
     prompt="Competitor monitoring: use the competitor-monitoring skill,
             read its SKILL.md and follow it. Target: <target-id>
             (<display name>, <website>), kind=<company|person>,
             focus: <what to watch>."
   ```

   - Pass `tz` with the user's IANA time zone so the run keeps its local time
     across daylight-saving changes. If you do not know it, ask; for a
     German-speaking user, `Europe/Berlin` is the usual answer.
   - `channel` is **required** when the request comes from a web chat
     session: the tool refuses to schedule there, because the output of a task
     created without a delivery channel would be discarded. Use the user's
     email address or another configured messaging target. If none is known,
     say so plainly instead of trying without one.
4. Add the target with its `task_id` to `watch/targets.json` (create the file
   if it is missing).
5. **Do not create `watch/<id>.json`.** The first scheduled run records the
   baseline; a file created now would only be empty.
6. **Write the result block right away** (section C) with the updated list and
   `"findings": []`. Otherwise the new target only appears in the app after
   the first scheduled run.
7. Confirm in one sentence: "I'm watching Allianz from tomorrow morning,
   focus pet insurance."

**Changing a watch** (time, focus): `cron action=update taskId=<task_id>`
from `watch/targets.json`, then update the entry there. Never add a second
task for the same target.

**Removing a watch:** `cron action=remove taskId=<task_id>`, remove the
entry from `watch/targets.json`, delete `watch/<id>.json`, write the block
again.

## B. A scheduled run

You receive the task's prompt. `cron` is not available here; do not try it.
Work strictly in this order:

1. **Read the watchlist and the previous state.** `read watch/targets.json`
   and `read watch/<id>.json`. If the state file is missing or its
   `snapshots` are empty, this is a **baseline run**: fetch the sources, save
   them as the state (step 6) and report **nothing** as a finding — there is
   nothing to compare against yet. Still write the block with
   `"findings": []`.
2. **Fetch the current state.** Use several sources, not just one:
   - `web_search` with `freshness: "week"` on company name plus focus
   - `web_fetch` on the pages that belong to the focus (pricing, product,
     press pages) — they are listed in the state under `snapshots`
   - for `kind=person`, also search name plus role. Social activity is only
     partly visible with the available tools, so rely on interviews, talks,
     press releases and job changes.
3. **Compare.** For each source: did the substance change? Ignore counters,
   dates, cookie banners, ordering and rewording that does not change meaning.
4. **Judge.** A finding only counts if it falls into one of these categories.
   Use the category names as given; the app shows them as labels.

   | `category` | Example |
   |---|---|
   | `Preis` (price) | plan more expensive, new discount, tiers changed |
   | `Produkt` (product) | new product, benefit dropped, terms changed |

From HybridAIOne/hybridclaw, MIT.

More from HybridAIOne/hybridclaw

Signals

Stars
159
Forks
17
Open issues
323
Last commit (this folder)
Sep 23, 2026 (1 month ago)
Last release
Oct 24, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from HybridAIOne

Cite this page

competitor-monitoring skill. Agent Mart. https://agentmart.dev/skills/hybridaione-competitor-monitoring (last updated 2026-10-24)