Install
$ agentstack add skill-xuxchloris-hermes-export-skills-prospect-discovery ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Prospect Discovery
Overview
Create a customer discovery strategy before research and scoring. The core rule is to use approved business sources, record where each lead came from, and pass candidates to company-research and prospect-scoring for evidence review.
When to Use
Use this skill when the user asks how to find overseas customers, build a prospect list, plan search keywords, use a collection API, review public directories, or prepare leads for outreach.
Use it for company-level discovery planning and evidence collection before outreach drafting.
Inputs
- Product context from
product-loader - Market rules from
MARKET.yaml - Discovery settings from
DISCOVERY.yaml - Target countries or regions
- Approved collection API details, if provided by the user
Outputs
{
"collection_api_status": "configured|none|needs_user_input",
"keyword_strategy": [],
"target_regions": [],
"exclude_terms": [],
"allowed_sources": [],
"candidate_fields": [],
"source_status": "verified|search_tasks_only|source_unavailable",
"source_evidence_rules": [],
"risk_notes": [],
"next_steps": ["company-research", "prospect-scoring"]
}
Procedure
- Read
DISCOVERY.yamlbefore asking about collection tooling. - If
collection_api.provideris missing, ask the user once for the collection API. If there is no API, writenoneintoDISCOVERY.yamlwhen file editing is available. - If the user provides an approved API after setup, write its provider, endpoint, method, API key environment variable, auth header, query parameters, response mapping, pagination, rate limit, and retry policy into
DISCOVERY.yaml; keep raw secrets in environment variables. - Read
scraping.engine. Usescrapling-fetcheronly for crawling company pages after a candidate is already known. Do not use browser navigation as the default customer-discovery path. - Run
python tools/collect_prospects.py --discovery --product --output-dirwhen file output is needed. - If the user only names a product or SKU, pass
--product-queryor--skuinstead of rewritingPRODUCT.yaml. - If the agent has already identified source pages during the task, pass them at runtime with
--source-urlinstead of editingDISCOVERY.yaml. - If
discovery_modeisnative_scrapling_spider,scrapling_spider.enabledis true, or runtime--source-urlvalues are provided,tools/collect_prospects.pyroutes totools/scrapling_spider_runner.py, uses Scrapling's nativeSpider, and writescrawl_report.json. - If the agent has MCP access configured, call
tools/scrapling_mcp_server.pythrough thecollect_prospectsMCP tool and pass runtimesource_urlsfor the same native Spider workflow. - When neither a configured API, configured
scrapling_spider.source_urls, nor runtime source URLs are available, create search tasks for Google search results, trade show websites, industry directories, prospect company websites, LinkedIn public summaries, and B2B platform public pages. - If the tool outputs only
prospect_search_tasks.csv, stop and reportsource_status: "search_tasks_only"; ask for a collection API, a user-provided list, or permission to process a specific approved source. - Do not manually browse arbitrary B2B platforms after search tasks are generated.
- Do not return a numbered customer list unless it comes from
prospects.raw.csv, a user-provided prospect file, or fetched company pages with source URLs. - If sources cannot be accessed or provide no usable company records, return
source_status: "source_unavailable"and do not fill the gap with industry knowledge. - With a configured API, produce
prospects.raw.csvandprospects.raw.json. - Build keyword groups from product names, HS codes, applications, buyer types, target regions, and channel terms.
- Add exclude terms for jobs, consumer reviews, unrelated retail-only pages, marketplaces without seller websites, and irrelevant industries.
- Keep each candidate tied to a source URL, company-level signal, and reviewable evidence summary.
- When discovery finds a company name or company link, visit the official website or source-linked company page next and run official website contact search before finalizing the row.
- During official website contact search, check homepage, contact, about, team, catalog, and product pages for visible email and phone values.
- For each candidate, record company name, website, country, business type, source URL, evidence summary, risk notes, contact email, contact phone, email result, and phone result.
- If email or phone is not found during discovery, write
contact_email: "没有",contact_phone: "没有",email_result: "没有", orphone_result: "没有"instead of omitting the fields. - Respect
output_formatsinDISCOVERY.yamlor runtime--formatswhen exportingprospects.raworprospect_search_tasks. - Send candidates with evidence to
company-research; send researched prospects toprospect-scoring.
Verification
DISCOVERY.yamlis checked before asking for collection API details.- Missing API is recorded as
noneinstead of repeatedly asking. - Search tasks are written when no collection API is configured.
- Search tasks are not treated as customer results.
- Browser navigation is not used to continue discovery after search-task output.
- Native Scrapling spider mode accepts configured
scrapling_spider.source_urlsor runtime--source-urlvalues, usestools/scrapling_spider_runner.py, and writescrawl_report.json. - MCP mode uses
tools/scrapling_mcp_server.py, accepts runtimesource_urls, and returns the same output paths as the CLI runner. - A numbered customer list requires
prospects.raw.csv, a user-provided prospect file, or source URLs from fetched company pages. source_unavailableis used when sources do not return usable company records.- API collection writes
prospects.raw.csvandprospects.raw.json. - A company name or company link triggers official website contact search before the candidate is finalized.
prospects.raw.csvalways includescontact_email,contact_phone,email_result, andphone_result; missing contact values are written as没有.output_formatsor runtime--formatscontrols whether the tool writes CSV, JSON, XLSX, or a mix of them.- Configured APIs include response mapping, pagination, rate limit, and retry policy.
- Scrapling is the default scraping backend, and browser modes are enabled only when their dependencies are installed.
- Product or SKU selection can be passed through
--product-queryor--sku. - Every candidate includes a public source URL and evidence summary.
- Every candidate depends on reviewable company-level evidence.
- Next steps include
company-researchbeforeprospect-scoring.
Common Mistakes
| Mistake | Fix | | --- | --- | | Treating search results as verified buyers | Pass candidates to research before scoring | | Filling a requested customer count from industry knowledge | Return source_unavailable or search_tasks_only | | Saving raw API keys in project files | Save only the environment variable name | | Keeping weak source records | Store source URL, date, and evidence summary | | Mixing company and contact evidence | Keep discovery focused on company-level signals |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Xuxchloris
- Source: Xuxchloris/hermes-export-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.