agentleFS
agenticlukeagenticluke/lead-intelligence-plus/skill/SKILL.md

lead-intelligence

Skill0 starsChanged 48 days agoMITView on GitHub

Find, rank, and contact strong leads. Use agent-based signal scores, shared contact ranks, warm intro paths, source-based voice matching, and channel-specific drafts for email, LinkedIn, and X. Use when the user wants to find, screen, or contact high-value people.

  • Reads credentials

9 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use motion-advanced, dart-flutter-patterns and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • renepfSkill

    motion-advanced

    Advanced motion patterns for React / Next.js — drag & drop, gestures, text animations, SVG path drawing, custom hooks, imperative sequences (useAnimate), loaders, and the full API decision tree. Requires motion-foundations.

    Also in 4 projects that use this

  • RojiosSkill

    dart-flutter-patterns

    Production-ready Dart and Flutter patterns covering null safety, immutable state, async composition, widget architecture, popular state management frameworks (BLoC, Riverpod, Provider), GoRouter navigation, Dio networking, Freezed code generation, and clean architecture.

    Also in 5 projects that use this

  • RojiosSkill

    defi-amm-security

    Security checklist for Solidity AMM contracts, liquidity pools, and swap flows. Covers reentrancy, CEI ordering, donation or inflation attacks, oracle manipulation, slippage, admin controls, and integer math.

    Also in 5 projects that use this

  • renepfSkill

    prediction-market-oracle-research

    Research prediction markets as data sources or oracle signals for products, agents, dashboards, and corporate decision intelligence. Use for source-grounded analysis of market-implied probabilities, caveats, and integration patterns without investment advice.

    Also in 3 projects that use this

  • arsalllsSkill

    network-config-validation

    Pre-deployment validation of Cisco IOS/IOS-XE configuration — catching missing saves, mismatched ACLs, overlapping subnets, duplicate IPs, missing route-maps, and dangerous commands before they cause outages.

    Also in 4 projects that use this

  • ronmkrSkill

    quarkus-security

    Quarkus Security best practices for authentication, authorization, JWT/OIDC, RBAC, input validation, CSRF, secrets management, and dependency security.

    Also in 4 projects that use this

  • +2 more from renepf
  • +1 more from Rojios

The file

Show its rules and text

We split this skill into the rules it gives an agent

