Cargo GTM Skills

August 19, 2026 · View on GitHub

cargo-ai cli skills.sh License

22 standalone agent skills, one job each. No account required to read them, and a new Cargo account starts with 100 free credits, no card.

npx skills add getcargohq/gtm-skills --all      # all 22

Each skill also installs on its own, when you want exactly one and nothing else:

npx skills add getcargohq/gtm-skills/<skill-name>
SkillDoes
clay-to-cargoRebuild a Clay table on Cargo: map every enrichment column to its provider action, cost it before it runs, and keep it as code.
score-leadsScore a list of companies against your ICP and rank it, with a number, a reason and a tier on every row.
research-accountResearch one company before a meeting and hand back a one-page briefing, every line traceable to a source you can open.
monitor-buying-signalsWatch target accounts for the public events that mean someone is in market, each with a date and a link.
apollo-to-cargoRebuild an Apollo list on Cargo and price the two side by side on the same rows before you move anything.
zoominfo-to-cargoRebuild a ZoomInfo, Lusha or Cognism list on Cargo and measure the coverage you actually lose or gain before the renewal.
find-b2b-leadsFind B2B leads by job title, company, and keyword, and return them as a structured list.
build-tam-listBuild a total addressable market list of companies filtered by industry, headcount, and geography.
find-linkedin-urlResolve a person's LinkedIn profile URL from their name and company, with an identity-validation gate that rejects wrong matches.
enrich-linkedin-profileTurn a LinkedIn profile URL into a full person profile plus a verified work email in a single call.
find-work-emailFind a verified work email address from a person's name and company domain.
verify-email-listVerify a list of email addresses so you stop sending to bounces.
enrich-company-dataEnrich a list of companies with firmographics — industry, size, geography, founding year, and headquarters.
find-stakeholdersFind the buying committee at a target account — every stakeholder matching a set of titles, seniorities, and departments.
track-job-changesDetect which of your contacts have changed jobs, and where they went.
track-funding-roundsTrack which companies recently raised funding, with round, amount, and investors.
find-companies-using-techFind companies by the technology they run or the roles they are hiring for.
find-portfolio-companiesFind every portfolio company of an investor or accelerator, then the people inside them.
waterfall-enrichmentRun a waterfall across several providers so a record one vendor misses is caught by the next.
crm-enrichmentFill the blank fields in your CRM records, contacts and companies alike.

Two of them are cookbooks rather than one-off jobs. tam-building and account-scoring are the same jobs as a deployed pipeline that keeps running: each folder holds worked CDK resources written for some other company, and your agent adapts them into your project and deploys them. Every such folder is self-contained (its own models, connectors and folders; no shared foundation, no requires graph), so the agent reconciles it with whatever your project already declares. More are on their way (contact-sourcing, signal-based-tam, ai-sdr, rep-cockpit, …); each lands here the day its skill is written, not before.

SkillDeploys
tam-buildingYour account universe from a Sales Navigator search, split past the extraction cap, resolved to domains, deduped into an accounts model.
account-scoringEvery account scored and tiered against your written ICP by an agent that cites its evidence, rationale on the CRM record.

Works with Claude Code, Codex, Cursor, Windsurf, GitHub Copilot, and any agent that supports the skills.sh standard.

As an agent plugin — Claude Code, Codex, Cursor

The same twenty skills also install as a native agent plugin: one source, three targets. Take this route when you want all of them rather than one, and when you want the two things skills add cannot deliver:

  • An approval hook (hooks/approve-cli.sh) that auto-approves safe cargo-ai calls (reads, queries, run and batch operations) so the agent stops prompting on every invocation, while credentials (login), token minting, report egress, and any remove/delete always still prompt. Allow-only — it can never override a deny rule. Wired per target: PreToolUse (Claude Code), PermissionRequest (Codex), beforeShellExecution (Cursor). The file is a verbatim copy of the pack's, and CI fails if it drifts: an allowlist should be reviewed once, upstream, for both plugins — not forked here.
  • Session-lifecycle hooks (Claude Code only): SessionStart installs the CLI at the version cli-version pins — so a command in a SKILL.md always meets the CLI it was written against — and Stop/SessionEnd keep the session row titled and current instead of leaving a placeholder behind. They derive the attribution line each skill otherwise asks the agent to write by hand, so the skills' own attribution step stands down when the plugin is installed and a session is recorded once, not twice.

