Best for
- Choose salesbuildr-cli when an agent or script needs to read or mutate Salesbuildr data non-interactively, or when you need margin, quote-lifecycle, or pipeline analytics that the web UI and the Public API do not expose…
Servosity/msp-skills/skills/salesbuildr/SKILL.md
Every Salesbuildr resource as a scriptable command, plus offline margin and pipeline analytics. Trigger phrases: `salesbuildr stale quotes`, `check quote margins`, `salesbuildr pipeline velocity`, `sync salesbuildr catalog`, `company whitespace salesbuildr`, `use salesbuildr`, `run salesbuildr`.
Decision brief
Every Salesbuildr resource as a scriptable command, plus offline margin and pipeline analytics. Trigger phrases: `salesbuildr stale quotes`, `check quote margins`, `salesbuildr pipeline velocity`, `sync salesbuildr catalog`, `company whitespace salesbuildr`, `use salesbuildr`, `run salesbuildr`.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/Servosity/msp-skills --skill "skills/salesbuildr"Inspect the Agent Skill "salesbuildr" from https://github.com/Servosity/msp-skills/blob/30e109db0872897de0b88adb38d81d4c292da3ae/skills/salesbuildr/SKILL.md at commit 30e109db0872897de0b88adb38d81d4c292da3ae. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Refresh the store, then list aging quotes and pipeline cycle-time in one pass.
Catalog products this company has never been quoted, ready to pipe into prep notes.
Set SALESBUILDRAPIKEY to an API key generated under Admin Integrations API Key, and SALESBUILDRTENANT to your tenant subdomain (acme for https://acme.salesbuildr.com). Advanced: SALESBUILDRBASEURL overrides the full base URL and must include the /public-api suffix (https://acme.…
This skill drives the salesbuildr-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
Choose salesbuildr-cli when an agent or script needs to read or mutate Salesbuildr data non-interactively, or when you need margin, quote-lifecycle, or pipeline analytics that the web UI and the Public API do not expose. It is the right tool for batch catalog updates by external…
Permission review
The documentation asks the agent to run terminal commands or scripts.
npx -y @mvanhorn/printing-press-library install salesbuildr --cli-onlyThe documentation asks the agent to run terminal commands or scripts.
go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/salesbuildr/cmd/salesbuildr-cli@latestThe documentation includes sending, uploading, or posting data to a remote service.
| `webhook:<url>` | POST the output body to the URL (`application/json` or `application/x-ndjson` when `--compact`) |The documentation includes network, browsing, or remote request actions.
| `webhook:<url>` | POST the output body to the URL (`application/json` or `application/x-ndjson` when `--compact`) |Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 83/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 15 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
This skill drives the salesbuildr-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
npx -y @mvanhorn/printing-press-library install salesbuildr --cli-only
salesbuildr-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.4 or newer). This installs into $GOPATH/bin (default $HOME/go/bin), so add that directory to $PATH instead:
go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/salesbuildr/cmd/salesbuildr-cli@latest
If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
salesbuildr-cli mirrors the full Salesbuildr Public API - companies, contacts, products, opportunities, quotes, pricing books, templates and more - with agent-native JSON output and a local SQLite store. The local store is what unlocks the commands no other Salesbuildr tool has: stale-quote radar, low-margin line detection, pricing drift, pipeline velocity, win-rate, MRR forecast, and company whitespace.
Choose salesbuildr-cli when an agent or script needs to read or mutate Salesbuildr data non-interactively, or when you need margin, quote-lifecycle, or pipeline analytics that the web UI and the Public API do not expose. It is the right tool for batch catalog updates by external identifier, PSA-id sync workflows, and weekly pipeline/margin reviews.
These capabilities aren't available in any other tool for this API.
quote stale - Surface quotes that have been sent or approved but are aging past a cutoff, with the dollar value still at risk.
Reach for this when you need the one list the web UI never shows: which open quotes are slipping and how much revenue is on the line.
salesbuildr-cli quote stale --days 14 --agent
product velocity - Rank catalog products by how often they appear across quote line items and the total value quoted - your de-facto bestsellers.
Reach for this for most-quoted products by frequency and value; to find products a company has never been quoted, use 'company whitespace' instead.
salesbuildr-cli product velocity --limit 20 --agent
reconcile-psa - Find rows across companies, contacts, products, and opportunities whose external identifier is missing - the records that silently miss a PSA sync.
Reach for this before an Autotask/ConnectWise/HaloPSA sync to catch records that will be skipped for lack of an external id.
salesbuildr-cli reconcile-psa --agent
company whitespace - Show catalog products a company has never been quoted - the cross-sell gaps.
Use this before an account review to find concrete cross-sell opportunities grounded in what the company has not bought.
salesbuildr-cli company whitespace 1234 --agent
quote thin - Find every quote line item across all open quotes whose markup falls below a floor.
Use this before quotes go out to catch under-priced lines that silently erode margin when distributor costs move.
salesbuildr-cli quote thin --floor 20 --agent
pricing drift - Flag per-company pricing-book prices that have diverged from the master catalog price or cost.
Run this when a distributor price-list lands to see exactly which pricing books drifted away from catalog.
salesbuildr-cli pricing drift --agent
quote funnel - See stage-by-stage conversion of the quote lifecycle - count and dollar value at draft, sent, approved, declined, and expired.
Reach for this when you need quote-lifecycle conversion with dollars at each stage; for opportunity-pipeline conversion use 'opportunity winrate' instead.
salesbuildr-cli quote funnel --agent
opportunity velocity - Aggregate sales-cycle duration and time-in-stage across the opportunity pipeline.
Pick this when you need to know where deals stall and how long the pipeline actually takes to close.
salesbuildr-cli opportunity velocity --agent
opportunity winrate - Compute won/lost ratios grouped by owner, stage, or category.
Use this to report conversion by rep or stage without rebuilding it from memory each week.
salesbuildr-cli opportunity winrate --by owner --agent
opportunity mrr-forecast - Weight open-pipeline monthly revenue and profit by probability, churn-adjusted.
Reach for this for a fast weighted MRR forecast across the open pipeline.
salesbuildr-cli opportunity mrr-forecast --agent
category - Manage category
salesbuildr-cli category public-get-all-categories - Get all categoriessalesbuildr-cli category public-get-all-categories-as-tree - Get all categories as treecompany - Manage company
salesbuildr-cli company public-create - Createsalesbuildr-cli company public-delete - Deletesalesbuildr-cli company public-delete-by-external-identifier - Delete by ext IDsalesbuildr-cli company public-get - Getsalesbuildr-cli company public-get-by-external-identifier - Get by ext IDsalesbuildr-cli company public-get-list - Searchsalesbuildr-cli company public-update - Updatesalesbuildr-cli company public-upsert - Create or update a company using the ext ID as keycontact - Manage contact
salesbuildr-cli contact company-public-create - Createsalesbuildr-cli contact company-public-delete - Delete by ext IDsalesbuildr-cli contact company-public-delete-by-id - Delete by IDsalesbuildr-cli contact company-public-get - Getsalesbuildr-cli contact company-public-get-by-external-identifier - Get by ext IDsalesbuildr-cli contact company-public-get-list - Search contactssalesbuildr-cli contact company-public-undelete-by-ext-id - Undelete by ext IDsalesbuildr-cli contact company-public-update - Updatesalesbuildr-cli contact company-public-upsert - Upsert by ext IDsalesbuildr-cli contact company-public-upsert-by-email - Upsert by email addresscontract - Manage contract
salesbuildr-cli contract - ⚠️ Beta API - This endpoint is in beta and may change without notice. Use with caution in production environments.field - Manage field
salesbuildr-cli field public-get-values - Get the list of values from a fieldsalesbuildr-cli field public-update-values - Replace existing field values with new listopportunity - Manage opportunity
salesbuildr-cli opportunity public-get-by-id - Get by IDsalesbuildr-cli opportunity public-get-opportunities - Searchsalesbuildr-cli opportunity public-lose - Lose by ext IDsalesbuildr-cli opportunity public-upsert - Create or update a opportunity using the ext ID as keysalesbuildr-cli opportunity public-win - Win by ext IDpricing-book - Manage pricing book
salesbuildr-cli pricing-book public-create - Create a new pricing booksalesbuildr-cli pricing-book public-get - Get pricing book by IDsalesbuildr-cli pricing-book public-get-all - Get pricing bookssalesbuildr-cli pricing-book public-update - Update an existing pricing bookproduct - Manage product
salesbuildr-cli product public-create - Create productsalesbuildr-cli product public-create-batch - Create products in batch. Maximum 100 productssalesbuildr-cli product public-delete - Delete productsalesbuildr-cli product public-delete-by-external-identifier - Delete product by external identifiersalesbuildr-cli product public-get - Searchsalesbuildr-cli product public-get-by-external-identifier - Get product by external identifiersalesbuildr-cli product public-get-id - Get product by IDsalesbuildr-cli product public-update - Update productsalesbuildr-cli product public-upsert-by-external-identifier - Upsert product by external identifierquote - Manage quote
salesbuildr-cli quote public-create-approved - Create approved quotesalesbuildr-cli quote public-create-draft - Create draft quotesalesbuildr-cli quote public-get - Searchsalesbuildr-cli quote public-get-approved - Search approvedsalesbuildr-cli quote public-get-id - Getquote-discount-group - Manage quote discount group
salesbuildr-cli quote-discount-group discount-group-public-create - Create newsalesbuildr-cli quote-discount-group discount-group-public-get-all - Get allsalesbuildr-cli quote-discount-group discount-group-public-get-by-id - Get by idsalesbuildr-cli quote-discount-group discount-group-public-update - Update by idquote-template - Manage quote template
salesbuildr-cli quote-template public-create - Creates a new quote template. All product references should use internal Sfindr product IDs.salesbuildr-cli quote-template public-get-by-id - Returns a single quote template with all its contents. The response can be used directly in PUT requests.salesbuildr-cli quote-template public-list - Returns a list of all quote templates ordered by their display order.salesbuildr-cli quote-template public-update - Updates an existing quote template. All product references should use internal Sfindr product IDs.salesbuildr-cli quote-template public-validate-template - Validates template data including product references and attachments.quote-widget-template - Manage quote widget template
salesbuildr-cli quote-widget-template public-create - Creates a new widget template. The widget configuration should match the structure used in copy/paste operations.salesbuildr-cli quote-widget-template public-get-by-id - Returns a single widget template with all its contents. The response can be used directly in PUT requests.salesbuildr-cli quote-widget-template public-list - Returns a list of all widget templates ordered by their display order.salesbuildr-cli quote-widget-template public-update - Updates an existing widget template. Only provided fields will be updated.salesbuildr-cli quote-widget-template public-validate-widget - Validates widget template data including product references.sync-state - Manage sync state
salesbuildr-cli sync-state <id> - This endpoint is exempt from rate limitingWhen you know what you want to do but not which command does it, ask the CLI directly:
salesbuildr-cli which "<capability in your own words>"
which resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match - fall back to --help or use a narrower query.
salesbuildr-cli sync && salesbuildr-cli quote stale --days 14 && salesbuildr-cli opportunity velocity
Refresh the store, then list aging quotes and pipeline cycle-time in one pass.
salesbuildr-cli quote thin --floor 20 --agent
List only the under-priced lines with the fields that matter, narrowed for an agent.
salesbuildr-cli sync && salesbuildr-cli pricing drift
After re-syncing the catalog, flag pricing books whose prices drifted from catalog.
salesbuildr-cli company whitespace "Acme Managed IT" --json
Catalog products this company has never been quoted, ready to pipe into prep notes.
salesbuildr-cli sql "SELECT name, mpn, markup, price FROM product WHERE markup < 25 ORDER BY markup"
Query the synced catalog offline for products priced below a 25% markup floor.
Set SALESBUILDR_API_KEY to an API key generated under Admin > Integrations > API Key, and SALESBUILDR_TENANT to your tenant subdomain (acme for https://acme.salesbuildr.com). Advanced: SALESBUILDR_BASE_URL overrides the full base URL and must include the /public-api suffix (https://acme.salesbuildr.com/public-api). The CLI sends the key in the api-key header on every request.
Run salesbuildr-cli doctor to verify setup.
Add --agent to any command. Expands to: --json --compact --no-input --no-color --yes.
Pipeable - JSON on stdout, errors on stderr
Filterable - --select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
salesbuildr-cli category public-get-all-categories --agent --select id,name,status
Previewable - --dry-run shows the request without sending
Offline-friendly - sync/search commands can use the local SQLite store when available
Non-interactive - never prompts, every input is a flag
Explicit retries - use --idempotent only when an already-existing create should count as success, and --ignore-missing only when a missing delete target should count as success
Commands that read from the local store or the API wrap output in a provenance envelope:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
Parse .results for data and .meta.source to know whether it's live or local. A human-readable N results (live) summary is printed to stderr only when stdout is a terminal AND no machine-format flag (--json, --csv, --compact, --quiet, --plain, --select) is set - piped/agent consumers and explicit-format runs get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
salesbuildr-cli feedback "the --since flag is inclusive but docs say exclusive"
salesbuildr-cli feedback --stdin < notes.txt
salesbuildr-cli feedback list --json --limit 10
Entries are stored locally at ~/.local/share/salesbuildr-cli/feedback.jsonl. They are never POSTed unless SALESBUILDR_FEEDBACK_ENDPOINT is set AND either --send is passed or SALESBUILDR_FEEDBACK_AUTO_SEND=true. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Every command accepts --deliver <sink>. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|---|
stdout | Default; write to stdout only |
file:<path> | Atomically write output to <path> (tmp + rename) |
webhook:<url> | POST the output body to the URL (application/json or application/x-ndjson when --compact) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
salesbuildr-cli profile save briefing --json
salesbuildr-cli --profile briefing category public-get-all-categories
salesbuildr-cli profile list --json
salesbuildr-cli profile show briefing
salesbuildr-cli profile delete briefing --yes
Explicit flags always win over profile values; profile values win over defaults. agent-context lists all available profiles under available_profiles so introspecting agents discover them at runtime.
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Parse $ARGUMENTS:
help, or --help → show salesbuildr-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/salesbuildr/cmd/salesbuildr-mcp@latest
claude mcp add salesbuildr-mcp -- salesbuildr-mcp
claude mcp listwhich salesbuildr-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:
salesbuildr-cli <command> [subcommand] [args] --agent
salesbuildr-cli <command> --help.Alternatives
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
K-Dense-AI/scientific-agent-skills
Query and download public cancer imaging data from NCI Imaging Data Commons using idc-index. Use for accessing large-scale radiology (CT, MR, PET) and pathology datasets for AI training or research. No authentication required. Query by metadata, visualize in browser, check licenses.
github/awesome-copilot
Use this skill whenever the user mentions IP geolocation feeds, RFC 8805, geofeeds, or wants help creating, tuning, validating, or publishing a self-published IP geolocation feed in CSV format. Intended user audience is a network operator, ISP, mobile carrier, cloud provider, hosting company, IXP, or satellite provider asking about IP geolocation accuracy, or geofeed authoring best practices. Helps create, refine, and improve CSV-format IP geolocation feeds with opinionated recommendations beyon
K-Dense-AI/scientific-agent-skills
Analyze Neuropixels extracellular recordings end-to-end with SpikeInterface. Covers loading SpikeGLX/Open Ephys/NWB data, preprocessing, drift/motion correction, Kilosort4 (and CPU) spike sorting, quality metrics, and unit curation (threshold-based, model-based UnitRefine, and AI-assisted visual review). Use when working with Neuropixels 1.0/2.0 recordings, spike sorting, or extracellular electrophysiology analysis.