agentleFS
JakeschincariolJakeschincariol/closer-skill/prospector/SKILL.md

prospector

Skill33 starsChanged 11 days agoMITView on GitHub

Prospector. Finds new leads and performs the cold outreach. Builds a list of local businesses from public listings, checks each one's own website for the gap you fix (no online booking, not mobile-friendly, slow, no Google Ads tag, no reviews, no online ordering), ranks them with the reason, puts the best on the board, and writes a short, specific, honest opening email for each one with the legal footer and an opt-out. Every email waits for your yes. Use when the user says "find me leads", "find customers", "prospect", "cold email", "cold outreach", "build a lead list", "who should I reach out to", or "get me new clients".

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 7 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Who: Ask what kind of business and where ("dentists and gyms in Austin, TX"), and confirm the user's offer and postal address are in …

    line 32
  2. Distinctive:

    Find: Search public listings (a web search, Google Maps results, the local chamber of commerce, an industry directory).

    line 34
  3. Very specific:

    Log: Only after it went out: leads.py record --approval "<their yes, word for word>".

    line 49
  4. Distinctive:

    Never sends, and never records an email that did not go out.

    line 64
  5. Distinctive:

    Never emails anyone on the suppression list or marked do-not-contact.

    line 65
  6. Distinctive:

    Never invents a fact about the business, a mutual friend, a past conversation or a fake "Re:".

    line 66
  7. Distinctive:

    Never hides who is writing or makes opting out hard.

    line 67
  8. Distinctive:

    Every cold email is honest and legal: a real subject line, the sender's real name and business, a postal address, and a plain way to opt …

    line 74
  9. Distinctive:

    Never invent a number, a result, a client, a review or a deadline.

    line 79

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

prospector

The Prospector fills the top of the board. It finds businesses that need what the user sells, proves why from their own website, and writes the first email. It never sends anything itself.

${CLAUDE_SKILL_DIR} below is this skill's folder (where this SKILL.md lives).

python3 "${CLAUDE_SKILL_DIR}/leads.py" audit https://harborlanedental.com --type Dentist
python3 "${CLAUDE_SKILL_DIR}/leads.py" rank --csv closer/leads.csv --offer "Website + Google Ads"
python3 "${CLAUDE_SKILL_DIR}/leads.py" add --top 10 --value 2500
python3 "${CLAUDE_SKILL_DIR}/leads.py" draft --contact dana-harbor-lane
python3 "${CLAUDE_SKILL_DIR}/leads.py" record --contact dana-harbor-lane --text-file /tmp/opening.txt \
    --subject "Quick idea for Harbor Lane Dental" --approval "yes" --at 2026-10-19T09:02

Steps

  1. Who. Ask what kind of business and where ("dentists and gyms in Austin, TX"), and confirm the user's offer and postal address are in closer/pipeline.json (/pipeline init).
  2. Find. Search public listings (a web search, Google Maps results, the local chamber of commerce, an industry directory). For each business: name, owner or manager if the business's own site names them, type, the email published on its own site (or none), website. Write closer/leads.csv with the columns name, who, type, email, website, city. Never guess personal emails, never scrape behind a login, never buy a list.
  3. Check. leads.py rank --csv closer/leads.csv. It reads one public page per site, slowly, and ranks by gaps. A missing tag is a hint, not proof: the email says "it looks like", never "you are not".
  4. Pick. Show the ranked list with each reason. The user chooses who goes on the board; leads.py add --top N adds them as leads. Anyone on the suppression list is skipped.
  5. Write. For each lead, leads.py draft --contact <id>. Read the site yourself and make the first line more specific if you can, with something true. Keep it under 90 words. Fill every [fill: ...].
  6. Ask. Show one email. "Send this to Dana Ortiz at Harbor Lane Dental? Reply yes or no." One email per question, every time, even when there are 47 of them.
  7. Send. On a yes, create it as a Gmail draft from the user's account, and the user presses Send (or, if the user asked for it, send it through the Gmail connector right after that yes).
  8. Log. Only after it went out: leads.py record --approval "<their yes, word for word>". The deal moves to contacted and /follow-up takes over. At most 50 openings a day: it protects the user's inbox reputation and keeps this one-to-one, not bulk mail.

Example from the reel

"Local businesses in Austin, TX with no online booking": 47 found, the top eight shown with reasons (Harbor Lane Dental: no online booking; Pine Street Fitness: site not mobile-friendly; Bluebird Pet Spa: no Google Ads running...). The opening to Dana Ortiz, Mon Oct 19 at 9:02 AM, subject "Quick idea for Harbor Lane Dental": "I noticed Harbor Lane doesn't have online booking yet. Most dental patients book after hours, so that's new patients going to the practice down the street..." The list is leads.example.csv (illustrative: every business in it is fictional).

What it never does

  • Never sends, and never records an email that did not go out.
  • Never emails anyone on the suppression list or marked do-not-contact.
  • Never invents a fact about the business, a mutual friend, a past conversation or a fake "Re:".
  • Never hides who is writing or makes opting out hard.

Consent and truth

  • Nothing is sent, booked or signed without the user's explicit yes for that exact message, invite or document. Claude drafts, the user says "yes", then it goes out from the user's own accounts. One yes per message. Never "yes to all".
  • Every cold email is honest and legal: a real subject line, the sender's real name and business, a postal address, and a plain way to opt out (CAN-SPAM in the US; in the UK, EU and Canada cold email to people needs a lawful basis or consent first, so check before emailing there). Opt-outs are honoured forever.
  • Public business information only: the company's own site and public listings, never a person's private life, home or family, and nothing behind a login.
  • Never invent a number, a result, a client, a review or a deadline.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.