Deep-scan any tools you connect (CRM, email, support, reviews, analytics, billing, database) to produce a data-grounded Ideal Customer Profile and a reusable persona library. Read-only by default. Use when you need to define or refresh your ICP, build buyer personas from real data instead of guesses, or generate the persona inputs that the customer-panel-of-experts and prospect-panel-simulator skills consume.
npx skills add https://github.com/OneWave-AI/claude-skills --skill icp-deep-scanner
Turn the data already sitting in your connected tools into a rigorous, evidence-backed Ideal Customer Profile (ICP) and a library of buyer personas. Most ICPs are invented in a slide deck. This one is reverse-engineered from your actual best customers, your won/lost deals, your support tickets, and your reviews — then written so it can drive real decisions and feed the panel skills.
This skill is the data layer beneath customer-panel-of-experts, prospect-panel-simulator, and product-launch-war-room. Run it first; those skills read the persona library it writes.
$SUPABASE_TOKEN, $OPENAI_API_KEY) or in the MCP connection itself. If a source needs auth that isn't present, list it under "Sources I could not reach" and continue.Ask the user which tools to scan, or detect what's available. Map each to what it tells you:
| Source (examples) | What to extract | How to reach it |
|---|---|---|
| CRM (HubSpot, Salesforce, internal) | Closed-won vs closed-lost firmographics, titles of champions/buyers, deal size, sales cycle, win reasons | MCP connector or read-only API |
| Email / calendar | Who actually engages, meeting cadence, recurring objection language | Gmail/Calendar MCP, read-only |
| Support / tickets / chat | Top pain themes, words customers use, where they get stuck | Intercom/Zendesk export, logs |
| Reviews (G2, Capterra, Trustpilot, App Store) | Verbatim value language, switching triggers, deal-breakers | WebFetch / customer-review-aggregator |
| Product analytics (GA4, Clarity, Mixpanel) | Activation paths, who sticks, drop-off points | Analytics MCP / API |
| Billing (Stripe, Mercury) | Real revenue concentration, expansion vs churn by segment | Read-only API |
| Database (Supabase/Postgres) | Ground-truth usage and cohort behavior | Read-only SQL via $SUPABASE_TOKEN |
| Public web | Firmographic enrichment, market sizing, competitor positioning | WebSearch / WebFetch |
Present the list, mark which are reachable now, and confirm scope before scanning. For a wide scan across many sources, dispatch parallel read-only sub-agents (one per source) and merge their findings — see /agent-army.
For each reachable source, pull:
Record sample sizes and date ranges for everything. Flag anything based on fewer than ~5 data points as "thin signal."
Write icp-profile.md:
# Ideal Customer Profile — {COMPANY}
Generated: {timestamp} · Sources scanned: {list} · Confidence: {High/Med/Low}
## The ICP in one sentence
{Vertical} companies of {size} who {trigger}, evaluated against {alternative}, where the champion is a {title} and the economic buyer is a {title}.
## Firmographic fit (with evidence)
- Industry: ... (evidence: N of M closed-won)
- Size: ...
- Geography / model / stack: ...
## Anti-ICP — who to disqualify
- {Segment} — closes slow, churns fast, low ACV (evidence)
## Buying committee
- Economic buyer · Champion · Blocker · End user — each with real titles + what they care about
## Triggers & jobs-to-be-done
## Top buy reasons / top no-buy reasons (ranked, with counts)
## The customer's own language (verbatim, scrubbed)
## Economics — ACV, cycle, expansion, concentration risk
## Confidence & gaps — what's thin, what to instrument next
Write personas/ — one file per persona (3–6 personas: typically the champion, the economic buyer, the blocker, and 1–2 key end users or segment variants). Each persona file is structured so the panel skills can load it directly:
---
persona_id: ops-leader-champion
role: Champion
archetype: "VP of Operations at a 50–200 person services firm"
based_on: "12 closed-won champions, CRM trailing 12 mo"
---
# {Archetype name}
- Goals / success metrics:
- Pains (verbatim language):
- What earns trust / what triggers skepticism:
- Buying authority & budget reality:
- Objections they raise (real, from lost deals):
- How they talk (tone, vocabulary, 2–3 scrubbed quotes):
- What would make them a hard NO:
Also write personas/index.md listing every persona, its role in the committee, and its evidence base.
End with:
customer-panel-of-experts (debate a decision with these personas) or prospect-panel-simulator (pressure-test a pitch against them).Read-only unless told otherwise · no secrets in output · personas are archetypes, never dossiers · every claim cites its source and sample size · thin signal is labeled, not hidden.
Check whether ClickHouse's supported versions (last 3 majors + latest LTS) have recent stable patch releases, diagnose why the scheduled AutoReleases pipeline failed, and identify which releases must be created manually. Use when asked "are the patch releases up to date", "why did autorelease fail", "which releases are missing", "did a release get skipped", during the bi-weekly release-health check, or when investigating create_release.yml / auto_releases.yml failures. Reproduces the full investigation: supported versions from SECURITY.md, per-version staleness, classification of the last N days of AutoReleases/CreateRelease failures (version-bump-PR guard vs missing release-maker runner vs other), the Slack cross-check that reveals the blocking PR, and gated remediation (close a stale robot bump PR, dispatch CreateRelease for a missing version).
Monitors Hacker News for user-configured keywords, deduplicates against a local SQLite cache, and sends Slack alerts for new matching posts. Use when asked to monitor Hacker News for mentions, track keywords on HN, get alerts when something is posted about a topic on Hacker News, or set up HN keyword monitoring. Trigger when a user mentions Hacker News alerts, HN monitoring, keyword tracking on HN, or wants to know when a topic appears on Hacker News.
Initialize a project_brain.db in the current project folder. Creates the database, project record, then scans existing files (CLAUDE.local.md, memory files, docs, emails) to bootstrap the brain with knowledge. Smart enough to handle re-runs — skips what already exists and only processes new/changed files.
Expert in background job processing with Bull/BullMQ (Redis), Celery, and cloud queues. Implements retries, scheduling, priority queues, and worker management. Use for async task processing, email campaigns, report generation, batch operations. Activate on "background job", "async task", "queue", "worker", "BullMQ", "Celery". NOT for real-time WebSocket communication, synchronous API calls, or simple setTimeout operations.
>- Distributed traces, spans, service dependencies, and request flow analysis. Use when investigating span-level details, failures, performance bottlenecks, or trace correlation. "distributed trace", "span details", "HTTP status codes in traces", "database query spans", "messaging spans", "gRPC calls", "Lambda cold starts", "trace ID lookup", "exception analysis", "correlate logs and traces", "request attributes". Do NOT use for explaining existing queries, product documentation or configuration questions, service-level RED metrics (use dt-obs-services), log searching (use dt-obs-logs), or problem analysis (use dt-obs-problems).
Clerk webhooks for real-time events and data syncing. Verify with verifyWebhook from the framework-specific package. Handle user, session, organization, billing, and payment events. Build event-driven features like database sync, notifications, and integrations.
Handles backend/API/database work for Unite-Hub. Implements Next.js API routes, Supabase database operations, RLS policies, authentication, and third-party integrations (Gmail, Stripe).
Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks OpenClaw to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.
Take onewave-ai/icp-deep-scanner from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.