Skip to content
Agentmart
Submit a tool

onboard

Stand the outbound engine up against a new operator's CRM, PhantomBuster account, and ICP.

Skill by mat-lucie

IndexedMIT★ 7
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/mat-lucie-onboard

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Stand the outbound engine up against a new operator's CRM, PhantomBuster account, and ICP. Interviews the operator, generates + conformance-tests a non-Attio CRM adapter when needed, writes config/*.yaml + .env, and verifies with a dry run.

Use cases: sales

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/onboard

What's inside

Skill name
onboard
Description
Stand the outbound engine up against a new operator's CRM, PhantomBuster account, and ICP. Interviews the operator, generates + conformance-tests a non-Attio CRM adapter when needed, writes config/*.yaml + .env, and verifies with a dry run.
License
MIT
Instructions
69 lines in SKILL.md · view on GitHub

Files (2)

  • SKILL.md
  • onboarding-spec.md · references/

SKILL.md (first lines)

# /onboard

The install-time capstone. Run this once, per new deployment, to take the
outbound engine from a fresh checkout to a running, operator-specific install.
It is an **interview + orchestration** skill: it asks the operator what their
CRM / PhantomBuster / ICP are, then wires the engine's existing seams and config
artifacts to match — it does not change the engine.

## What it produces

By the end of a successful run:

- `config/crm.yaml` — CRM vendor + (when consumed) field/stage mapping.
- `config/phantombuster.yaml` — phantom (agent) IDs + degree-check backend.
- `config/icp.yaml` — the operator's full ICP (keywords, weights, thresholds,
  the LLM qualifier prompt slots).
- `.env` — every secret (API keys, LinkedIn cookies, user-agent), referenced
  **by name** from the yaml files, never inlined into them.
- For a **non-Attio CRM:** a new `clients/crm/<vendor>_provider.py` adapter,
  registered in `clients/crm/factory.py`, **proven correct** by passing the
  conformance suite `tests/crm/test_provider_contract.py`.

## The four phases

1. **CRM hookup** — pick the vendor, gather credentials. Attio uses the
   reference adapter as-is; any other CRM gets an adapter **generated** against
   `clients/crm/base.py` + `clients/crm/CONTRACT.md`, using
   `clients/crm/fake_provider.py` as the structural template (vendor-free,
   no SDK) and `clients/crm/attio_provider.py` only as the worked example of how
   a real vendor's wire JSON gets normalized — its `{"value": ...}` envelope is
   an Attio quirk, not the contract — and **iterated until green** against
   `tests/crm/test_provider_contract.py`.
2. **PhantomBuster setup** — create the phantoms, capture IDs + cookies, choose
   the degree-check backend, validate.
3. **ICP co-definition** — interview the operator, write their ICP, render the
   qualifier prompt, score sample prospects, iterate until they're satisfied.
4. **Verify** — run the daily flow in `--dry-run` against a small sample and
   report readiness.

## How to run it

Follow **[`references/onboarding-spec.md`](references/onboarding-spec.md)** —
the detailed, machine-followable procedure. It is self-contained: an agent with
no prior knowledge of this repo can execute it end to end. Every step cites the
exact file path or command it touches.

Work the phases **in order** — each builds on the last (the CRM must resolve
before the dry run can read the pipeline; the ICP must load before scoring).
Do not skip the conformance-suite gate in Phase 1 for a non-Attio CRM: a
generated adapter is "done" **only** when that suite is green.

## Honest limitations (read before onboarding a non-Attio CRM)

- **Filter-DSL leak.** `query_object_records(filters=…)` passes the filter body
  through to the adapter as a *vendor-native query* (Attio's DSL today). A
  non-Attio adapter must translate it, or callers that pass a filter stay
  Attio-shaped. Documented in `clients/crm/CONTRACT.md`.
- **Write-path is Attio-coupled today.** `clients/attio_writer.py`'s
  atomicity/`_compensating_rollback` model and its raw-httpx PATCH fallback for
  object types without a typed helper are Attio-specific. The provider seam
  covers the typed reads/writes; the writer's exception model is not yet
  vendor-neutral.
- **Field/stage mapping in `config/crm.yaml` is not yet consumed.** Stage labels
  + field slugs still resolve in code (`models/pipeline.py`, the adapter). Fill
  the mapping for forward-compatibility, but know it is currently inert.

The spec restates each of these at the step where it bites.

From mat-lucie/outbound-sales-agent, MIT.

Signals

Stars
7
Forks
1
Open issues
0
Last commit (this folder)
Jun 10, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from mat-lucie

Cite this page

onboard skill. Agent Mart. https://agentmart.dev/skills/mat-lucie-onboard (last updated 2026-10-24)