agentleFS
SELAT-AISELAT-AI/selat-skills/skills/email-campaign/SKILL.md

email-campaign

Skill2 starsChanged 40 days agoApache-2.0View on GitHub

Use this skill for one fixed, read-only email-campaign preparation bundle when the user has a complete target with a supported industry, company domain and name, target person's first and last name, and a matching known work email. Triggers on "prepare an outreach research bundle", "build a verified campaign seed list around this lead", or "cross-check this work email and company before outreach". It discovers 10 similar-size industry companies, retrieves domain email patterns, infers the target's email from name and domain, separately verifies the supplied email, enriches the person, and adds company context. It does not draft or send email. The CLI runs all six paid MPP steps; verification-only, discovery-only, and subset requests should use a smaller workflow.

7 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 7 edited versions we read keep these.

  • 3

    Distinctive

    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. Distinctive:

    Use this skill to prepare a research and verification bundle for one known business lead and a small prospect-company seed list.

    line 17
  2. Distinctive:

    Only after approval and a spendable Gateway balance, arm the approved cumulative cap, run the bundle once, and disarm the budget after …

    line 64
  3. Distinctive:

    Campaign preparation only: No manifest step drafts or sends email.

    line 125
  4. Very specific:

    Fiber request shape matters: Use industriesV2.anyOf and employeeCountV2 bounds.

    line 135
  5. Very specific:

    Per-step caps are not cumulative: Every step sets its own maxAmount (about 1.4–1.6x its live quote).

    line 142

“Common” is measured: kept by at least 6 in 10 of the 7 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

email-campaign

When To Use

Use this skill to prepare a research and verification bundle for one known business lead and a small prospect-company seed list. It combines:

  • ten companies matching an industry and 50–500 employee filter;
  • domain-level email patterns and addresses;
  • one target person's inferred work email;
  • technical deliverability verification of a supplied work email;
  • person enrichment for personalization; and
  • company firmographic context.

This skill does not compose, schedule, or send messages. It does not prove that the recipient consented to contact. Use the results only for lawful, targeted business outreach; honor suppression lists and opt-outs, and do not use it for phishing, harassment, sensitive targeting, or bulk unsolicited spam.

The manifest is a fixed six-call pipeline. If the user wants only email verification, only company discovery, or a cheaper subset, use a smaller direct workflow instead of running this skill.

Workflow

  1. Install the vetted recipe:

    selat skill install email-campaign
  2. Collect all six inputs and check that email, firstName, lastName, company, and domain describe the same target. Use a supported Fiber industry value such as Software.
  3. Probe all six payment challenges for free before wallet setup or spending:

    selat skill verify ~/.config/selat/skills/email-campaign \
      --industry Software \
      --domain <bare-domain> \
      --firstName <first-name> \
      --lastName <last-name> \
      --company "<company-name>" \
      --email <known-work-email> \
      --live-probe
  4. Show every live quote, the expected cumulative total, and a proposed absolute session cap. Obtain explicit approval for that exact workload.
  5. Only after approval and a spendable Gateway balance, arm the approved cumulative cap, run the bundle once, and disarm the budget after success or failure:

    selat budget start --amount <approved-cumulative-cap>
    selat skill run email-campaign \
      --industry Software \
      --domain <bare-domain> \
      --firstName <first-name> \
      --lastName <last-name> \
      --company "<company-name>" \
      --email <known-work-email>
    selat budget stop

The CLI compiles each manifest entry into an independently capped selat-pay call and continues across steps by default. Check the per-step result and payment history before reporting success or considering a retry.

Fixed steps

  1. Fiber company search — return up to ten companies using the supplied industry and a fixed 50–500 employee range.
  2. Hunter domain search — retrieve domain-level email patterns and results.
  3. Hunter email finder — infer the named target's work email from domain and name.
  4. Hunter email verifier — evaluate technical deliverability for the separately supplied email once.
  5. Apollo people enrichment — add person and employer context.
  6. Company Enrich lookup — add company firmographics by domain.

Inputs And Outputs

ParamRequiredDefaultDescription
industryyesnoneSupported Fiber industry value, such as Software.
domainyesnoneBare target company domain matching company and email.
firstNameyesnoneTarget person's first name.
lastNameyesnoneTarget person's last name.
companyyesnoneTarget company name corresponding to the domain.
emailyesnoneKnown work email to verify; must match the target identity.