Claude Code (≥ v2.1.154):

/plugin marketplace add getcargohq/gtm-skills
/plugin install cargo@gtm

Codex:

codex plugin marketplace add getcargohq/gtm-skills
# then install "Cargo GTM" from the Plugins menu

Cursor: open Customize in the sidebar → add the getcargohq/gtm-skills marketplace → install the Cargo GTM plugin (UI-driven; the .cursor-plugin/ manifests are picked up automatically).

For the OpenAI Plugins Directory (ChatGPT + Codex) the archive is built from the tree rather than hand-assembled, because that listing is the one channel that does not track this repo — every version is a manual, human-reviewed submission that then serves whatever was approved:

node scripts/build-codex-package.mjs      # -> dist/gtm-skills-codex.zip

It stages the twelve skills under skills/, drops the OpenClaw metadata block OpenAI rejects, writes the directory manifest, and asserts every documented limit — description lengths, the 30-char display fields, square icons, archive shape — against the finished zip rather than the staging directory. Skills only: the hooks are wired with ${CLAUDE_PLUGIN_ROOT}, which nothing outside Claude Code is known to set, so packaging them would put a path that cannot run in front of a reviewer. CI builds it on every commit; dist/ holds the bytes that were uploaded.

Pick one channel — and this repo is the smallest of three. Plugin install and skills add both register the skills, so using both duplicates them (plugin copies are namespaced cargo:<skill>). And if you have the full pack — either channel — you do not want these at all: every skill here defers to cargo-gtm when it is present, and the plugin's lifecycle hooks defer to the pack's plugin and to the Cargo installer's hooks, so a machine with both never registers a session twice.

Want all of it?

These are slices of the full Cargo skills pack — 17 skills covering the whole CLI, with recipes, provider playbooks, and cost discipline built in. If you install the pack, you do not need these: each one defers to cargo-gtm when it is present.

npx skills add getcargohq/cargo-skills

Editing these

The markdown is the source — edit it directly. Copy is meant to be iterated on: reword a job, add a trigger phrase, rewrite a CTA, tune the framing. That is the point of this repo being separate from the pack.

Two things are not free-form, and CI enforces them:

Slugs and prices are checked against the upstream playbooks. Every integrationSlug / actionSlug pair in a command must exist in the matching cargo-gtm/provider-playbooks/ file, and every number in a cost table must match that playbook exactly. These skills run inside agents we do not control, with no session refresh to save them — a stale price fails on a new user's first command, which is the worst possible moment to be wrong.

Every skill carries the same blocks: the cargo-gtm deference guard, the free-credits line, the sample-before-you-spend rule, the CTA back to the pack, the star ask, and the attribution guard that skips the manual session row when the plugin's hooks already write one. Drop one and the build goes red. Trigger phrases must also be unique across skills, or they fight for the same prompts.

The plugin channel is checked too. The four manifests (.claude-plugin/, .codex-plugin/, .cursor-plugin/, plugin.json) must agree on name and version, every hook they wire must exist and be executable, cli-version must be a real version, skills.sh.json must group every skill exactly once, the skill list embedded in hooks/skill-loads.sh must match the directory tree, and hooks/approve-cli.sh must be byte-identical to the pack's. Adding a thirteenth skill therefore means adding it in three places, and the build will tell you which one you missed.

node scripts/validate.ts                                            # against cargo-skills@main
node scripts/validate.ts --playbooks ../cargo-skills/cargo-gtm/provider-playbooks   # local checkout
node scripts/validate.ts --ref v1.18.1                              # pin to a tag

CI also runs this weekly on a cron. Upstream pricing can change without anyone touching this repo, and that is exactly the drift nobody would otherwise notice.

evals/routing.jsonl holds one case per trigger phrase, graded in CI by the pack's ranker (.github/scripts/routing-eval.ts --skills-root .). It currently scores 56/56, which is a ceiling effect rather than a result: every case was generated from the trigger phrases it grades, so it proves the triggers do not collide, not that the descriptions route. Real cases have to come from real sessions.