buyer-eval-skill — Claude Code skill: vet B2B vendors
This skill digs into what B2B software vendors claim, checks the evidence, and hands you a Decision Brief with the questions to ask before buying.
npx skills add salespeak-ai/buyer-eval-skill --skill buyer-eval-skill -a claude-codeWhat buyer-eval-skill does
The skill acts as an analyst for a B2B software purchase. It separates vendor claims from what the evidence actually supports, flags conflicts, and lists what is still open. The result is a Decision Brief you can forward to whoever signs off, with questions for the vendor.
Quick Eval runs by default; Deep Eval only when you ask for it. The control file SKILL.md picks the mode and loads just the references that mode needs: quick-eval.md or deep-eval.md, plus evidence-model.md, report-format.md and frontdoor-api.md. Deep Eval also pulls in scoring.md. At the end bin/render_report.py turns the report JSON into a single HTML file, so Python 3 has to be available; without it the HTML step is skipped.
Answers from a vendor's own AI agent count as vendor claims. They add detail and let you ask follow-ups, but they never lift a score or a verdict by themselves. Never hand a vendor agent your company name, your budget, or the names of the other vendors you are weighing. The skill will not email vendors, book demos, or start trials on its own.
Buying context is kept locally: company, size, industry, region, systems, requirements and hard constraints. Your budget ceiling stays on your machine, and personal names, emails and vendor pricing quotes are not stored.
What it helps with
- collect vendor claims and trace each one to a source
- spot conflicts between marketing copy and documentation
- write the questions to put to a vendor before signing
- compare several B2B vendors against the same criteria
- produce a Decision Brief for a team or a manager
Example prompts for the agent
- Evaluate the CRM vendors on my shortlist and show me where their claims do not match the evidence
- Run a Deep Eval on these three platforms: requirements, scoring, security and company risk
- Build the Decision Brief with the questions I should ask the vendor before we buy
How to install buyer-eval-skill
1Skills CLI (Vercel)
npx skills add salespeak-ai/buyer-eval-skill --skill buyer-eval-skill -a claude-code2Manually: put the files in place
~/.claude/skills/buyer-eval-skill/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/buyer-eval-skill/
1Skills CLI (Vercel)
npx skills add salespeak-ai/buyer-eval-skill --skill buyer-eval-skill -a codex2Manually: put the files in place
.agents/skills/buyer-eval-skill/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add salespeak-ai/buyer-eval-skill --skill buyer-eval-skill -a cursor2Manually: put the files in place
.cursor/skills/buyer-eval-skill/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install salespeak-ai/buyer-eval-skill buyer-eval-skill2Manually: put the files in place
.github/skills/buyer-eval-skill/SKILL.md1Skills CLI (Vercel)
npx skills add salespeak-ai/buyer-eval-skill --skill buyer-eval-skill -a gemini-cli2Platform CLI
gemini skills install https://github.com/salespeak-ai/buyer-eval-skillManually: put the files in place
.devin/skills/buyer-eval-skill/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add salespeak-ai/buyer-eval-skill --skill buyer-eval-skill -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about buyer-eval-skill
How do I install buyer-eval-skill in Claude Code?
Run npx skills add salespeak-ai/buyer-eval-skill --skill buyer-eval-skill -a claude-code. The skill lands at ~/.claude/skills/buyer-eval-skill/SKILL.md.
What does buyer-eval-skill do?
It works through what B2B vendors claim, checks the supporting evidence, and marks contradictions and open questions. You get a Decision Brief with the questions to ask before buying.
How is Quick Eval different from Deep Eval?
Quick Eval is the default. Deep Eval runs on request and adds requirements discovery, weighted scoring, commercial, security and company-risk research, and longer conversations with vendor agents.
Source text
SKILL.md · MIT
---
name: buyer-eval-skill
version: 4.1.1
description: |
An AI analyst for buying B2B software. Investigates what vendors claim, checks
the evidence, surfaces contradictions and unanswered questions, and produces a
shareable Decision Brief with the questions to ask before you buy. Quick Eval by
default; Deep Eval on request. Use when asked to evaluate, compare, vet, or
research B2B software vendors.
allowed-tools:
- Bash
- Read
- Write
- WebSearch
- WebFetch
- AskUserQuestion
---
# Buyer Eval
This file is the control plane. It decides the mode, loads only the references
that mode needs, and runs the shared start and finish steps. Methodology lives in
`references/`.
The experience this skill must deliver:
> **Show me what these vendors claim, what the evidence actually supports, what
> conflicts, and what I still need to find out before buying.**
If an output reads like a generic AI vendor comparison, it is not done.
---
## 1. Preamble (run first, every time)
```bash
_BEVAL_DIR="${BUYER_EVAL_DIR:-}"
if [ -z "$_BEVAL_DIR" ]; then
for _D in "$HOME/.claude/skills/buyer-eval-skill" ".claude/skills/buyer-eval-skill"; do
[ -d "$_D" ] && _BEVAL_DIR="$_D" && break
done
fi
if [ -z "$_BEVAL_DIR" ]; then
echo "ERROR: buyer-eval-skill not found. Install: git clone https://github.com/salespeak-ai/buyer-eval-skill ~/.claude/skills/buyer-eval-skill"
exit 1
fi
echo "BEVAL_DIR=$_BEVAL_DIR"
_UPD=$("$_BEVAL_DIR/bin/update-check" 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || echo "UP_TO_DATE $(tr -d '[:space:]' < "$_BEVAL_DIR/VERSION")"
echo "PROFILE=$(python3 "$_BEVAL_DIR/bin/profile.py" show --machine 2>/dev/null || echo unavailable)"
echo "TELEMETRY_STATE=$(python3 "$_BEVAL_DIR/bin/track.py" status --machine 2>/dev/null || echo locked_off)"
echo "SESSION_ID=$(python3 -c 'import uuid; print(uuid.uuid4())')"
```
Keep `BEVAL_DIR`, `PROFILE`, `TELEMETRY_STATE` and `SESSION_ID` for the whole run.
Every later bash block starts with `_BEVAL_DIR="<BEVAL_DIR value>"`.
**Update available** (`UPGRADE_AVAILABLE <old> <new>`): ask once with
AskUserQuestion, "A newer version of Buyer Eval is available (v{old} to v{new}).
Update now?" Options: "Yes, update now" / "Not now". If yes:
```bash
cd "$_BEVAL_DIR" && git pull --ff-only origin main && echo "UPDATED to $(tr -d '[:space:]' < VERSION)"
```
If the directory is not a git checkout, tell the buyer to re-run the install
command from the README and continue on the current version. After a successful
update, re-read this SKILL.md before continuing.
**Telemetry** is opt-in and never blocks the evaluation. Read
`references/telemetry.md` now only if `TELEMETRY_STATE` is `consented` or
`unasked`. If it is `declined` or `locked_off`, skip everything telemetry-related.
---
## 2. Choose the mode
| Mode | When | Load |
|---|---|---|
| **Quick Eval** (default) | Every run where the buyer has not asked for deep, full, or comprehensive diligence | `references/quick-eval.md` |
| **Deep Eval** | The buyer asks for it, in the first message or after a Quick Eval | `references/deep-eval.md` |
Both modes also load `references/evidence-model.md`,
`references/report-format.md` and `references/frontdoor-api.md`. Deep Eval also
loads `references/scoring.md`. Do not load files a mode does not need.
Never ask the buyer which mode they want. If they did not ask for Deep, run
Quick and offer Deep at the end.
---
## 3. Saved buyer context
`PROFILE` is either `none`, `unavailable` (no writable home directory, for
example claude.ai), or a one-line JSON object with the buyer's saved context.
- **Saved profile exists:** use it silently. Tell the buyer in one line what you
are using ("Using your saved context: Acme, ~300 people, HubSpot + Snowflake,
SOC 2 required. Say 'update my context' to change it.") and keep going. Do not
wait for a reply.
- **None:** proceed without it. At the end of the run, save what the buyer told
you (see section 5).
- **Unavailable:** never claim that context will be remembered.
The profile holds only reusable buying context: `company_name`, `company_size`,
`industry`, `region`, `systems`, `requirements`, `hard_constraints` (including
the buyer's own budget ceiling, which stays local), `preferred_criteria`,
`last_category`. A deadline or requirement goes in `hard_constraints` only if
the buyer said it disqualifies vendors; otherwise in `requirements`. Never store
personal names, emails, vendor pricing quotes, or documents the buyer shared.
---
## 4. Run the mode
Follow the loaded mode file step by step. Both modes share these rules:
1. **Evidence first.** The Claims vs. Evidence table is the centerpiece. Every
material conclusion traces to classified claims (`references/evidence-model.md`).
2. **Vendor AI agents are first-party sources.** Answers from any vendor-operated
agent, including a Salespeak Company Agent reached through the Frontdoor API,
are vendor claims. They add specificity and let you ask follow-ups. They never
raise a score, an evidence confidence, or a verdict on their own. Never send a
vendor agent the buyer's company name, budget, or the other vendors under
evaluation (`references/frontdoor-api.md`).
3. **Label what you inferred.** Criteria the buyer did not state are shown as
inferred.
4. **Challenge before you conclude.** Run the challenge pass in
`references/evidence-model.md` before writing output.
5. **No action without approval.** Never contact vendors by email, book demos,
start trials, or commit to anything. Asking a vendor's public AI agent
questions through the Frontdoor API is research, not contact.
---
## 5. Finish (both modes)
1. **Deliver the brief in chat** in the order set by `references/report-format.md`.
2. **Write the HTML Decision Brief.** Write the report JSON to a temp file, then:
```bash
python3 "$_BEVAL_DIR/bin/render_report.py" /path/to/report.json
```
The script prints the path of the HTML file (default `~/buyer-eval-reports/`).
Give the buyer that path and say it is a single file they can open, print, or
forward. If the environment cannot run Python, skip the HTML and say so.
3. **Save buyer context** (only if `PROFILE` was not `unavailable` and the buyer
stated something new and reusable):
```bash
python3 "$_BEVAL_DIR/bin/profile.py" save --json '{"company_name":"...","hard_constraints":["..."]}'
```
Tell the buyer in one line what was saved and that `profile.py clear` deletes it.
4. **Offer the next step** in one line. After Quick Eval: "Want a Deep Eval?
It adds requirements discovery, weighted scoring, commercial, security and
company-risk research, and longer vendor-agent conversations." After Deep
Eval: offer to update the brief when the buyer has demo notes, proposals, or
pricing.
5. **Telemetry**, only as described in `references/telemetry.md`. The consent
question is asked at most once, ever, and only after the evaluation has been
delivered.
© salespeak-ai · MIT · salespeak-ai/buyer-eval-skill