83 rules. 0 are common, 79 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 9 edited versions we read keep these.

  • 79

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill when the user wants to:

    line 13
  2. Distinctive:

    Do not use it for spam or mass sends.

    line 23
  3. Distinctive:

    Use only data the user may access.

    line 27
  4. Distinctive:

    Treat private data with care.

    line 28
  5. Distinctive:

    Do not guess facts, email addresses, or social links.

    line 29
  6. Distinctive:

    Add a source and date for each key fact.

    line 31
  7. Distinctive:

    Do not claim two people know each other unless a source shows it.

    line 32
  8. Distinctive:

    Do not send or post without clear user approval.

    line 33
  9. Distinctive:

    Follow each site's rules and rate limits.

    line 34
  10. Distinctive:

    Stop if a login check, CAPTCHA, or access block appears.

    line 35
  11. Distinctive:

    Do not use traits like race, faith, health, age, sex, or politics to score a lead.

    line 36
  12. Distinctive:

    Remove repeat people before scoring.

    line 37
  13. Distinctive:

    If two people have the same name, keep them apart until their identity is clear.

    line 38
  14. Very specific:

    Exa MCP: Search for people, firms, news, and other signals with web_search_exa.

    line 44
  15. Very specific:

    X API: Check public profiles, recent posts, follows, and shared contacts when allowed.

    line 45
  16. Distinctive:

    If a required tool is missing, say what is missing.

    line 47
  17. Distinctive:

    LinkedIn: Use an approved API if it exists.

    line 51
  18. Distinctive:

    Apollo or Clay: Check facts only if the user has access.

    line 52
  19. Distinctive:

    GitHub MCP: Check public work for developer leads.

    line 53
  20. Distinctive:

    Browser control: Use only when an API cannot do the needed read task.

    line 55
  21. Distinctive:

    Before searching, get these facts:

    line 74
  22. Distinctive:

    If key facts are missing, ask short questions.

    line 86
  23. Distinctive:

    Search each field and role.

    line 90
  24. Distinctive:

    Check that the role is still current.

    line 96
  25. Distinctive:

    Keep separate records when identity is not clear.

    line 97
  26. Distinctive:

    Do not turn a search result into a fact without checking its source.

    line 98
  27. Distinctive:

    Use only calls supported by the tool that is present.

    line 116
  28. Distinctive:

    Use this base score:

    line 120
  29. Distinctive:

    Use the same rules for every lead.

    line 145
  30. Distinctive:

    Do not give points for missing data.

    line 146
  31. Distinctive:

    If place does not matter, move its 10% weight across the other useful signals.

    line 147
  32. Distinctive:

    If past contact cannot be checked, move its 5% weight in the same way.

    line 148
  33. Distinctive:

    Keep the raw score and the reason for each part.

    line 149
  34. Distinctive:

    Add confidence: high, medium, or low.

    line 150
  35. Distinctive:

    Do not use follower count alone as proof of value.

    line 153
  36. Distinctive:

    Weak: follow, like, or old public link

    line 173
  37. Distinctive:

    Unknown: not enough proof

    line 174
  38. Very specific:

    Use social-graph-ranker when the user asks for a stand-alone graph report, graph math, or score tuning.

    line 176
  39. Distinctive:

    When used inside this skill, apply:

    line 178
  40. Distinctive:

    Do not treat this math as proof of a close bond.

    line 192
  41. Distinctive:

    Tier 3: No sound path. Use direct outreach.

    line 198
  42. Distinctive:

    Look for the shortest sound path.

    line 218
  43. Distinctive:

    Do not call a path warm when it rests only on a follow or old like.

    line 234
  44. Distinctive:

    Use the newest sound source.

    line 258
  45. Distinctive:

    Keep the exact source for each claim.

    line 259
  46. Distinctive:

    Do not copy long text from a source.

    line 261
  47. Distinctive:

    Do not use stale news as a fresh opening line.

    line 262
  48. Distinctive:

    Do not add private home, family, or health facts.

    line 263
  49. Distinctive:

    Do not start with a stock sales pitch.

    line 267
  50. Very specific:

    If voice matters, run brand-voice first.

    line 269
  51. Distinctive:

    If live X access is allowed, read a small set of recent original posts.

    line 271
  52. Distinctive:

    If no voice sample exists, use plain, calm words.

    line 273
  53. Distinctive:

    Use this order unless the facts point to a better choice:

    line 277
  54. Distinctive:

    Use one main channel first.

    line 284
  55. Distinctive:

    Use for high-value cold notes, warm intros, deals, and investor contact.

    line 288
  56. Distinctive:

    Keep the subject short and clear.

    line 290
  57. Distinctive:

    Use Apple Mail or Mail.app only when it is available and allowed.

    line 292
  58. Distinctive:

    Do not send without clear approval.

    line 293
  59. Distinctive:

    Do not guess an email address.

    line 294
  60. Distinctive:

    Use when the lead is active there, the shared link is there, or no checked email exists.

    line 298
  61. Distinctive:

    Keep it shorter than email.

    line 300
  62. Distinctive:

    Do not use fake praise.

    line 302
  63. Distinctive:

    Use when the lead posts often and a recent post gives real context.

    line 306
  64. Distinctive:

    Keep it very short.

    line 308
  65. Distinctive:

    Do not fake a reply just to get seen.

    line 310
  66. Distinctive:

    Do not post or send without approval.

    line 311
  67. Distinctive:

    If the list is large, show the top group first and offer the rest as a simple CSV or table.

    line 383
  68. Distinctive:

    If Exa fails, use other allowed public sources and mark lower confidence.

    line 387
  69. Distinctive:

    If X fails, skip X-only signals.

    line 388
  70. Distinctive:

    If LinkedIn blocks access, stop using it.

    line 389
  71. Distinctive:

    If sources disagree, show the conflict.

    line 390
  72. Distinctive:

    If a role is old, do not score it as current.

    line 391
  73. Distinctive:

    If no warm path is sound, use cold outreach.

    line 392
  74. Distinctive:

    If no email is checked, do not make one up.

    line 393
  75. Distinctive:

    If there are too few good leads, return fewer leads and explain why.

    line 394
  76. Distinctive:

    If a lead asks not to be contacted, remove them.

    line 395
  77. Distinctive:

    If the user asks for a send, show the final message, target, and channel before asking for approval.

    line 396
  78. Distinctive:

    Never print secret values.

    line 416
  79. Distinctive:

    If an agent is missing, do the step in the main flow.

    line 427
  80. Distinctive:

    Search Exa for people and firms.

    line 443
  81. Distinctive:

    Check current roles and remove repeat names.

    line 444
  82. Distinctive:

    Check the user's allowed X graph for shared contacts.

    line 446
  83. Distinctive:

    Check recent firm news and public posts.

    line 448

