competitor-monitoring
Keep watch on competitors (and, where sources allow, industry people) on a schedule and report only real changes.
Skill by HybridAIOne
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.
About
Use cases: documents
Reviews
Write a reviewNo 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
- 0.720score
hermes3000-writing
HybridAIOne
Use Hermes3000 to plan, draft, revise, save, check consistency, and export long-form manuscripts through the Hermes3000 AI writing portal API.
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
datalion
HybridAIOne
Use for DataLion workflows such as listing, reading, creating, or editing projects, inspecting data sources, importing Excel or CSV data, working with reports…
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
langfuse
HybridAIOne
Use Langfuse for LLM observability and evaluation and look up Langfuse documentation.
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
manim-video
HybridAIOne
Plan, script, render, and stitch Manim Community Edition videos in Python.
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
human-distill
HybridAIOne
Distill a real person into a hireable coworker agent from their source material — chat exports, emails, meeting transcripts, documents, interviews, and live…
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
ga4
HybridAIOne
Run production Google Analytics 4 Data API reports with gateway-injected bearer auth, safe request review, traffic source, landing-page, time-series, revenue…
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
google-ads
HybridAIOne
Manage Google Ads accounts with safe GAQL reporting, campaign planning, guarded mutations, and gateway-proxied REST API calls.
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
hetzner-cloud
HybridAIOne
Read and operate Hetzner Cloud servers, server types, locations, networks, volumes, snapshots, and cost estimates through gateway-proxied API requests.
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
distil-pii-redactor
HybridAIOne
Redact, anonymize, sanitize, or remove PII locally with Distil-PII and llama.cpp; keep personal data and secret values out of model context, logs, and chat.
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
agentic-tpm
HybridAIOne
Coordinate cross-functional project delivery by tracking commitments, dependencies, decisions, and risks; maintain project context and prepare bounded…
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
meme-generation
HybridAIOne
Generate meme images from curated classic templates, dynamic imgflip templates, or a custom image.
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
diagram
HybridAIOne
Create, validate, update, and render diagram-as-code artifacts with Mermaid-first schema awareness plus PlantUML, Graphviz DOT, and Excalidraw JSON adapters.
SkillAFreshness: A★ 159Claude Code +9
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
- Repository
- github.com/HybridAIOne/hybridclaw
- Website
- www.hybridclaw.io/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from HybridAIOne
- 0.720score
human-distill
HybridAIOne
Distill a real person into a hireable coworker agent from their source material — chat exports, emails, meeting transcripts, documents, interviews, and live…
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
manim-video
HybridAIOne
Plan, script, render, and stitch Manim Community Edition videos in Python.
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
datalion
HybridAIOne
Use for DataLion workflows such as listing, reading, creating, or editing projects, inspecting data sources, importing Excel or CSV data, working with reports…
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
hermes3000-writing
HybridAIOne
Use Hermes3000 to plan, draft, revise, save, check consistency, and export long-form manuscripts through the Hermes3000 AI writing portal API.
SkillAFreshness: A★ 159Claude Code +9 - 0.720score
langfuse
HybridAIOne
Use Langfuse for LLM observability and evaluation and look up Langfuse documentation.
SkillAFreshness: A★ 159Claude Code +9 - 0.716score
meme-generation
HybridAIOne
Generate meme images from curated classic templates, dynamic imgflip templates, or a custom image.
SkillAFreshness: A★ 159Claude Code +9
Cite this page
competitor-monitoring skill. Agent Mart. https://agentmart.dev/skills/hybridaione-competitor-monitoring (last updated 2026-10-24)