npx skills add ...
npx skills add code.deepline.com/deepline-quickstart
Run a quick Deepline demo recipe to show the user how Deepline works.
npx skills add code.deepline.com/deepline-quickstart
Run deepline when it is available. If the shell reports that command is missing, use <workspace-root>/.deepline/runtime/bin/deepline (or the npm-created .cmd shim on Windows). If neither exists, follow https://code.deepline.com/INSTALL.md to set up Deepline.
Run a high-confidence demo recipe to show the user what Deepline can do. Pick the most relevant recipe below, or default to Recipe 1 if no context is given.
Always prefer the hardcoded recipes below. /deepline-gtm is always available as a fallback but should only be used if: (a) a recipe command fails and all fallbacks are exhausted, or (b) the user's ask doesn't match any recipe here. Never invoke it preemptively.
Follow this pattern for every recipe:
This quickstart needs to be fast. Do not run deepline --version, deepline auth status, or separate CLI discovery commands on the fast path. Use the SDK CLI deepline enrich shape with --name quickstart-ny-cto-email and the hyphenated person-linkedin-to-email prebuilt id. If a retry needs command-shape confirmation, use deepline --help or deepline enrich --help.
Goal: Find 5 CTOs at startups in New York with verified emails and LinkedIn profiles.
Data sources: Dropleads (people search) + waterfall email enrichment via person-linkedin-to-email.
Steps:
For the default quickstart, run this whole block as one Bash call. Do not split it into separate tool calls. The call is complete only when deepline enrich exits and writes deepline/data/quickstart_enriched.csv; if the executor returns a running cell, wait on that cell again until it is terminal. Do not inspect the JSON, run csv show, print the CSV with Python, or run extra validation after the enrich command; those checks make the quickstart miss the one-minute budget.
Only use the detailed steps below if the fast path fails.
Note the output CSV path from the result.
First, make sure the CSV has plain string columns named first_name, last_name, and linkedin_url. If the Dropleads result uses fullName and linkedinUrl, normalize those columns locally instead of running a separate Deepline enrichment pass; this quickstart should spend paid work only on the email waterfall. Use full https://www.linkedin.com/in/... URLs.
Then run the waterfall:
Report the output CSV path after this step.
After the fast path finishes, do not run another command just to display rows. Tell the user the enriched CSV path and that emails were filled via the dedicated LinkedIn-to-email waterfall. Mention they can go deeper — phone, firmographics, job change signals — with /deepline-gtm.
Tell the user, then try Dropleads:
If all commands fail, tell the user, then invoke /deepline-gtm:
Find 5 CTOs at startups in New York with their emails and LinkedIn profiles.
set -e
mkdir -p deepline/data
deepline tools execute dropleads_search_people --json --payload '{
"filters": {
"jobTitles": ["CTO"],
"personalStates": {"include": ["New York"]},
"employeeRanges": ["1-10", "11-50", "51-200"]
},
"pagination": {"page": 1, "limit": 5}
}' > deepline/data/quickstart_search.json
python3 - <<'PY'
import csv, json
d = json.load(open("deepline/data/quickstart_search.json"))
leads = (
d.get("result", {}).get("data", {}).get("leads")
or d.get("toolResponse", {}).get("raw", {}).get("leads")
or d.get("leads")
or d.get("output_preview", {}).get("preview")
or []
)
if not leads:
raise SystemExit("No Dropleads leads returned")
with open("deepline/data/quickstart_ny_ctos.csv", "w", newline="") as f:
w = csv.DictWriter(f, ["first_name", "last_name", "company", "title", "linkedin_url"])
w.writeheader()
for r in leads[:5]:
url = (r.get("linkedinUrl") or r.get("linkedin_url") or "").strip()
if url.startswith("http://"):
url = "https://" + url[len("http://"):]
w.writerow({
"first_name": r.get("firstName") or r.get("first_name") or "",
"last_name": r.get("lastName") or r.get("last_name") or "",
"company": r.get("companyName") or r.get("company") or "",
"title": r.get("title") or "",
"linkedin_url": url,
})
PY
deepline enrich --input deepline/data/quickstart_ny_ctos.csv --output deepline/data/quickstart_enriched.csv --name quickstart-ny-cto-email --all \
--with '{"alias":"email","tool":"person-linkedin-to-email","payload":{"linkedin_url":"{{linkedin_url}}"}}'deepline tools execute dropleads_search_people --payload '{
"filters": {
"jobTitles": ["CTO"],
"personalStates": {"include": ["New York"]},
"employeeRanges": ["1-10", "11-50", "51-200"]
},
"pagination": {"page": 1, "limit": 5}
}'deepline enrich --input <normalized_csv> --output <enriched_csv> --name quickstart-ny-cto-email --all \
--with '{"alias":"email","tool":"person-linkedin-to-email","payload":{"linkedin_url":"{{linkedin_url}}"}}'deepline tools execute dropleads_search_people --payload '{
"filters": {
"jobTitles": ["CTO", "Chief Technology Officer"],
"personalCountries": {"include": ["United States"]},
"personalStates": {"include": ["New York"]},
"personalCities": {"include": ["New York"]}
},
"pagination": {
"page": 1,
"limit": 5
}
}'