“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “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

Lead Intelligence

Find, rank, and reach strong leads. Use public facts, social links, and recent activity to choose the best people and contact paths.

When to Use

Use this skill when the user wants to:

  • Find leads in a field
  • Build a list for sales, funding, or a deal
  • Learn who to contact
  • Find a warm intro
  • Score or rank a contact list
  • Map shared contacts
  • Draft messages for email, LinkedIn, or X

Do not use it for spam or mass sends.

Safety Rules

  • Use only data the user may access.
  • Treat private data with care.
  • Do not guess facts, email addresses, or social links.
  • Mark facts that could not be checked.
  • Add a source and date for each key fact.
  • Do not claim two people know each other unless a source shows it.
  • Do not send or post without clear user approval.
  • Follow each site's rules and rate limits.
  • Stop if a login check, CAPTCHA, or access block appears.
  • Do not use traits like race, faith, health, age, sex, or politics to score a lead.
  • Remove repeat people before scoring.
  • If two people have the same name, keep them apart until their identity is clear.

Needed Tools

Required

  • Exa MCP: Search for people, firms, news, and other signals with web_search_exa.
  • X API: Check public profiles, recent posts, follows, and shared contacts when allowed. Read access may use X_BEARER_TOKEN. Write access may also need X_CONSUMER_KEY, X_CONSUMER_SECRET, X_ACCESS_TOKEN, and X_ACCESS_TOKEN_SECRET.

If a required tool is missing, say what is missing. Continue with user-given data or other allowed sources. Lower the score confidence when proof is weak.

Optional

  • LinkedIn: Use an approved API if it exists. Browser use must follow site rules.
  • Apollo or Clay: Check facts only if the user has access.
  • GitHub MCP: Check public work for developer leads.
  • Apple Mail or Mail.app: Make email drafts. Never send by default.
  • Browser control: Use only when an API cannot do the needed read task.

Work Flow

1. Set the target
2. Find people
3. Check identity and facts
4. Score signals
5. Rank shared contacts
6. Find warm paths
7. Add useful facts
8. Pick one main channel
9. Draft the message
10. Ask before any send or post

Step 1: Set the Target

Before searching, get these facts:

  • Goal
  • Field
  • Roles
  • Places, if they matter
  • Firm size or stage, if it matters
  • Number of leads
  • Must-have rules
  • Exclude rules
  • Time range for recent signals

If key facts are missing, ask short questions. If the user says to use your best guess, list those guesses before the results.

Step 2: Find and Check People

Search each field and role. Keep the source URL, source date, and date found.

For each person:

  1. Match the name, role, firm, and public profile.
  2. Remove repeat records.
  3. Check that the role is still current.
  4. Keep separate records when identity is not clear.
  5. Do not turn a search result into a fact without checking its source.

Example search plan:

target_fields = ["prediction markets", "AI tools", "developer tools"]
target_roles = ["founder", "CEO", "CTO", "VP Engineering", "investor"]
target_places = ["San Francisco", "New York", "London", "remote"]

for field in target_fields:
    for role in target_roles:
        results = web_search_exa(
            query=f"{field} {role}",
            numResults=20
        )
        # Check identity, save sources, remove repeats, then score.

Use only calls supported by the tool that is present. Do not make up API names or fields.

Step 3: Score Signals

Use this base score:

SignalWeightCommon source
Role match30%Exa, LinkedIn
Field match25%Firm site, Exa
Recent topic activity20%X, news, blog posts
Reach or public impact10%X, talks, public work
Place match10%Firm site, LinkedIn
Past contact with the user5%X or user records

Score each signal from 0 to 100:

lead_score =
  role_match × 0.30 +
  field_match × 0.25 +
  recent_activity × 0.20 +
  reach × 0.10 +
  place_match × 0.10 +
  past_contact × 0.05