Return a source-labelled preparation report, not a raw-data dump:

  1. target identity and company consistency check;
  2. supplied email verdict versus the separately inferred email;
  3. person/company fields useful for careful personalization;
  4. ten-company discovery results as a seed list, not automatically approved recipients;
  5. provider disagreements, missing data, and confidence limits; and
  6. per-step success/failure and final spend.

Gotchas

  • A found email can be a pattern guess. On accept-all (catch-all) domains, Hunter's email finder returns source_type: "generated" (built from the domain's email pattern, with no published source) yet still marks it verification.status: "valid". If source_type is generated or accept_all is true, report the address as an unconfirmed pattern guess, not a verified contact.
  • Campaign preparation only. No manifest step drafts or sends email.
  • Fixed pipeline, not a menu. The current CLI has no step selector and runs all six calls. Do not promise that Fiber, domain search, or enrichment can be skipped within selat skill run.
  • No inter-step dataflow. Fiber results are not fed into Hunter; Hunter's inferred email is not automatically passed to the verifier. The verifier checks the user-supplied email, which is why all inputs are required.
  • One verifier call only. Hunter's verifier already reports deliverability, bounce risk, and catch-all status. Paying for the identical request twice does not create independent confirmation.
  • Fiber request shape matters. Use industriesV2.anyOf and employeeCountV2 bounds. The older industries and employee_count_min/max fields are not the current schema. This manifest pins pageSize to ten.
  • Pagination is not in this skill. A continuation needs the first response's billing.requestId as parentRequestId with unchanged filters. Handle that as a separately reviewed operation.
  • Per-step caps are not cumulative. Every step sets its own maxAmount (about 1.4–1.6x its live quote). The top-level maxAmount ($0.30) is only the fallback for a step that declares no cap — it is not a full-run cap. The separately armed session budget is the only run-wide ceiling.
  • Live quote is authoritative. Free live probes on 2026-10-04 quoted Fiber $0.21 + Hunter domain-search $0.01365 + email-finder $0.01365 + email-verifier $0.0084 + Apollo $0.0399 + Company Enrich $0.012862 ≈ $0.298 for all six calls (sum of per-step caps $0.432). Fiber prices by result count, so it dominates the total. Re-probe before every approval because prices can change.
  • Paid failure can still cost money. The runner continues to later steps by default. Never retry a charged failure without a fresh quote and approval.
  • Deliverability is not permission. A technically valid address does not establish consent or make outreach lawful.

Validation

Validate structure locally:

selat skill validate ./skills/email-campaign
npm run validate

Free end-to-end quote validation uses all six coherent inputs and --live-probe as shown in Workflow Step 3. A passing receipt must report six reachable routed-mpp calls, each within its per-step cap. Do not add --pay without separate approval and an armed session budget.

Useful single-endpoint probes while debugging (free; never settle):

--chain base in the probe commands below is only the flag selat-pay requires today — a probe reads a free, chain-independent quote and never settles. A real paid run resolves the settlement chain from your funded Circle Gateway balance, not the manifest.

  • selat-pay POST "https://mpp.orthogonal.com/fiber/v1/company-search" --body '{"searchParams":{"industriesV2":{"anyOf":["Software"]},"employeeCountV2":{"lowerBoundExclusive":50,"upperBoundInclusive":500}},"pageSize":10}' --chain base --max-amount 0.30 --probe-only --live-probe
  • selat-pay POST "https://hunter.mpp.paywithlocus.com/hunter/email-verifier" --body '{"email":"john@stripe.com"}' --chain base --max-amount 0.012 --probe-only --live-probe
  • selat-pay GET "https://mpp.orthogonal.com/company-enrich/companies/enrich?domain=stripe.com" --chain base --max-amount 0.02 --probe-only --live-probe

References

  • manifest.json — the fixed, machine-readable six-call payment recipe.
  • references/endpoints.md — pinned endpoints, request shapes, current quotes, and caps.
  • references/agent-skill-authoring-sop.md — authoring standard.
  • evals/evals.json — routing, safety, and approval-behavior evals.
  • Fiber company-search schema — https://docs.fiber.ai/build/sdks
  • selat-pay — https://github.com/SELAT-AI/selat-pay

Third-party API names are trademarks of their respective owners; this skill only routes approved payments to their MPP endpoints.

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.