Icp Research
growthack88/growth-marketing-os
Scrapes case studies, testimonials, and solutions pages from a target website to build structured ICP documentation.
A skill your agent uses when an already-named set of rivals is watched on a cadence — pricing, features, positioning and changelog diffed into a maintained tracker plus an append-only, classified…
$ npx skills add ericrisco/rsc-harness --skill competitor-watch -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness competitor-watch --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/competitor-watch .claude/skills/competitor-watch && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "competitor-watch" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/competitor-watch into .claude/skills/competitor-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "competitor-watch", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/competitor-watchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill competitor-watch -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness competitor-watch --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/competitor-watch .agents/skills/competitor-watch && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "competitor-watch" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/competitor-watch into .agents/skills/competitor-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "competitor-watch", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill competitor-watch -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness competitor-watch --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/competitor-watch .cursor/skills/competitor-watch && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "competitor-watch" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/competitor-watch into .cursor/skills/competitor-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "competitor-watch", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/competitor-watch--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill competitor-watch -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness competitor-watch --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/competitor-watch .gemini/skills/competitor-watch && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "competitor-watch" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/competitor-watch into .gemini/skills/competitor-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "competitor-watch", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness competitor-watchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill competitor-watch -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/competitor-watch .github/skills/competitor-watch && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "competitor-watch" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/competitor-watch into .github/skills/competitor-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "competitor-watch", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill competitor-watch -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness competitor-watch --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/competitor-watch .opencode/skills/competitor-watch && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "competitor-watch" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/competitor-watch into .opencode/skills/competitor-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "competitor-watch", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
competitor-watchA skill your agent uses when an already-named set of rivals is watched on a cadence — pricing, features, positioning and changelog diffed into a maintained tracker plus an append-only, classified…
Competitor Watch is an agent skill from ericrisco/rsc-harness. Use when an already-named set of rivals is watched on a cadence — pricing, features, positioning and changelog diffed into a maintained tracker plus an append-only, classified change log. NOT sizing the market or choosing who the rivals are (that is market-research), NOT one-off page extraction (that is data-scraper).
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/monitoring-config.md`).
It sits in Marketing & SEO, covering Web scraping, Market research and Positioning and messaging. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
acme.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Competitor Watch loads about 3.1k tokens when it runs, and up to ~5.8k if it reads all its reference files. Until then it costs about 85 tokens; SKILL.md has 1,533 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,533 words, ~3,122 tokens.
.claude/skills/competitor-watch/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.You run a standing watch, not a one-shot study. You take an already-named set of rivals and keep them under dated observation along four axes — positioning, pricing, features, and change-over-time. The deliverable is not a snapshot of the market; it is the time series of what each rival moved, when, and what you do about it. Competitive intelligence is a repeating cycle, not a report you write and file: the taught cycle runs Orient → Gather → Analyze → Report → Act, then loops with a fresh orientation informed by the last pass (competitiveintelligencealliance.io, accessed 2026-06-02).
Two near-misses decide the routing (the rest are in Handoffs, below). ../market-research/SKILL.md
answers "what is the market and who is in it" once, and often produces the list you watch —
you are the downstream loop that watches that list forever. ../data-scraper/SKILL.md owns the
generic mechanics of pulling data off a page on demand; you use change detection as a means, but
your identity is the maintained tracker + classified change log + cadence. "Extract this one table
once" → data-scraper. "Keep watching these five companies" → you.
Legitimate CI is legal + ethical collection from public, observable sources with your identity disclosed. SCIP's Code of Ethics is the industry line (scip.org, accessed 2026-06-02). The practical gate is the front-page test: would you be comfortable if your collection method were reported on the front page of the news? If not, don't do it.
If a request needs any of those, refuse and reframe to the legal equivalent: instead of "get their internal pricing," watch their public pricing page on a cadence and log the moves.
../market-research/SKILL.md. Why: watching the wrong rivals forever is worse
than not watching. You are not the one who decides who the competitors are.02-DOCS/wiki/competitors/ (one profile per rival02-DOCS/raw/competitors/. Why: the
tracker is a maintained artifact, not a chat answer — it has to live somewhere re-runnable.source_url + date, or it stays blank. Why:
this is the single highest-value guard against inventing a rival's number. If you didn't
see it on a dated public page, you don't know it — leave the cell empty and say so.Bad: Acme Pro tier — $79/mo (no source, no date — invented)
Good: Acme Pro tier — $79/mo [acme.com/pricing, 2026-05-28] (seen, sourced, dated)This is the real branch — different surfaces want different cadences and different selector types, so the table earns its place. Cadence is tiered by how fast the surface moves: time- sensitive surfaces want 5–15 min checks, general competitor surfaces hourly–daily, slow/compliance surfaces daily (visualping.io / scrapx.io cadence guidance, accessed 2026-06-02). Over-frequent on a slow page is just cost and noise; under-frequent on pricing is a missed move.
| Axis (surface) | What you watch | Cadence | Selector type |
|---|---|---|---|
| Pricing / packaging | the price node, tier names, promo banner | 5–15 min | CSS on the price element, or JSONPath if pricing comes from an API |
| Features / changelog | release-notes / "what's new" list | daily | CSS on the release list (first N items) |
| Positioning / homepage | hero headline + subhead copy | daily–weekly | CSS on the hero text block |
| Launches / partnerships | press / blog index | daily | CSS on the post list |
| Careers / hiring | open-roles count + titles | weekly | CSS on the jobs list (signals strategy) |
| Customer reviews | G2 / Capterra recent reviews | weekly | CSS on the review feed |
| Social | public profile / posts | daily–weekly | platform-dependent; public only |
That mapping — URL + selector + cadence per surface — is the monitoring config. Write it down as config, don't hold it in your head.
Each pass on a watched URL: capture → diff vs last → classify → score → log → flag.
pricing | feature | positioning | messaging | team | other.high (changes our roadmap or pricing), medium (worth knowing),
low (cosmetic / noise). Why: a diff with no classification and no materiality is noise — it
tells you something moved but not whether to care.high rows for action and route them — a price move to whoever owns our
pricing decision, a feature ship to product. You log and flag; you don't make those calls.Bad: "They changed their website."
(no date, no axis, no old/new, no materiality, no action — unactionable)
Good: 2026-05-20 · pricing · Acme · acme.com/pricing
Pro tier $49→$59/mo · high · revisit our mid-tier vs theirs
(dated, classified, old→new, scored, with a next step)Three structured files. Required fields named here; full schema + a filled end-to-end example
competitor live in references/tracker-schema.md. The profile is a .md page under the
02-DOCS/wiki/ OKF v0.1 bundle, so its YAML frontmatter carries a non-empty type: competitor
(plus the OKF-recommended title/description/tags/timestamp) alongside the domain keys;
its body uses standard markdown links, never wikilinks. The two CSVs are data files, not OKF
documents.
type: competitor, …) + the domain
keys name, positioning_line, segment, pricing tiers (each with amount, currency,
source_url, date), feature-matrix rows, watched URLs.date,competitor,axis,url,old_value,new_value,materiality,action.date,competitor,axis,url,old_value,new_value,materiality,action
2026-05-20,Acme,pricing,https://acme.com/pricing,$49/mo,$59/mo,high,revisit our mid-tier
2026-05-22,Acme,feature,https://acme.com/changelog,,SSO on Team plan,medium,note for productThe runnable default is changedetection.io (open-source, self-hosted): it does text/
visual / XPath/CSS-selector and JSON-API (JSONPath / jq) change detection, checks as
often as ~1 minute, notifies via Slack/Discord/Telegram/email/API, and ships AI change
summaries like "Price dropped from $89.99 to $67.00" (github.com/dgtlmoon/changedetection.io,
accessed 2026-06-02). Prefer this when you must produce a config you can run rather than
recommend a SaaS. Full docker-compose + per-axis watch recipe is in references/monitoring-config.md.
../sales-pipeline/SKILL.md,
not you. A self-host config covers most teams; the suite is overkill until you're tracking
many rivals across social + filings 24/7 with a dedicated CI owner.../automation-flows/SKILL.md.| Request | Route to |
|---|---|
| Size the market, produce/validate the competitor list, TAM/SAM/SOM, buyer/JTBD | ../market-research/SKILL.md |
| Set OUR price / packaging / tiers (a decision, not an observation) | ../pricing/SKILL.md |
| Build the sales battlecard / objection handling / "why we win" | ../sales-pipeline/SKILL.md |
| Define OUR positioning / value prop / messaging | ../brand-voice/SKILL.md |
| One-off "extract this page/table once" with no cadence or tracker | ../data-scraper/SKILL.md |
| Wire the recurring run as a cron/webhook automation | ../automation-flows/SKILL.md |
| Track OUR own SEO / AI-search visibility vs rivals on one page | ../seo-geo/SKILL.md |
| Anti-pattern | Why it's wrong | Do instead |
|---|---|---|
| Treating it as a one-shot study | The value is the delta over time; a snapshot is stale on arrival | Set a cadence, append to a change log every pass |
| Inventing a rival's price/feature | Unsourced "facts" pollute the tracker and mislead decisions | Every cell gets source_url + date, or stays blank |
| Posing as a customer / bypassing a paywall | Fails the front-page test; not CI, it's a legal risk | Public observable sources only; refuse and reframe |
| Using the Wayback Machine as the live monitor | It doesn't tell you when something changed and may never capture the page | Wayback for historical reconstruction only; changedetection.io for live alerts |
| 5-min cadence on a careers page / weekly on pricing | Over-frequent = noise + cost; under-frequent = a missed move | Tier the cadence by axis volatility (see the table) |
| Logging a raw diff with no axis/materiality | "Something changed" is unactionable | Classify the axis, score materiality, add a next step |
| Watching 30 competitors | Breadth produces noise nobody reads | Watch the vital 3–7 that move your roadmap |
| Building the battlecard inside this skill | That's sales enablement, a different owner | Hand off to ../sales-pipeline/SKILL.md; you supply the tracker |
After you emit a tracker / change log / config, run scripts/verify.sh against your project
docs. Read-only lint: required tracker columns present; every pricing/feature row has a
non-empty source_url and date (the anti-invention guard); change-log axis and
materiality in the allowed sets, with a url + date on every row; and a warning when a
monitoring-config entry pairs a slow axis with a sub-15-min cadence, or pricing with a
slower-than-daily one. It exits 0 on an empty/clean target — no false failures.
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts, references) in skills/competitor-watch of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Competitor Watch next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Competitor Watch this skillericrisco/rsc-harness | 156 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Icp Researchgrowthack88/growth-marketing-os | 115 | — | ~4.4k | Automated safety check: Pass | MIT | |
| Competitor Analysissocial-media-skills/skills | 116 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Competitor Comparison Matrixfirecrawl/web-agent | 1.2k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Startup Designferdinandobons/startup-skill | 1.2k | — | ~8.1k | Automated safety check: Pass | MIT | |
| Startup Validatorailabs-393/ai-labs-claude-skills | 454 | 1 repos | ~2.8k | Automated safety check: Pass | MIT |
growthack88/growth-marketing-os
Scrapes case studies, testimonials, and solutions pages from a target website to build structured ICP documentation.
social-media-skills/skills
Competitor analysis for social media — public-data competitive reconnaissance to find the gap a brand can own.
firecrawl/web-agent
Compares two or more products or companies on pricing, features and positioning by scraping their sites, and returns a normalized JSON matrix.
ferdinandobons/startup-skill
Design, validate, and plan a startup from scratch. An agent skill from ferdinandobons/startup-skill.
ailabs-393/ai-labs-claude-skills
Comprehensive startup idea validation and market analysis tool.
yaojingang/yao-open-skills
Generate evidence-aware positioning reports for personal IPs, courses, products, services, brands, or companies by combining positioning theory, course-marketing analysis, user intent, competitor…
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Categories
A skill your agent uses when an already-named set of rivals is watched on a cadence — pricing, features, positioning and changelog diffed into a maintained tracker plus an append-only, classified…. Competitor Watch is an agent skill from ericrisco/rsc-harness. Use when an already-named set of rivals is watched on a cadence — pricing, features, positioning and changelog diffed into a maintained tracker plus an append-only, classified change log.
Competitor Watch fits situations like: an already-named set of rivals is watched on a cadence — pricing; positioning and changelog diffed into a maintained tracker plus an append-only; classified change log.
Run `npx skills add ericrisco/rsc-harness --skill competitor-watch -a claude-code`. Or copy the skill folder (skills/competitor-watch in ericrisco/rsc-harness) into .claude/skills/competitor-watch in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill competitor-watch -a codex`. Or copy the skill folder (skills/competitor-watch in ericrisco/rsc-harness) into .agents/skills/competitor-watch in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill competitor-watch -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/competitor-watch, .gemini/skills/competitor-watch, .github/skills/competitor-watch and .opencode/skills/competitor-watch in your project.
Going by SKILL.md and its folder, Competitor Watch needs a shell for the scripts in its folder. Our summary lists: A Bash shell; Docker.
SKILL.md names 1 domain. In commands or code: acme.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Competitor Watch is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Competitor Watch: Icp Research (growthack88/growth-marketing-os, 115 stars), Competitor Analysis (social-media-skills/skills, 116 stars), Competitor Comparison Matrix (firecrawl/web-agent, 1.2k stars) and Startup Design (ferdinandobons/startup-skill, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.