
cargo-context
Read and write the workspace GTM knowledge base — the git-backed repository of markdown describing ICPs, personas, plays, proof points, objections, competitors, and signals — plus its runtime sandbox and typed knowledge graph. Triggers: "document our ICP", "write up this persona", "what is our positioning", "add a battlecard", "capture this objection", "what do we know about ", "update our context", "what is in the context repo", "who do we sell to". Skip when: discovering who actually buys from you by analyzing won/lost data — that is cargo-gtm (this skill writes the conclusion down, it does not derive it); storing structured records rather than prose — use cargo-storage; attaching documents to an agent for RAG — use cargo-content.
- Installs
- 9.9K
- Last 24h
- +121
- Trending rank
- #1766
- Security
- Warn
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/getcargohq/cargo-skills --skill cargo-context- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads cargo-context automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
Security audits
Independent scans of the skill's instructions and bundled files.
SKILL.md
The instructions your agent reads when the skill is triggered.
Cargo CLI — Context
The context is a git-backed repository of typed markdown/MDX files that captures a workspace's GTM knowledge (company narrative, ICPs, personas, plays, proof, objections, etc.) and is read/written by both humans and agents. The cargo-ai context domain has two subdomains you'll use:
- runtime — browse, read, write, edit, and execute against the workspace's runtime sandbox (a checked-out copy of the context repo).
write/editare pushed to the default branch, andexecuteauto-commits and pushes any tracked working-tree changes its command leaves behind. - graph — build/load the knowledge graph derived from every markdown/MDX file in the context repo.
The canonical example of a context repository is
getcargohq/cargo-workspaces. Read itsREADME.mdto understand the domain layout and file conventions before writing new entries. For uploading runtime-independent files (CSVs, PDFs) used in batch runs, usecargo-workspace-management(cargo-ai workspaceManagement file upload) instead. For RAG file attachments to agents, usecargo-ai(cargo-ai content file upload).
See
references/conventions.mdfor the full context repo structure and per-domain templates. Seereferences/response-shapes.mdfor the JSON shapes returned by eachcargo-ai contextcommand. Seereferences/troubleshooting.mdfor common errors and how to fix them. Seereferences/examples/authoring.mdfor end-to-end add / edit / delete recipes. Seereferences/examples/lifecycle.mdfor the bootstrap + refresh-from-calls playbook. Seereferences/examples/graph-queries.mdfor inspecting the knowledge graph.
Bootstrap
Already signed in (cargo-ai whoami returns a workspace)? Skip to the next section.
npm install -g @cargo-ai/cli # no global install? prefix every command with `npx @cargo-ai/cli`
cargo-ai login --email you@company.com # emailed code, no browser; creates the account on first use
# alternatives: --oauth (browser) · --token <api-token> (CI)
cargo-ai whoami # confirm the active workspace before any write
Every command prints JSON to stdout; failures exit non-zero and print the error to stderr (piped: {"error": "...", "status": <http>, "body": {"reason": "..."}}, where body.reason is the machine-readable cause). Anything that creates a run or a batch is async — pass --wait-until-finished or poll the matching get. runtime write and runtime edit commit and push to the workspace's context repo, so confirming workspace.name first is non-negotiable. When the full skill bundle is installed, ../cargo/references/prerequisites.md adds the CLI version pin, token scopes, and the admin-only surface.
Discover the context first
Before editing anything, see what's in the context repo:
cargo-ai context runtime browse # list entries at the runtime sandbox root
cargo-ai context graph get # full knowledge graph derived from the repo's md/mdx files
Quick reference
# Runtime sandbox (checked-out copy of the context repo)
cargo-ai context runtime browse [--path <path>]
cargo-ai context runtime read --path <path> [--start-line <n>] [--end-line <n>]
cargo-ai context runtime write --path <path> --content <content> [--commit-message <message>]
cargo-ai context runtime edit --path <path> --old-string <old> --new-string <new> [--replace-all] [--commit-message <message>]
cargo-ai context runtime execute --command <command> [--args <json>] [--commit-message <message>]
# Knowledge graph
cargo-ai context graph get
Runtime sandbox
The runtime sandbox is a checked-out, executable copy of the context repository. It's the surface you use to read and modify context files, and to run commands against them.
Two important behaviors to remember:
writeandeditpush to the default branch of the context repo. They are not local-only.executepushes too. When the command leaves tracked files added, changed, deleted, or renamed, those changes are auto-committed (subjectcontext(runtime): execute <command>, or--commit-message) and pushed to the default branch. Gitignored paths are skipped. Ased -iorrmrun throughexecutelands in git.
Mirrored content files live read-only under .files/. A content file stored with mirrorToContext: true — the default for content file upload, web-app uploads and defineFile (see cargo-content) — is committed and pushed to the context repo at .files/<folder path>/<name> (commits titled content(mirror): upsert <name>, … move …, … remove …; a file over 10 MB lands as a JSON metadata sidecar instead of its bytes). A command run via execute (or read/browse) can consume them — e.g. cargo-ai context runtime execute --command ls --args '["-1",".files"]'. Files written by path (content file put, the objects API, workers, the writeFile node, agent writes) default to mirrorToContext: false and are not there. You can't add or change anything under .files/ from the runtime (deniedPath) — use cargo-ai content file …. Anyone who can read the context repo can read every mirrored file.
Because writes push immediately, confirm the target workspace before the first write/edit:
cargo-ai whoami # → workspace.uuid, workspace.name
Read the workspace name back to the user. If the session is for a specific client, make sure workspace.name matches before authoring anything — there is no dry-run mode. If workspace.name is generic or ambiguous (e.g. "Main", "Test", a person's name, an internal codename), don't guess — ask the user for the company name and canonical domain (example.com) and confirm both before the first write. If you logged in without pinning a workspace, re-run cargo-ai login --oauth --workspace-uuid <uuid> (or --token <workspace-scoped-token> for non-interactive use).
Edits derived from sales-call analysis should be applied one at a time with human review, not batched. Looping an agent over many calls tends to overweight the loudest signal and miss nuance — see references/examples/lifecycle.md for the call-refresh playbook.
Browse and read
# List entries at the root of the runtime sandbox
cargo-ai context runtime browse
# List entries under a subpath (e.g. a domain folder like persona/ or play/)
cargo-ai context runtime browse --path persona
# Read a full file
cargo-ai context runtime read --path persona/vp-sales-mid-market.md
# Read only a line range (1-indexed, inclusive on both ends)
cargo-ai context runtime read --path play/inbound-trial-to-paid.md --start-line 1 --end-line 40
Write a new file
write creates (or overwrites) a file and pushes a commit to the default branch.
Begin every .md/.mdx file with a YAML frontmatter block setting title and description. Frontmatter is not validated by write (a project's defineContext is — see File conventions) — a file with missing, empty, or malformed frontmatter is still written and committed; it just indexes poorly in the graph (a missing title falls back to the filename, the node summary to the first paragraph). write can still fail for other reasons — repositoryNotFound, failedToWrite (including a push that did not land), or deniedPath (e.g. writing under .files/); see references/response-shapes.md.
cargo-ai context runtime write \
--path persona/vp-sales-mid-market.md \
--content "$(cat <<'EOF'
---
title: VP of Sales, mid-market
description: Owns pipeline, quota, and rep productivity at a 200–2,000-person company.
---
## Role
- Title: VP of Sales
- Seniority: Executive
- Function: Revenue
- Reports to: CRO or CEO
## KPIs
- New ARR, win rate, pipeline coverage, rep ramp time
## Pains
- Pipeline gaps, slow ramp, low rep activity, forecasting drift
## Motivations
- Hit the number, build a repeatable motion, get visibility
## Day-to-day
Forecast calls, deal reviews, pipeline reviews, 1:1s with frontline managers.
## Preferred channels
- medium/linkedin-outbound
- medium/exec-warm-intro
## Common objections
- objection/we-already-have-an-ai-sdr
## How we land
Lead with pipeline-coverage math, not features.
EOF
)" \
--commit-message "Add VP of Sales mid-market persona"
Edit an existing file
edit replaces a single exact substring. --old-string must occur exactly once in the file (unless --replace-all is passed); pass an empty --new-string to delete the match. The strings are taken literally: \n inside ordinary double quotes is a backslash and an n, not a newline, so use bash $'...' quoting for multi-line matches.
edit does not validate frontmatter — an edit that strips or empties title/description still applies, so keep the block intact to keep the node discoverable. edit can fail for other reasons, though: stringNotFound / stringNotUnique (the --old-string match), fileNotFound, noOp (new string equals old), failedToEdit (including a push that did not land), or deniedPath.
# Replace one specific sentence
cargo-ai context runtime edit \
--path global/positioning.md \
--old-string "We help RevOps automate workflows." \
--new-string "We help RevOps run AI-native GTM motions." \
--commit-message "Refresh positioning one-liner"
# Delete a line (pass empty --new-string)
cargo-ai context runtime edit \
--path persona/vp-sales-mid-market.md \
--old-string $'\n- Outdated stat: 4.2x pipeline\n' \
--new-string ""
For larger restructures, prefer write (full-file overwrite) over many sequential edit calls.
Execute a command in the sandbox
execute runs a shell command in the sandbox (90-second timeout). Useful for inspecting structure or running checks; tracked file changes it leaves are committed and pushed, so keep inspection commands read-only.
# Find every file that cross-references a specific slug
cargo-ai context runtime execute \
--command grep \
--args '["-r","-l","persona/vp-sales-mid-market","."]'
# Count entries per domain
cargo-ai context runtime execute --command ls --args '["-1","persona"]'
# Run a one-shot script (no quotes/escaping needed inside --command beyond JSON for args)
cargo-ai context runtime execute --command pwd
--args is a JSON array of string arguments. Omit it for a no-arg command.
Context repository structure and conventions
The Cargo context repo is a typed knowledge base. The canonical example — and the source of the conventions below — is getcargohq/cargo-workspaces; read its README.md and _template.md files in each domain before writing new entries. For the full domain reference, see references/conventions.md.
Domains
| Domain | Purpose |
|---|---|
global/ | Company-level context: mission, voice, positioning, narrative, pricing |
icp/ | Ideal Customer Profile segments |
persona/ | Buyer personas (roles inside an ICP) |
jtbd/ | Jobs-to-be-done framings |
alternative/ | Competitors, substitutes, status quo |
client/ | Customer profiles, case studies, reference accounts |
insight/ | Market insights and observations |
medium/ | Channel playbooks (email, LinkedIn, cold call, etc.) |
objection/ | Objections + responses + proof |
play/ | GTM plays (signal → audience → channel → sequence → outcome) |
proof/ | Atomic proof points (metrics, quotes, case data) |
signal/ | Buying signals and intent triggers |
File conventions
- Filename:
kebab-case.md(e.g.vp-sales-mid-market.md). - Frontmatter: start every
.md/.mdxfile with YAML frontmatter settingtitleanddescription. This is a strong convention, not enforced — a write with missing, empty, or malformed frontmatter is still created and committed; it just indexes poorly. The graph readstitle(fallback: filename) andsummary(fallback:description, then the file's first paragraph), so add asummary:only if you want the node summary to differ fromdescription. See Source references and graph edges. The exception is context declared in a project (defineContext, see../cargo-project/SKILL.md): thereproject check/plan/deployfail on frontmatter that doesn't parse and on areferences:entry,[[wikilink]]or relative.mdlink that matches no file declared underfiles— including one that exists in the workspace repo but not in code. A missingtitle/descriptionstill passes. - Cross-references: use the
domain/slugform, no.mdextension (e.g.persona/vp-sales-mid-market). To register as a graph edge a reference must use one of the three link forms below — a baredomain/slug(or file path) in plain prose creates no edge. - Templates: each domain ships an
_template.md. Read it (cargo-ai context runtime read --path persona/_template.md) before authoring a new entry._template.*files are excluded from the graph — never reference them.
Source references and graph edges
The knowledge graph is built from every .md, .mdx, .yaml, and .yml file in the repo (any folder; only .git/ is excluded). Each file is a node, but edges are created only from three forms — anything else is invisible to the graph:
- Frontmatter
references:list (preferred for source citations — keeps prose clean):--- title: AgoraPulse expansion thesis description: Why AgoraPulse is ready for a multi-thread expansion play. references: - outputs/sales-notes/2026-06-05-agorapulse-build-session-1-outcomes.md --- - A Markdown link in the body — standard
[label]followed immediately by(path)syntax, where the target is the file path, e.g. an anchor linking tooutputs/sales-notes/2026-06-05-agorapulse-build-session-1-outcomes.md. - Wikilinks in the body (extension optional):
[[outputs/sales-notes/2026-06-05-agorapulse-build-session-1-outcomes]].
Key constraints:
- Never cite a source as a bare path in prose (e.g. a
Source:line that just mentionsoutputs/sales-notes/foo.mdas text) — it is not parsed and creates no edge. - Prefer root-relative paths (resolved from the repo root first, then relative to the citing file) so links work regardless of where the document lives.
- Extensions are optional for wikilinks and frontmatter
references:: the resolver auto-tries.md,.mdx,.yaml,.ymlin that order. A Markdown link only counts as an edge when its target ends in.md,.mdx,.yaml, or.yml, so keep the extension there. - The target must exist or the edge is broken (a dead link in the graph UI). Verify with
runtime browsebefore citing. - For docs with a Source/Evidence section, cite the files in frontmatter
references:; use inline markdown links when the citation needs surrounding prose. Full rules:references/conventions.md.
Workflow: add a new entry
- Confirm the target domain and copy its template:
cargo-ai context runtime read --path persona/_template.md writea new file at<domain>/<slug>.mdwithtitle+descriptionand the body sections filled in.- Add cross-refs (
domain/slug) where useful — keep them bidirectional when it makes sense. - Rebuild the knowledge graph to verify the new entry and its links:
cargo-ai context graph get
For full per-domain templates and worked examples, see references/conventions.md and references/examples/authoring.md.
Workflow: bootstrap and refresh
To stand up a new workspace's context repo from scratch, or to refresh an existing one on a cadence, follow the two-phase lifecycle in references/examples/lifecycle.md:
- Bootstrap (one-time): seed
global/,persona/,client/,proof/,objection/,signal/from public sources, then open a fresh agent session against the seeded repo. For the prescriptive, automatable version (domain in → files out, idempotent, with credit budget), usereferences/examples/bootstrap-from-domain.md. - Refresh (every 2–4 weeks): pull the last ~3 months of sales-call transcripts → analyze one at a time, human-in-the-loop → apply a repetition threshold before promoting any claim to context → validate by generating sequence permutations → diff the graph before/after and retire stale entries.
The repetition threshold (how many calls a claim must appear in before it lands in context) is documented in references/conventions.md.
Knowledge graph
context graph get builds (or loads from cache) the knowledge graph over every markdown/MDX file in the context repo. Use it to:
- Audit cross-references between domains (e.g. find personas that link to plays with no proof attached).
- Discover what already exists before writing a new entry (avoid duplicates).
- Power downstream agents that need the typed structure of the workspace's context.
cargo-ai context graph get
The response is {"graph": {"nodes", "edges", "broken", "computedAt"}}: each node carries id (the file path, extension included), title, summary, and cluster (top-level folder); each edge carries source, target, and origin (frontmatter, wikilink, or mdlink); broken lists edges whose target does not exist. Pipe it through jq to slice it. See references/examples/graph-queries.md for ready-to-run queries.
Help
Every command supports --help:
cargo-ai context --help
cargo-ai context runtime browse --help
cargo-ai context runtime read --help
cargo-ai context runtime write --help
cargo-ai context runtime edit --help
cargo-ai context runtime execute --help
cargo-ai context graph get --help
FAQ
What does the cargo-context skill do?
Read and write the workspace GTM knowledge base — the git-backed repository of markdown describing ICPs, personas, plays, proof points, objections, competitors, and signals — plus its runtime sandbox and typed knowledge graph. Triggers: "document our ICP", "write up this persona", "what is our positioning", "add a battlecard", "capture this objection", "what do we know about ", "update our context", "what is in the context repo", "who do we sell to". Skip when: discovering who actually buys from you by analyzing won/lost data — that is cargo-gtm (this skill writes the conclusion down, it does not derive it); storing structured records rather than prose — use cargo-storage; attaching documents to an agent for RAG — use cargo-content.
How do I install cargo-context?
Run npx skills add https://github.com/getcargohq/cargo-skills --skill cargo-context in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/cargo-context/ (personal) or .claude/skills/cargo-context/ (project).
Which AI agents can use cargo-context?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is cargo-context safe to install?
Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk flagged items to review. As with any skill, read the SKILL.md and bundled scripts before installing.
Who maintains cargo-context?
It is published by getcargohq in getcargohq/cargo-skills. It has 9,949 recorded installs.
More from getcargohq/cargo-skills
cargo-connection
getcargohq/cargo-skills
Connect Cargo to an external system and find out what it can do — authenticate connectors, browse the integration catalog, and resolve the connectorUuid and actionSlug a workflow node needs. Triggers: "connect my HubSpot", "is Salesforce connected", "what integrations do you support", "can Cargo talk to ", "what actions does have", "I need the connector UUID", "set up the API key for", "it is asking for credentials again", "why is this connector failing auth", "list my connectors". Integrations: amplemarket, amplitude, attio, bigQuery, calendly, cargoSignals, closecom, contrast, csv, customerio, dbt, emailBison, expandi, googleAds, googleCalendar, googleSheets, heyReach, http, hubspot, hubspotMcp, instantly, instantlyV2, intercom, jira, kitt, lemlist, lgm, linkedinAds, linkedinMatchedAudience, livestorm, manus, marketo, metaAds, metabase, microsoftTeams, mixpanel, monaco, netsuite, netsuiteSoap, nooks, notionMcp, octave, onesignal, outreach, pipedrive, postgresql,
cargo-gtm
getcargohq/cargo-skills
Do business-to-business go-to-market work on Cargo — research accounts and buying committees, enrich and verify B2B contact records from licensed data providers, score and qualify leads, draft permission-based outreach for the user's own sequencer, sync to CRM, and monitor buying signals. Consent basis, suppression lists, and volume limits gate every step that touches a person (references/acceptable-use.md); bulk unsolicited messaging, purchased or scraped lists, and consumer targeting are refused. Triggers: "build me a list of", "find 50 at ", "who works at", "find work emails for these accounts", "enrich this CSV", "verify these emails", "build a TAM", "who fits our ICP", "who actually buys from us", "what data points should we collect on accounts", "our outbound is reaching the wrong people", "score these leads", "write a first-touch email", "push these to my CRM", "who changed jobs", "who just raised funding", "companies using ", "who is hiring ", "fi
cargo-ai
getcargohq/cargo-skills
Build and configure AI agents inside Cargo — create an agent, choose its model and temperature, write its prompt, attach knowledge for retrieval (RAG), connect MCP tool servers, manage memories, and deploy releases. Triggers: "create an agent", "make an agent that", "give the agent our docs", "attach this knowledge base", "attach this library to the agent", "add resources to the agent release", "connect an MCP server", "expose our tools as an MCP server", "use Cargo from Claude Desktop or ChatGPT", "change the agent model", "what does the agent remember", "deploy the agent", "the agent is answering wrong". Skip when: uploading the knowledge files themselves — use cargo-content; sending the agent a message or running it over records — use cargo-orchestration.
cargo-workspace-management
getcargohq/cargo-skills
Administer a Cargo workspace and talk back to the Cargo team — invite and manage members, mint and rotate API tokens, organize plays, tools, and agents into folders, inspect roles, upload batch input files, and file reports. Triggers: "invite my teammate", "create an API token for CI", "who has access", "organize these into folders", "rotate that token", "upload this CSV for a batch" — and for feedback: "report this bug to Cargo", "send feedback to the Cargo team", "this CLI command is broken", "share this session with Cargo", "request a feature". Most commands need a token with admin access. Skip when: the question is about credits, plans, or invoices — use cargo-billing.
cargo-orchestration
getcargohq/cargo-skills
Make Cargo actually run something, or show what it would run — execute one connector action, run a multi-step workflow, trigger a batch across a whole segment or model, message an AI agent, build or edit a node graph, draw a workflow, tool or play as a diagram, and query the runtime tables (runs, batches, spans, records) with SQL. Triggers: "run this on all my contacts", "execute the action", "kick off a batch", "build a workflow", "schedule a play", "make it run every morning", "ask the agent", "show me the workflow", "what does this tool do", "visualize this play", "draw the graph", "explain this workflow", "how many runs failed today", "what is the output schema for this action", "add a step that". Skip when: explaining why a run misbehaved — use cargo-diagnostics; downloading result files — use cargo-analytics; committing the workflow as code — use cargo-project.
cargo-billing
getcargohq/cargo-skills
Understand what Cargo is costing — remaining credits, usage broken down by workflow, connector, or agent, subscription state, and invoice history. Triggers: "how many credits do I have left", "what did that cost", "why is my bill so high", "am I about to run out", "will this fit in our budget", "show me my invoices", "how much have I spent this month", "what plan am I on", "what do I get for free", "how many free credits", "can I afford this run", "add a card", "update my payment method", "why was my card declined". Needs a token with admin access. Skip when: attributing spend to specific nodes or cutting a play cost — use cargo-diagnostics.
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available