Rules:

  • Use the same rules for every lead.
  • Do not give points for missing data.
  • If place does not matter, move its 10% weight across the other useful signals. State the new weights.
  • If past contact cannot be checked, move its 5% weight in the same way.
  • Keep the raw score and the reason for each part.
  • Add confidence: high, medium, or low.
  • A high score with low confidence is not a sure lead.
  • Recent activity should fit the user's chosen time range. Use 30 days by default.
  • Do not use follower count alone as proof of value.

Step 4: Rank Shared Contacts

For each strong lead, look for people who may give a real intro.

Rank each shared contact by:

FactorWeight
Number and strength of target links40%
Current role and firm20%
Place match15%
Field match15%
Clear public identity10%

A follow does not prove a close bond. Label each link:

  • Strong: direct work, investment, or recent public contact
  • Medium: clear shared group, school, firm, or event
  • Weak: follow, like, or old public link
  • Unknown: not enough proof

Use social-graph-ranker when the user asks for a stand-alone graph report, graph math, or score tuning.

When used inside this skill, apply:

B(m) = sum of [target weight × path decay]
R(m) = outside bridge score × [1 + engagement boost]

Where:

  • m is the shared contact.
  • A short path gets more points.
  • A long path gets fewer points.
  • Recent, real contact may add a small boost.
  • State the chosen decay and boost values.
  • Do not treat this math as proof of a close bond.

Use these tiers:

  • Tier 1: Strong direct path. Ask for a warm intro.
  • Tier 2: Some proof, but not enough. Ask only with care.
  • Tier 3: No sound path. Use direct outreach.

Report format:

Shared Contact Rank

1. Jane Smith (@jane)
   Score: 92
   Role: Partner at Acme Ventures
   Place: San Francisco
   Linked leads: 7
   Best path: Jane invested in Target One's firm
   Link strength: Strong
   Proof: [source URL]
   Checked: 2026-09-24

Step 5: Find Warm Paths

Look for the shortest sound path.

User -> shared contact -> target
User -> shared contact -> target firm
User -> shared event -> target

Rank path types in this order:

  1. Direct shared contact
  2. Investor or adviser link
  3. Past coworker or school link
  4. Shared event or project
  5. Public content contact

Do not call a path warm when it rests only on a follow or old like. If no sound path exists, say so.

Step 6: Add Useful Facts

For each lead, collect only facts that help the outreach:

  • Full name
  • Current role and firm
  • Firm size and funding stage, if known
  • Recent firm news
  • Public posts from the last 30 days
  • Shared work or interests
  • Product launches, funding, or hiring news
  • Public developer work, when it fits

Possible sources:

  • Exa for firm pages, news, and blogs
  • X for public posts and profile facts
  • GitHub for public code work
  • LinkedIn for work and school facts, when access is allowed

Rules:

  • Use the newest sound source.
  • Keep the exact source for each claim.
  • Note conflicts instead of hiding them.
  • Do not copy long text from a source.
  • Do not use stale news as a fresh opening line.
  • Do not add private home, family, or health facts.

Step 7: Match the User's Voice

Do not start with a stock sales pitch.

If voice matters, run brand-voice first. Reuse its VOICE PROFILE. Do not make a new voice profile inside this skill.

If live X access is allowed, read a small set of recent original posts. Skip reposts when possible. If X is not available, use text the user gave you, or use sound samples from their site or work files.

If no voice sample exists, use plain, calm words. Say that no voice sample was found.

Step 8: Pick the Main Channel

Use this order unless the facts point to a better choice:

  1. Warm intro by email
  2. Direct email
  3. LinkedIn message
  4. X direct message or public reply

Use one main channel first. Use more than one only when the user asks, or when there is a clear reason and enough time between messages.

Email

Use for high-value cold notes, warm intros, deals, and investor contact.

  • Keep the subject short and clear.
  • Make a draft first.
  • Use Apple Mail or Mail.app only when it is available and allowed.
  • Do not send without clear approval.
  • Do not guess an email address.

LinkedIn

Use when the lead is active there, the shared link is there, or no checked email exists.

  • Keep it shorter than email.
  • Name one real reason for the note.
  • Do not use fake praise.

X

Use when the lead posts often and a recent post gives real context.

  • Keep it very short.
  • Refer to a real post.
  • Do not fake a reply just to get seen.
  • Do not post or send without approval.

