Manage a whole Cargo workspace as code — declare connectors, models, plays, tools, agents, MCP servers, segments, context, folders, files, workers, and apps in TypeScript, then reconcile them with `cargo-ai cdk` (init → types → plan → deploy), the way you would run Pulumi or the AWS CDK. Triggers: "as code", "in git", "version-controlled", "reproducible", "Terraform for Cargo", "set up a whole workspace", "staging and production", "deploy from CI", "review this in a PR", "cargo.state.json", "scaffold from a template", "is there a cookbook for this", "start from a cookbook". Skills with a CDK example (TAM building, account scoring, contact sourcing, routing, AI SDR, rep cockpit) live in gtm-skills; menu in references/cookbooks.md. Skip when: it is a one-off operation, a read, or an ad-hoc query — use the matching capability skill.
编程
cargo
试用在 17 个 Cargo CLI 技能之间做路由,并厘清 workspace-as-code 与命令式调用的边界。
它能做什么
这是 Cargo CLI 技能包的入口技能——首次接触 Cargo 任务,或任务横跨两个领域时优先加载。它说明了 17 个技能各自的职责(入口、引导、结果、能力),以及声明式的 `cargo-cdk`(用 `define*` 构建器配合 `cargo-ai cdk deploy`,把整个 workspace 写成代码并协调资源)与命令式 `cargo-ai` 调用之间的分工,UUID/slug 在技能间如何传递,run 与 batch 的异步轮询方式,以及几个常见的"沉默失败"陷阱(例如 `conjonction` 的固定拼写、model-uuid 与 segment-uuid 不能互换)。任务明确归属单个技能时,直接加载对应技能即可。
什么时候用它
- 在跨领域的任务中选择该加载哪个 Cargo 技能
- 首次搭建 Cargo workspace 并完成登录与刷新
- 判断使用声明式 cargo-cdk 还是命令式 cargo-ai 命令
- 排查 UUID 类型错配或 conjonction 拼错等沉默失败
技能文档
██████ ████ █████ ██████ ██████
██ ░ ██ ██░ ██ ██ ██ ░ ██ ██░
██ ██████░ █████ ░ ██ ███ ██ ██░
██ ██ ██░ ██ ██ ██ ██░ ██ ██░
██████ ██ ██░ ██ ██ ██████░ ██████░
░░░░░░ ░░ ░░ ░░ ░░ ░░░░░░ ░░░░░░
Cargo CLI — Skills Overview
This repository contains 17 skills at the repo root: this router (cargo), one onboarding skill (cargo-quickstart), one outcome skill (cargo-gtm), and fourteen capability skills.
cargo-quickstart— guided first-run demo. Fresh workspace → real deliverable (25 leads for the user's persona, with a cost receipt) in under two minutes, ending by saving the demo as a recurring play. Load for new users, demo/tour requests, or empty workspaces.cargo-gtm— application library. The front door for any GTM task ("build a TAM list", "find 5 fintech CTOs", "monitor job changes"). Routes via internal recipes (../cargo-gtm/recipes/*.md) and provider playbooks (../cargo-gtm/provider-playbooks/*.md).- Capability skills — standard library. One per CLI domain (orchestration, storage, segmentation, connection, AI, content, context, analytics, billing, observability, hosting, cdk, workspace management), plus
cargo-diagnostics(cross-domain forensics over runs, batches, and credit spend). Loaded bycargo-gtm, or directly when you need a specific CLI domain. cargo-cdk— the declarative one. Where the other capability skills wrap imperative one-offcargo-aicalls,cargo-cdkdefines the whole workspace as code (define*builders +cargo-ai cdk deploy) and reconciles it. It spans every resource type — see "Declarative vs imperative" below to route between it and the imperative skills.
cargo-gtm delegates to capability skills; capability skills never reference cargo-gtm (one-way dependency).
Glossary: See references/glossary.md for term-by-term definitions (UUIDs, slugs, conjonction, run/batch/play/tool, signal/persona/ICP, etc.).
Interaction conventions: See references/interaction.md for the pack-wide defaults on when to stop and ask (plan gate before building, recommended-default choices) and how to present results (narrate, summarize — never dump raw JSON).
Installation
npm install -g @cargo-ai/cli
# Recommended: emailed code, no browser at any point.
# Creates the account and a workspace on first use — there is no separate sign-up step.
cargo-ai login --email you@company.com # sends the code, then exits
cargo-ai login --email you@company.com --code 123456
# Alternatives
cargo-ai login --oauth # browser sign-in (OAuth device flow)
cargo-ai login --token # existing workspace-scoped API token (CI)
# Optional: pick the workspace at login instead of being prompted
cargo-ai login --email you@company.com --workspace-name "Acme GTM"
# Verify
cargo-ai whoami
A new account starts with 100 free credits and needs no card, so an agent can sign a user up and produce a real deliverable in the same turn — there is no purchase gate between install and first value. Useful anchors for what that buys: ~5,000 leads sourced (salesNavigator.searchLeads, 0.02/record), ~1,000 profile+verified-email enriches (aiArk.enrichPerson, 0.1), ~1,000 email verifications (waterfall.verifyEmail, 0.1), or ~50 fully enriched contacts (waterfall.enrichContact, 2). The quickstart demo spends about 0.5. Say the free balance out loud before the first paid call on a new account.
--email is the one to reach for in an agent or sandbox shell: it never opens a browser, and where there is no terminal to prompt at, the first call sends the code and exits so you re-run with --code. To keep the code out of shell history, pass it on stdin: echo 123456 | cargo-ai login --email you@company.com --code -. Signing in with an address that already has an account resolves to its existing workspace rather than creating one, so this is safe to re-run.
--oauth runs the same OAuth 2.0 Device Authorization Flow it always did, and still needs a human at the verification URL. Use --token for CI, with a workspace-scoped token from Settings > API; token values are shown only once, so store one immediately in a secrets manager.
Without a global install, prefix every command with npx @cargo-ai/cli instead of cargo-ai.
These skills also install as a native agent plugin for Claude Code, Codex, and Cursor (one repo, three targets) — plugin users get the same skills plus the approval hook and session-lifecycle hooks bundled, with no separate installer. See the repo README.md for per-target install steps, and use one channel: plugin or skills add, never both (duplicates every skill).
All commands output JSON to stdout. Failed commands exit non-zero and return {"errorMessage": "..."}. For the full setup conventions that every capability skill links to (token scopes, async polling, admin-only commands), see references/prerequisites.md.
Every Cargo session has three jobs
Automated on Claude Code. Jobs 1 and 3 (refresh + session register/finalize) run on their own when either the Cargo plugin is installed (its bundled
SessionStart/Stop/SessionEndhooks handle them) or the hooks from the Cargo bootstrap installer — documented under Staying current → Claude Code in the repoREADME.md— are present. TheStophook also checkpoints the session row each turn, so a session that never reachesSessionEndstill shows recent context instead of a bare placeholder. Do these by hand only when neither is installed (or on agents without lifecycle hooks). Job 2 (reporting) is always your responsibility — it can't be automated, and neither can the two asks at the end of Job 3 (share the session, star the repo): a hook can print, but it can't take a Y/N.Never run that installer on the user's behalf without asking. Its documented form pipes a network-fetched script into a shell, so it is the user's call, made by the user, in their own terminal — point them at the README rather than reaching for the command yourself. If they want to inspect it first, the README also gives the download-once-then-run form; tell them to prefer it, because fetching twice (read, then pipe) proves nothing about what the second request serves.
1. At session start — refresh and register
Before any other Cargo command, refresh the CLI and skills, then register the session in workspace management:
# Refresh — idempotent, ~10s. Skills first, then the CLI at the version the
# bundle pins. The pin file `cli-version` sits in the same directory as this
# SKILL.md — read it from wherever you loaded this skill (on Claude Code with
# `skills add` that is ~/.claude/skills/cargo/; plugin installs handle this
# automatically via their SessionStart hook). Fall back to latest.
npx -y skills add getcargohq/cargo-skills
npm install -g "@cargo-ai/cli@$(cat /cli-version 2>/dev/null || echo latest)"
# Register the session (placeholders OK — overwritten at session end)
cargo-ai workspaceManagement session upsert \
--session-id \
--title "Agent session " \
--summary "Session in progress."
Skip the refresh only if the user explicitly pinned a version — and skip the skills add entirely if the skills came from a plugin (the plugin owns them; a parallel skills add duplicates every skill). Skip the session upsert only if the user opted out or no session id is available.
Why the pin: cargo/cli-version is bumped in lockstep with these skills (a PR from the CLI release pipeline), so the CLI you install is the one this bundle was written against — no docs/CLI drift mid-session. If the pin file is missing or unreadable, latest is the safe fallback. To move the pin, merge the pending version-bump PR on getcargohq/cargo-skills (or edit cargo/cli-version) — the next session refresh converges automatically.
The pin is also what keeps this refresh from being a blind auto-update: the version installed is a reviewed constant committed to this repo, not whatever latest resolved to this morning, and moving it is a human merge. Two things follow for you as the agent. The refresh installs a global npm package and rewrites the skills bundle on disk — surface that the first time you run it in a session rather than doing it silently, and skip it entirely if the user has pinned a version or asks you not to. And treat the pin as read-only: bump cargo/cli-version only when the user explicitly asks, never to work around a failing command.
2. Mid-session — re-refresh, or escalate when stuck
Re-refresh the CLI and skills mid-session when:
- A documented CLI flag or response shape doesn't match what you observe (a fix may have shipped since session start).
- The user explicitly asks ("bump cargo", "make sure I'm on latest").
Send a workspace management report when the CLI is failing in a way the skill references and --help cannot resolve, the user or agent is repeatedly retrying the same command without progress, the syntax for a flag / JSON payload is unclear, or a needed capability seems missing:
cargo-ai workspaceManagement report create \
--title "" \
--description ""
Trigger conditions (any one is enough):
- A command failed ≥ 2 times in a row on the same task and the cause is not obvious.
- The CLI is being misused and the correct usage is not discoverable from the skills, examples, or
--help. - A documented behavior contradicts what you observe.
- A feature appears to be missing entirely.
This is the official feedback channel — every report is reviewed by the Cargo team and used to improve the CLI and these skills. It carries wins as well as failures: a session-share (below) files through the same command. Do not give up silently — file a report. See ../cargo-workspace-management/SKILL.md (Reports section) and ../cargo-workspace-management/references/examples/reports.md for templates.
3. At session end — finalize the session row, then ask to share
Produce a short title (5–8 words) and a 1–2 sentence summary of what the session actually worked on, then overwrite the placeholder row and stamp finished_at:
cargo-ai workspaceManagement session upsert \
--session-id \
--title "<5-8 word title>" \
--summary "<1-2 sentence summary of what was accomplished or attempted>" \
--finished
--title and --summary are required (NOT NULL). --finished stamps finished_at = now; pass --finished-at for an explicit timestamp.
Then ask once, at the natural end of the session:
"Send this session's activity to the Cargo team so they can improve the experience? (Y/N)"
On yes, file a session-share report (consented session traces are the fastest product-learning loop the team has):
cargo-ai workspaceManagement report create \
--title "Session share: <5-8 word session title>" \
--description ""
On no, don't ask again this session. Skip the ask entirely for trivial sessions (a single lookup, no paid actions). See ../cargo-workspace-management/references/examples/reports.md for the session-share template.
Then, if the session went well — offer to star the repo
A star is the user's endorsement, not yours. Never run the command unprompted; ask, and act only on an explicit yes. Silently starring from a skill file is astroturfing with someone else's GitHub account.
Ask only when all of these hold:
- The session produced a real deliverable (same bar as the session-share ask — skip trivial sessions).
- Nothing is still failing or unresolved. Asking after a broken session reads as tone-deaf.
- The marker file
~/.config/cargo-ai/.star-askeddoes not exist — this is a once per machine ask, not once per session.
# gate
test -f ~/.config/cargo-ai/.star-asked || echo "ask"
"Glad that worked. Want me to star
getcargohq/cargo-skillsfor you? (Y/N)"
On yes (gh must be authenticated with the repo or public_repo scope — note there is no gh repo star subcommand):
gh api -X PUT /user/starred/getcargohq/cargo-skills # 204 No Content = starred
Touch the marker on either answer, so a no is never re-asked and a yes is never double-asked:
mkdir -p ~/.config/cargo-ai && touch ~/.config/cargo-ai/.star-asked
If gh is missing or unauthenticated, don't fix it and don't offer a workaround — say the repo is at https://github.com/getcargohq/cargo-skills and move on. This is the lowest-stakes item in the session; it never becomes a task.
Skills at a glance
Declarative (CDK) vs imperative (CLI) — pick the mode first
Two ways to create/manage the same Cargo resources. Decide which the task wants before picking a domain:
- Declarative →
cargo-cdk. The user is managing resources as an artifact: "set up / bootstrap a whole workspace as code", "make this reproducible / version-controlled / in git", "deploy these connectors + models + agents together", or anything that should be re-runnable and diffable across environments. Define it indefine*files andcargo-ai cdk deploy. - Imperative → the matching capability skill below. The user is doing a one-off operation or exploring: "create one connector", "add a column", "list connectors", "run this workflow", "query storage", "read a memory". A read, ad-hoc query, or single mutation that needn't live in code.
When unsure: should the result be committed and re-deployable? Yes → CDK. A quick action or a read → the capability skill.
Onboarding skill
Load for a brand-new user or an empty workspace.
| Skill | Load when you need to… |
|---|---|
cargo-quickstart | Run the guided first-run demo: one persona question → 25 leads in under two minutes → cost receipt → save as a recurring play. Routes to cargo-gtm afterwards. |
Outcome skill
Load when the user states a real-world goal.
| Skill | Load when you need to… |
|---|---|
cargo-gtm (recap) | Any GTM task — sourcing, enrichment, verification, scoring, sequencing, CRM sync, signal monitoring (job changes, funding, tech-stack/hiring intent). Routes via recipes (recipes/), guides (guides/), and provider playbooks (provider-playbooks/). |
Capability skills
Load for a specific CLI domain. The first link in each row jumps to the actual SKILL.md; the parenthetical jumps to the recap on this page.
| Skill | Load when you need to… |
|---|---|
cargo-orchestration (recap) | Execute actions, run workflows, trigger batches, chat with agents, query orchestration with SQL (ClickHouse) |
cargo-analytics (recap) | Download run results, export segment data, monitor error rates and metrics |
cargo-billing (recap) | Check credit usage, view subscription details, track costs per workflow or connector |
cargo-diagnostics (recap) | Diagnose after the fact: trace why one run misbehaved, sweep a batch/play for errors grouped by root cause, profile where a play's credits go |
cargo-observability (recap) | Create and manage alerts — scheduled threshold checks on spans/runs/records, a model's health, or a SQL query — that fire actions (connector/tool/agent runs) on breach. Proactive counterpart to diagnostics |
cargo-storage (recap) | Inspect or modify data models, columns, datasets, and relationships; query workspace storage with SQL |
cargo-segmentation (recap) | Build and manage segments — the saved filters that name the audience for a batch, a play trigger, or an export — and read their change (delta) feed |
cargo-connection (recap) | Manage connector authentication, discover available integrations and their actions |
cargo-ai (recap) | Create and configure agents, configure releases, attach knowledge for RAG, manage MCP servers and memories |
cargo-content (recap) | Upload and organize knowledge files, build native/connector-backed knowledge libraries for RAG (the content domain) |
cargo-context (recap) | Browse/read/write/edit the workspace's git-backed GTM context repo, run commands in its runtime sandbox, inspect the knowledge graph |
cargo-hosting (recap) | Scaffold, deploy, and promote hosted apps (Vite SPAs on *.cargo.app) and edge workers (serverless HTTP handlers), and manage their deployments |
cargo-cdk (recap) | Declarative — spans every resource type. Define a whole workspace in code (define* builders) and deploy it with cargo-ai cdk (init → types → plan → deploy). Use for workspace-as-code / reproducible / version-controlled setups; see "Declarative vs imperative" above. |
cargo-workspace-management (recap) | Invite users, create API tokens, organize folders, manage roles, report CLI issues to management |
Agent knowledge for RAG: files + libraries live in the
contentdomain →cargo-content; how they attach to an agent →cargo-ai. (Files/libraries moved out of the oldai file …path in CLI ≥ 1.0.19.)
These skills vs a workspace MCP server
There is no first-party "Cargo MCP server". What Cargo offers is the ability to build one: a workspace picks the actions and resources it wants to expose (cargo-ai ai mcp-server create --actions … --resources …, see ../cargo-ai/SKILL.md), and the CLI can serve that curated set to any stdio MCP client:
cargo-ai ai mcp-server list # find the server UUID
claude mcp add cargo -- cargo-ai mcp --server # Claude Code, Cursor, Claude Desktop…
cargo-ai mcp bridges over stdio using the CLI's own credentials — no token to paste into client config. With no --server, it uses CARGO_MCP_SERVER_UUID or the workspace's only MCP server.
Route between the two surfaces by shape of the request:
| These skills (CLI) | A workspace MCP server | |
|---|---|---|
| What it is | The whole CLI surface, every domain | Only the actions/resources this workspace chose to expose |
| Best for | Anything at scale or with a cost gate: batches, workflows, plays, schema changes, CDK deploys, diagnostics, exports | The curated in-conversation set: look this record up, run this one approved tool |
| Cost control | Full pilot → approval → receipt discipline (../cargo-gtm/references/cost-discipline.md) | Per-call, and bounded by what the workspace exposed |
| Reproducible | Yes — commands, plays, and CDK files are artifacts | No — a tool call leaves no artifact behind |
Rule of thumb: anything touching more than a handful of records, or that the user will want to re-run, belongs in the CLI. Never fan an MCP tool out record-by-record over a list — that is what orchestration action execute-batch exists for, and it is cheaper and observable. Conversely, when the workspace has already curated a tool for a job, calling it beats hand-assembling the same thing from raw actions.
CLI domains without a dedicated skill yet
The CLI exposes several domains that no capability skill wraps yet. Reach for them directly (cargo-ai --help) when a task needs them, and file a workspaceManagement report if the surface is unclear:
| CLI domain | Covers |
|---|---|
expression | Recipes and expression evaluation (eval, recipe) — generate/evaluate the template expressions used in node graphs. |
system-of-record | System-of-record, client, and log operations. |
revenue-organization | Allocations, capacities, members, territories (revenue/territory planning). |
user-management | Current-user operations with no workspace context. |
How the skills relate
┌─────────────────────────────────────┐
│ cargo-gtm │
│ Outcome / front door for GTM │
│ Recipes, guides, provider-playbks │
└─────────────────┬───────────────────┘
│ delegates to ↓ (one-way)
┌──────────────────────┴──────────────────────┐
│ │
┌──────────────────────────────────────────────────────────────┐
│ cargo-workspace-management │
│ Authentication, users, tokens, folders │
└──────────────────────────────────────────────────────────────┘
┌─────────────────┐ ┌────────────────────┐ ┌─────────────────┐
│ cargo-storage │ │ cargo-connection │ │ cargo-ai │
│ Models, columns,│ │ Connectors, │ │ Agents, docs, │
│ datasets │ │ integration actions│ │ MCP, memory │
└────────┬────────┘ └─────────┬──────────┘ └────────┬────────┘
(cargo-content feeds
files/libraries to agents)
│ │ (UUIDs flow down) │
└──────────────────────┼───────────────────────┘
▼
┌───────────────────────────────────────┐
│ cargo-orchestration │
│ Runs, batches, plays, tools, SoR │
└───────────────┬───────────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌────────────────────────┐ ┌───────────────────────────┐
│ cargo-analytics │ │ cargo-billing │
│ Results, metrics, │ │ Credit usage, costs │
│ exports │ │ │
└────────────────────────┘ └───────────────────────────┘
┌───────────────────────────────────────┐
│ cargo-context │
│ Git-backed GTM markdown knowledge: │
│ personas, plays, proof, signals… │
└───────────────────────────────────────┘
(orthogonal: not part of the workflow flow)
┌───────────────────────────────────────┐
│ cargo-cdk │
│ Declarative authoring layer: define │
│ connectors/models/plays/agents/… as │
│ code, deploy with `cargo-ai cdk`. │
└───────────────────────────────────────┘
(cross-cutting: PRODUCES the same resources the imperative
skills manage — an alternative mode, not a workflow stage)
┌───────────────────────────────────────┐
│ cargo-observability │
│ Scheduled threshold alerts over the │
│ telemetry above (spans/runs/records), │
│ a model's health, or a SQL query — │
│ fire actions as runs on breach. │
└───────────────────────────────────────┘
(watches orchestration/storage; fires orchestration
actions — proactive counterpart to cargo-diagnostics)
Dependency rules in practice:
cargo-gtmdelegates to capability skills via relative paths (../cargo-orchestration/...). Capability skills never referencecargo-gtm.cargo-workspace-managementprovides auth context for every skill — set it up first.cargo-storage,cargo-connection, andcargo-aiare peer skills that supply UUIDs tocargo-orchestration. They don't depend on each other.cargo-contentowns workspace files and libraries (thecontentdomain). It produces file/library UUIDs thatcargo-aiconsumes as agent releaseresources(RAG). Uploaded content files also surface read-only under.files/in thecargo-contextruntime sandbox.cargo-cdkis cross-cutting: it's a declarative authoring mode that produces the very connectors/models/plays/agents/etc. the imperative capability skills manage one at a time. Route to it when the task is "manage the workspace as code" (reproducible, in git, multi-resource); route to the imperative domain skills for one-off ops, reads, and ad-hoc queries. See "Declarative vs imperative" under Skills at a glance.cargo-contextis orthogonal to the workflow-execution flow. It touches the git-backed GTM knowledge base (markdown/MDX), not storage or workflow runs. Use it for capturing/editing the workspace's prose context — personas, plays, proof, objections, signals — and for inspecting the typed knowledge graph.- For SQL queries against storage, use
cargo-ai storage query execute ""(tables as.). Loadcargo-storageto discover dataset and model slugs, and to fetch the DDL when you need column types or the SQL dialect. - For SQL queries against orchestration runtime tables (
runs,batches,spans,records) — error rates, per-node failures, time-series — usecargo-ai orchestration query execute "". Workspace scoping is automatic; tables are referenced without a schema prefix. - Before building a workflow node graph, load
cargo-connectionto getconnectorUuidandactionSlug. If any node calls a credits-based provider action, also loadcargo-gtmand read that provider's playbook (../cargo-gtm/provider-playbooks/.md) — including its Recurring use section whenever the workflow is a scheduled tool or play, since a bad config or wrong cadence re-bills on every run. This applies even when the task arrived throughcargo-orchestrationorcargo-cdkdirectly, without a GTM framing. - Before executing a workflow that uses an agent node, load
cargo-aito getagentUuid. - After runs complete, load
cargo-analyticsto download results or measure performance. For action output retrieval, prefercargo-ai orchestration run download-outputsoverrun download— the former returns a signed-URL CSV/JSON of just the output node's data. - Load
cargo-billingto understand credit consumption for any of the above. - When a run failed, a run "succeeded but looks wrong", a batch has errors, or a play costs too much, load
cargo-diagnostics— it sequences therun get/ orchestration-SQL / billing surfaces into forensic runbooks (trace one run, sweep a batch, profile credit spend). - To be told about a problem before you go looking — an error-rate spike, a cost ceiling, a slow node, a stalled sync, a workflow that stopped running — load
cargo-observability. It creates alerts: scheduled threshold checks over the same telemetry (spans/runs/records), a model's health, or a SQL query, that fire actions on breach. Diagnostics is reactive (explain what happened); observability is proactive (watch for it). Alerts can also be declared as code via CDK'sdefineAlert.
Per-skill critical rules
The non-obvious rules for each skill — the things that fail silently or cost money if you guess. Each skill's own SKILL.md carries the full surface; these are the ones worth knowing before you pick.
cargo-gtm
Recipes shipped:
| Recipe | Use when… |
|---|---|
recipes/source-planning.md | Decide the source before spending: probe candidates, cost per hit. |
recipes/prospecting.md | End-to-end find → enrich → verify → sync (P1/P2/P3 variants). |
recipes/build-tam.md | Build a Total Addressable Market list at scale (100–10,000 companies). |
recipes/linkedin-url-lookup.md | Resolve LinkedIn URL from name + company with strict validation. |
recipes/portfolio-prospecting.md | Investor / accelerator → portfolio companies → contacts. |
recipes/job-change-monitoring.md | waterfall.detectJobChange (cargo-unique) on a contact segment. |
recipes/funding-watch.md | Track companies that recently raised funding. |
recipes/tech-intent.md | Find companies by tech-stack or hiring-intent signals. |
recipes/icp-discovery.md | Diff Closed-Won vs Closed-Lost segments, surface ICP signals. |
recipes/custom-datapoints.md | Design which custom attributes + live signals to collect, gated on a real source and cost. |
recipes/outreach-activation.md | Turn a signal segment into send-ready outreach (enrich → verify → personalize → sequencer handoff). |
recipes/ads-audience-activation.md | Push a segment to Google Ads Customer Match / LinkedIn Matched Audiences. |
recipes/review-and-iterate.md | Human review loop for judgment output; corrections become permanent rules. |
recipes/re-engagement.md | Wake up stale contacts only when a fresh signal fires (job change, funding, tech intent). |
recipes/lost-deal-revival.md | Revive Closed-Lost CRM deals by branching on lost_reason (champion left, budget, timing). |
recipes/account-expansion.md | Multi-thread customer accounts — net-new buyers, deduped against the Contacts model. |
Priority provider stack (recipes lead with these): salesNavigator (sourcing), cargo native (firmographics + signals), aiArk (LinkedIn-anchored enrich + cheapest search), waterfall (multi-source enrichment + email verify + job-change), FullEnrich (premium contact lookup), apolloio (1-credit niche-coverage enrich), theirStack (tech-stack + hiring intent), peopleDataLabs (heavyweight backfill). Already have LinkedIn URLs (or an event URL)? Don't source — go straight to aiArk.enrichPerson (0.1, profile + verified email, bills 0 on no-email), or linkedin (enrichProfile/enrichCompany 0.25, extractEventAttendees) when you don't need the email; these are the cheapest URL-anchored enriches and easy to miss because the stack above is sourcing-first.
Critical rules:
- Acceptable use gates every step that touches a person (
../cargo-gtm/references/acceptable-use.md): B2B professional identities from licensed providers only, three free blocking checks before any outreach step (basis, suppression, relevance), and a refusal list — undifferentiated fan-out, consumer targeting, lists with no stated origin, contacting a suppressed record, filter or identity evasion, auto-dialing, batch-blasting LinkedIn engagement actions. The pack never sends: outreach stops at send-ready variables for the user's own sequencer. - All recipes use credits-based actions (
cargo-ai connection integration list→ 145 credits-based actions across 120 integrations). - Action shape:
{"kind":"connector","integrationSlug":"","actionSlug":"","config":{}}— noconnectorUuidinconfig. - Output retrieval:
cargo-ai orchestration run download-outputs --output-node-slug(NOTrun download). - peopleDataLabs filter shape:
searchXuses cargo's{conjonction, groups, conditions}shape;queryXtakes a PDL SQL string — never Elasticsearch.
cargo-orchestration
Critical rules:
- See the decision flowchart at the top of
../cargo-orchestration/SKILL.mdfor when to useaction executevsrun createvsbatch create. - Never enroll a full batch on the first attempt.
batch create/action execute-batchfan out across every record in the source. Sample 10–20 records, report observed cost + hit-rate, then ask the user to approve the full enrollment — quoting the record count and the credit estimate. Mechanics:../cargo-orchestration/SKILL.md→ "Create a batch"; spend rules:../cargo-gtm/references/cost-discipline.md§1. action executeis the default for running an operation;node executeis debug-only. Usenode executeonly to test a single node of a workflow you're authoring — it requires--workflow-uuid,--release-uuid,--node,--computed-configand--context(all five). Anything else — enrich a record, call a connector action, invoke a tool or agent — goes throughaction execute/action execute-batch.- Prefer built-in actions + expressions when building a node graph. Avoid
python,script(JS), and raw HTTP nodes unless necessary: usevariablesfor transforms, the nativeagentnode for LLM calls, the integration's dedicated connector action for APIs, andbranch/filter/switchfor routing. See../cargo-orchestration/references/node-selection.md. - Show a node graph, don't describe it. Before deploying a draft, and whenever the user asks what a workflow or play does:
cargo-ai orchestration node diagram --workflow-uuid --raw(free, runs nothing, CLI ≥ 1.0.54;references/node-diagram.md). Routing, fallback edges, and which nodes bill are what's being approved. Let the command draw it rather than transcribing — node slugs repeat within a release, so a hand-drawn diagram keyed on slug merges nodes that aren't the same. - Filter JSON uses
conjonction(notconjunction) — breaks silently if misspelled. - Query orchestration runtime tables (ClickHouse) with
cargo-ai orchestration query execute ""againstruns,batches,spans,records(no schema prefix; workspace scoping is automatic). - For SQL against workspace storage (Companies, Contacts, …), use
cargo-ai storage query execute ""— documented incargo-storage. - All operations are async — poll or pass
--wait-until-finished. See Async polling.
cargo-analytics
Critical rules:
segment downloadrequires--model-uuid, not--segment-uuid.- For batch result download, get the
output-node-slugfromrelease get→nodes[].slug. - For billing and credit usage, use
cargo-billinginstead. - Analytics answers "what happened" (metrics, counts, exports). When the question is why — a failing run, a batch full of errors, surprising cost — hand off to
cargo-diagnostics; its sweep runbook picks up exactly where analytics' error counts leave off.
cargo-billing
Critical rules:
- Requires a token with admin access.
- Invoice amounts are in cents — divide by 100 for dollars.
subscriptionAvailableCreditsCount - subscriptionCreditsUsedCountfromsubscription get= remaining credits.
cargo-diagnostics
Critical rules:
- Start with the sweep when you don't know which run to look at; it ends with exemplar UUIDs for the trace.
runContextis the source of truth for what a node produced; an execution'stitleis a truncated summary — never evidence.- Credit attribution (
billing …) needs an admin token; the SQL andrun getsteps don't. - Any fix that re-runs paid nodes goes through the pilot gate in
../cargo-gtm/references/cost-discipline.md. - Diagnostics explains; it doesn't export. For bulk retrieval after the diagnosis (
run download-outputs,batch download,segment download) go back tocargo-analytics. - Present conclusions first, evidence as compact tables — per
references/interaction.md(in thecargorouter skill).
cargo-observability
Critical rules:
previewbeforecreate.alert preview --scope … --threshold … [--window-minutes 60]evaluates now without firing — the only way to size a threshold against reality and to catch an invalid scope/threshold pairing (outcome: "notComputed") before it becomes a schedule that errors every tick.- Scope and threshold are a matched pair. Telemetry metrics (
errorRate,duration+aggregation,credits+aggregation,count) needspans/runs/records;queryneeds a query scope;recordsCount/recordsShare/freshness/syncDurationneedmodel. Full matrix + units inreferences/scopes-and-thresholds.md. - Empty window vs real zero. Most metrics report an idle window as
empty(healthy, no fire). OnlycountandrecordsCountreturn a real0— pair withlte 0for a dead-man's switch (alert when a workflow stops, a model empties). - Firing is at-most-once and costs credits. Actions fire as runs (
runUuidson the event); a sustained breach re-fires once per tick it's still true, never on the same rows twice. If an action calls a paid provider, apply../cargo-gtm/references/cost-discipline.md— a scheduled alert re-bills on every breach. --enabledis strict (true/falseonly); model-scopefilteruses the segmentation shape spelledconjonction.- Permissions are
observability:read/observability:write(not admin-only). The declarative equivalent is CDK'sdefineAlert— seecargo-cdk.
cargo-storage
Critical rules:
- Query via
cargo-ai storage query execute ""(orstorage query download --query ""for full exports) using.table names (e.g.default.companies).model get-ddlis optional — useful for column types and SQL dialect. - For SQL against orchestration runtime tables (
runs/batches/spans/records), usecargo-ai orchestration query execute ""— documented incargo-orchestration. - For advanced record queries (filtering, sorting, pagination), use
segmentation segment fetch— documented incargo-segmentation.
cargo-segmentation
Critical rules:
- Filter JSON uses
conjonction(notconjunction). A misspelling is not an error — the filter silently matches nothing. - Size before you spend.
segment fetch --limit 1counts an inline filter for free; a saved segment'srecordsCountis the authoritative size. Quote it before proposing any paid run over the audience. segment downloadtakes--model-uuidplus the filter, never--segment-uuid.change listneeds--segment-uuid;change fetchneeds the change UUID plus--kinds(added/updated/removed/unchanged).updatedRecordsCountstays0unless the segment was created with--tracking-column-slugs— those columns define what "updated" means.- Segments named
GENERATED_PLAY_SEGMENT(fromPlay: true) are owned by a play. Never edit or remove them b
相关技能
在 CLI 中管理 Cargo 工作区,并向 Cargo 团队提交反馈。
Guided first-run demo for Cargo — one persona question to 25 real leads with a cost receipt in under two minutes, ending by saving the pull as a recurring play. Triggers: "show me what Cargo can do", "give me a demo", "take me on a tour", "quickstart", "getting started with Cargo", "I just installed Cargo", "my workspace is empty", "does this actually work". Skip when: the user has a real job to run (build a list, enrich a CSV, find emails) — use cargo-gtm; when they want CLI reference or routing — use the cargo router skill.
Drive Cargo from its hosted MCP server at https://mcp.getcargo.io/mcp — connect a client, discover and price an action, run it over one record or a batch, poll it, and read workspace models, with no CLI install. Also when to call an MCP tool instead of shelling out to `cargo-ai`. Triggers: "connect Cargo to Claude Desktop", "add Cargo to ChatGPT", "Cargo MCP server", "mcp.getcargo.io", "use Cargo without installing anything", "which Cargo tool do I call", "search_actions", "execute_action_batch", "MCP server is showing the wrong workspace". Tools: whoami, search_actions, get_action_schema, execute_action, execute_action_batch, get_run, query_models. Skip when: you have a shell and the job is a workflow, a CDK deploy, warehouse SQL, or a mailbox — use the CLI skills; when publishing an MCP server out of your own workspace or attaching one to a Cargo agent — use cargo-ai.
用一个 CLI 表面执行、构建、绘制并查询 Cargo 工作流、动作、批量与 AI 代理。
检查并修改 Cargo 工作区的数据模型,并对存储运行 SQL 查询。