Find potential customers for a product, where every prospect is traceable to a dated public page the agent opened, and belongs to someone who could actually buy.
Ask any agent for ten cited leads and you get three problems: URLs that go nowhere, signals two years stale, and a loud anonymous request outranking a real buyer. This skill fetches and dates every source, scores whether the prospect can actually buy, and holds back anything that fails. Works with any agent that reads the SKILL.md format. No API keys, no scraping service, no paid data.
On the verification claim, precisely: the run records that the agent fetched each source, and quotes what it found there. The auditor checks that record. It cannot watch a fetch happen, so this is friction against unsupported claims, not proof.
Run this in your own terminal, not from inside an agent session:
npx --yes lead-signal-scout-skillIt detects Codex and Claude Code automatically and installs into each one it finds, creating the skills folder when the agent has not made one yet. Falls back to ~/.agents/skills when neither is present.
Then restart your agent. Most read their skills directory once at startup, so a skill installed mid-session stays invisible until you restart.
Asking a sandboxed agent to install this for itself will work, but it has to prompt you to allow network access and writes outside its workspace. Your own terminal avoids all of that.
If your agent keeps skills somewhere the installer did not find:
npx --yes lead-signal-scout-skill --list # show where it would go
npx --yes lead-signal-scout-skill --skills-dir <that directory> # install there insteadPrefer not to run an installer at all? The skill is plain files, so copying works just as well:
git clone https://github.com/karthikselvarjn/lead-signal-scout-skill.git
cp -R lead-signal-scout-skill/lead-signal-scout <your-skills-directory>/Ask in plain language:
Find potential customers for https://example.com. Verify every source
and build the report.
It starts by asking for four things it cannot read off a website: geography, price band and how customers buy, who to exclude, and any existing customers you can share. Answer in one message. Skip them and it continues anyway, recording each gap as an unconfirmed assumption in the report. The price band is the one worth answering. Give it a real number and it will rule people out on price; leave it blank and it writes its own, marks it assumed, and is then forbidden from rejecting anyone on the strength of a figure nobody confirmed.
Then it plans queries, searches, opens the pages it found, confirms the signal is really there, scores what survives, audits itself, and writes the files. It has to open a minimum number of pages, not just run a minimum number of searches, and any search that turned up results it decided to skip has to say why.
To be specific about what you want:
Run lead-signal-scout in pipeline mode, deep depth, for https://example.com.
Our current customers are in the attached CSV. Exclude all of them and find
lookalikes.
Expect it to be slow. A standard run means 18 or more distinct searches plus a page fetch per candidate, and it returns fewer prospects than a tool that checks nothing.
Mode sets what is optimised for. Depth sets how many. They are independent.
| Mode | Use when |
|---|---|
discovery (default) |
Pre-product-market-fit, hunting for unmet pain |
pipeline |
Already selling, want repeatable flow. Will not shortlist an unidentified company |
design-partners |
Want testers and feedback over buyers |
b2b |
Selling to companies with current business triggers. Will not shortlist an unidentified company |
community |
Your users already discuss the problem publicly |
| Depth | Prospects | Searches | Pages opened |
|---|---|---|---|
quick |
up to 5 | 10+ | 12+ |
standard (default) |
up to 10 | 18+ | 20+ |
deep |
up to 20 | 35+ | 35+ |
Five files in an outputs/ folder. Say where if you care: ...and write the outputs to ~/prospecting/.
| File | What it is |
|---|---|
leads.csv |
16 columns: who, score, readiness, age, next action, links, opener. The file you actually work through. |
leads-full.csv |
Every field including all six score components and the evidence. For auditing a run, not for working it. |
report.html |
Shareable and printable, opens in any browser. |
brief.md |
The same content as plain text. |
ledger.json |
Who has been surfaced, when, and on what kind of signal, so a stronger later signal can resurface rather than being suppressed forever. |
run.json is the source of truth all five are built from. Keep it.
Every run opens with an audit line:
AUDIT: PASS
candidates=12 shortlist=4 review=4 dropped=4
recency: shortlist 6-88 days (median 61), cutoff 120d, gated 3, undated 1
qualification: 1 held back on company or channel
sources: forums 1, review_sites 1, qa_sites 1, job_posts 1
The gap between candidates and shortlist is the point. Prospects whose source could not be confirmed are dropped and counted, not quietly padded in. gated counts the ones held back for being stale, undated or unable to buy, and sources shows whether the shortlist spread across sites or quietly collapsed onto one.
Send, post, connect, or write to a CRM. Openers are drafts you send yourself.
It also will not bypass logins or paywalls, use data brokers or personal contact enrichment, target on protected traits, or claim a prospect is interested. A public signal is not consent.
A web search tool and a URL fetch tool on your agent. Python 3.9 or later is optional, used only for the CSV and HTML; without it you still get the Markdown brief.
DETAILS.md covers how verification and scoring work, what the auditor enforces and how that is tested, how to read a full audit line, and troubleshooting.
MIT