Step 9: Draft Outreach

For each lead, return:

  1. Main channel
  2. Why that channel fits
  3. One checked fact used in the opening
  4. Message draft
  5. One optional follow-up
  6. Source links
  7. Confidence level

Warm Intro Request

Include:

  • One clear ask
  • One short reason the intro makes sense
  • A short note that is easy to forward

Avoid:

  • A long firm story
  • Many proof claims
  • A funding-style form letter
  • More than one ask

Direct Outreach

Include:

  • A true, recent opening
  • A clear reason for the fit
  • A small next step

Avoid:

  • Empty praise
  • A list of product parts
  • Vague lines like "Would love to connect"
  • Pushy questions
  • Fake closeness
  • Raw merge fields
  • The same text for every channel

A follow-up should add one useful fact. It should not just say "checking in."

Result Format

Return a table first:

RankPersonRoleScoreConfidenceBest pathMain channel

Then give a short record for each top lead:

Name:
Role and firm:
Why this person:
Score and confidence:
Best path:
Path strength:
Main channel:
Source facts:
Draft:
Follow-up:
Sources:

If the list is large, show the top group first and offer the rest as a simple CSV or table.

Tool Failure and Edge Cases

  • If Exa fails, use other allowed public sources and mark lower confidence.
  • If X fails, skip X-only signals. Rebalance the score and state the new weights.
  • If LinkedIn blocks access, stop using it. Do not try to bypass the block.
  • If sources disagree, show the conflict.
  • If a role is old, do not score it as current.
  • If no warm path is sound, use cold outreach.
  • If no email is checked, do not make one up.
  • If there are too few good leads, return fewer leads and explain why.
  • If a lead asks not to be contacted, remove them.
  • If the user asks for a send, show the final message, target, and channel before asking for approval.

Setup

# Needed for X and Exa
export X_BEARER_TOKEN="..."
export EXA_API_KEY="..."

# Needed only for X write actions
export X_ACCESS_TOKEN="..."
export X_ACCESS_TOKEN_SECRET="..."
export X_CONSUMER_KEY="..."
export X_CONSUMER_SECRET="..."

# Optional
export LINKEDIN_COOKIE="..."
export APOLLO_API_KEY="..."

Never print secret values. Never place them in a report or draft.

Agents

The agents/ folder may include:

  • signal-scorer: Finds and ranks leads.
  • mutual-mapper: Maps shared contacts and warm paths.
  • enrichment-agent: Checks person and firm facts.
  • outreach-drafter: Writes a message for each channel.

If an agent is missing, do the step in the main flow. Do not skip the checks.

Concrete Example

User request:

Find 20 people in prediction markets who may want our developer tool.
Focus on founders and heads of engineering in the US.
Find warm intro paths and draft email notes.
Do not send anything.

Work:

  1. Set the target to US founders and engineering leads.
  2. Search Exa for people and firms.
  3. Check current roles and remove repeat names.
  4. Score role fit, field fit, recent work, reach, place, and past contact.
  5. Check the user's allowed X graph for shared contacts.
  6. Mark each path as strong, medium, weak, or unknown.
  7. Check recent firm news and public posts.
  8. Rank the 20 best checked leads.
  9. Draft one email for each lead.
  10. Return drafts only. Do not send.

Sample result:

1. Maya Chen
Role and firm: CTO at Example Market
Score and confidence: 88, high
Best path: Alex Lee worked with Maya at Sample Labs
Path strength: Strong
Main channel: Warm intro by email
Why: Alex has a checked work link to Maya
Opening fact: Example Market launched a public API this month
Draft:
Hi Alex,

Would you be open to an intro to Maya Chen at Example Market? Their new API work looks close to the tool we are building for faster test runs. I think a short talk could help both teams see if there is a fit.

Here is a note you can forward:

Hi Maya, Luke is building a tool that helps teams test market APIs with less setup. He saw Example Market's new API launch and thought the work may fit your team. Would you be open to a 15-minute chat?

Thanks,
Luke

Sources:
- [Current role URL]
- [API launch URL]
- [Shared work link URL]

Related Skills

  • brand-voice: Build and reuse a clear voice profile.
  • connections-optimizer: Review and improve the user's network before outreach.
  • social-graph-ranker: Make a stand-alone graph report or tune graph scores.

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.