MCP HubMCP Hub
스킬 목록으로 돌아가기

buyer-eval

salespeak-ai
업데이트됨 5 days ago
62
4
62
GitHub에서 보기
개발aiapi

정보

이 스킬은 귀사 정보를 조사하고, 벤더 AI 에이전트를 API를 통해 질의하며, 일곱 가지 차원에서 점수를 매기는 방식으로 구조화된 B2B 소프트웨어 벤더 평가를 자동화합니다. 정보에 기반한 구매 결정을 위해 투명한 근거와 함께 비교 추천을 생성합니다. B2B 소프트웨어 벤더를 평가, 비교 또는 조사할 필요가 있을 때 사용하세요.

빠른 설치

Claude Code

추천
기본
npx skills add salespeak-ai/buyer-eval-skill -a claude-code
플러그인 명령대체
/plugin add https://github.com/salespeak-ai/buyer-eval-skill
Git 클론대체
git clone https://github.com/salespeak-ai/buyer-eval-skill.git ~/.claude/skills/buyer-eval

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

Preamble (run first, every time)

# Detect skill directory
_BEVAL_DIR=""
for _D in "$HOME/.claude/skills/buyer-eval-skill" ".claude/skills/buyer-eval-skill"; do
  [ -d "$_D" ] && _BEVAL_DIR="$_D" && break
done

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

# Check for updates
_UPD=$("$_BEVAL_DIR/bin/update-check" 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || echo "UP_TO_DATE $(cat "$_BEVAL_DIR/VERSION" 2>/dev/null | tr -d '[:space:]')"

If output shows UPGRADE_AVAILABLE <old> <new>:

Use AskUserQuestion to ask the buyer:

  • Question: "A newer version of the buyer evaluation skill is available (v{old} → v{new}). Update now?"
  • Options: ["Yes, update now", "Not now — continue with current version"]

If "Yes, update now":

_BEVAL_DIR=""
for _D in "$HOME/.claude/skills/buyer-eval-skill" ".claude/skills/buyer-eval-skill"; do
  [ -d "$_D" ] && _BEVAL_DIR="$_D" && break
done

if [ -d "$_BEVAL_DIR/.git" ]; then
  cd "$_BEVAL_DIR" && git pull origin main && echo "UPDATED to $(cat VERSION | tr -d '[:space:]')"
else
  _TMP=$(mktemp -d)
  git clone --depth 1 https://github.com/salespeak-ai/buyer-eval-skill.git "$_TMP/buyer-eval-skill"
  mv "$_BEVAL_DIR" "$_BEVAL_DIR.bak"
  mv "$_TMP/buyer-eval-skill" "$_BEVAL_DIR"
  rm -rf "$_BEVAL_DIR.bak" "$_TMP"
  echo "UPDATED to $(cat "$_BEVAL_DIR/VERSION" | tr -d '[:space:]')"
fi

Tell the user the version was updated, then re-read the EVALUATION.md file from the updated directory and proceed with the skill.

If "Not now": Continue with the current version.

If output shows UP_TO_DATE: Continue silently.


Load the evaluation skill

After the preamble, read the full evaluation methodology:

_BEVAL_DIR=""
for _D in "$HOME/.claude/skills/buyer-eval-skill" ".claude/skills/buyer-eval-skill"; do
  [ -d "$_D" ] && _BEVAL_DIR="$_D" && break
done
echo "$_BEVAL_DIR/EVALUATION.md"

Read the file at the path printed above using the Read tool. That file contains the complete evaluation methodology — follow it step by step from STEP 1 through STEP 9.


Telemetry (opt-in, off by default)

This skill can send anonymized usage data back to Salespeak so the questions it generates for vendors can keep getting better. Nothing is ever sent without explicit user consent. Names, emails, companies, and vendor responses are never sent.

Initialize telemetry state at run start

Right after loading EVALUATION.md and before STEP 1, run:

_BEVAL_DIR=""
for _D in "$HOME/.claude/skills/buyer-eval-skill" ".claude/skills/buyer-eval-skill"; do
  [ -d "$_D" ] && _BEVAL_DIR="$_D" && break
done
echo "TELEMETRY_STATE=$(python3 "$_BEVAL_DIR/bin/track.py" status --machine)"
echo "SESSION_ID=$(python3 -c 'import uuid; print(uuid.uuid4())')"

Capture both values. Use them throughout the run.

TELEMETRY_STATE will be one of:

  • consented — fire each event live as it happens
  • unasked — accumulate events in your own working memory; ask for consent at the end
  • declined or locked_off — do nothing telemetry-related for the entire run

What to track and when

These seven sub-events are the only ones the skill emits. Do not invent new ones.

Sub-eventFire whenFields
skill_startedRight after capturing TELEMETRY_STATEskill_version (from VERSION file)
eval_contextOnce, right after STEP 5.1 (category confirmed)category (skill-inferred slug), vendor_count (int), vendors (array of domains), company_agents_found (int — count of vendors with enabled:true from Frontdoor discover), evaluation_path ("company_agent_engaged" | "passive_research_only" | "mixed")
discovery_question_askedAfter the buyer answers a discovery question. Fire for STEP 2 (why-now) and for each STEP 5.3 domain-expert question.step ("STEP_2" | "STEP_5_3"), category (slug, or null for STEP_2), topic (short slug you choose, e.g. "why_now", "high_touch_vs_low_touch", "product_analytics_stack"), question_text (the exact question you asked the buyer)
vendor_questionFor every (vendor, dimension) pair, fire one or more events with the question(s) you formulate per the §6.5 question bank — regardless of whether a Company Agent exists.vendor (domain), category (slug), dimension (the evaluation dimension), question_text (the specific question), delivery_method ("asked_via_company_agent" if actually POSTed via Frontdoor and got an answer, "would_have_asked" if no Company Agent existed, "connection_failed" if Frontdoor errored)
vendor_scoredAfter scoring each dimension for each vendor in STEP 8vendor, dimension, score (numeric, 1-5; do NOT fire for [GAP] dimensions)
eval_completedRight after delivering the final output in STEP 9vendor_count, winner (vendor domain or null if no clear winner)
eval_abortedOnly if the user bails before STEP 9 completesat_step (e.g., "STEP 6")

Never include: buyer name, buyer company, buyer email, anything the buyer typed about themselves, the buyer's answers to discovery questions, vendor response text.

Step-level firing map

Use this as the canonical map between EVALUATION.md steps and event emissions. Fire events at these exact moments — no earlier, no later.

EVALUATION.md stepEvents to fireNotes
Right after capturing TELEMETRY_STATE (before STEP 1)skill_startedOne event
STEP 2 — buyer answers the why-now questiondiscovery_question_asked (step:"STEP_2", topic:"why_now")One event. category is null here. question_text is the canonical why-now question.
STEP 5.1 — category confirmedeval_contextOne event. company_agents_found and evaluation_path may not be known yet — use null for company_agents_found here and update evaluation_path later if needed; or fire eval_context AFTER STEP 6.1 discover calls so all fields are populated (preferred — fire it after discover so the path is known).
STEP 5.3 — each domain-expert question askeddiscovery_question_asked (step:"STEP_5_3", topic:<your slug>)0-4 events depending on how many questions you ask. Slugs you choose should be short and category-relevant (e.g. "high_touch_vs_low_touch", "product_analytics_stack", "multi_entity_consolidation").
STEP 6.5 — for every (vendor, dimension) pairvendor_questionOne or more events per pair, regardless of Company Agent availability. Walk the §6.5 question bank, formulate the specific question(s) you'd ask the vendor for each dimension (Product Fit, Integration & Technical, Pricing & Commercial, Security & Compliance, Vendor Credibility, Customer Evidence, Support & Success). For each, fire vendor_question with the right delivery_method.
STEP 8 — each numeric score assignedvendor_scoredOne event per (vendor, dimension) that gets a numeric 1-5 score. Do not fire for [GAP] dimensions.
STEP 9 — final output deliveredeval_completedOne event
User abandons before STEP 9eval_abortedOnly if applicable

Critical change in v3.5: vendor_question no longer depends on Company Agent availability. Even when all vendors return enabled: false from Frontdoor discover, you must still walk the question bank, formulate questions you would have asked, and fire vendor_question events with delivery_method: "would_have_asked". The signal is what buyers want to know, not whether the vendor's bot answered.

How to fire events

If TELEMETRY_STATE == consented: fire each event live via Bash as it happens.

python3 "$_BEVAL_DIR/bin/track.py" event vendor_question \
  --session-id "$SESSION_ID" \
  --json '{"vendor":"acme.com","category":"customer_success_platform","dimension":"product_fit","question_text":"How does your X handle Y?","delivery_method":"would_have_asked"}'

The script silently no-ops on any error and never blocks the skill.

If TELEMETRY_STATE == unasked: do NOT call bin/track.py event. Instead, keep a running list of event objects in your own working memory as the eval proceeds. Each entry is a JSON object like:

{"sub_event":"vendor_question","vendor":"acme.com","category":"customer_success_platform","dimension":"product_fit","question_text":"...","delivery_method":"would_have_asked"}

At the end of STEP 9 (after delivering the full evaluation to the buyer), follow the consent prompt section below.

If TELEMETRY_STATE == declined or locked_off: do nothing telemetry-related. Skip the consent prompt entirely.

Consent prompt (only when TELEMETRY_STATE was unasked)

After STEP 9 output is delivered, print this block verbatim to the user, then use AskUserQuestion to ask the consent question:

─────────────────────────────────────────────────────────────
✓ Evaluation complete.

Before you go — one question, asked only this once.

Salespeak built this skill to help buyers cut through vendor noise.
To make it better, we'd love to learn what real buyers ask vendors.
With your permission, we'd send back anonymized data from this run
and future runs.

We'd send:
  • The questions this skill generated for vendor agents
  • The scores it gave each vendor
  • A random ID to group your runs together (not linked to you)

We will NEVER send:
  • Your name, email, or company
  • Anything you typed about yourself
  • Vendor responses

Verify it yourself:
  • Code: bin/track.py (plain Python, no third-party libraries)
  • Local audit log: ~/.salespeak/buyer-eval.log
    (every event we send is also written here — read it anytime)
  • Change your mind: python3 bin/track.py revoke
  • Delete your data: email [email protected] with your user ID
    (run `python3 bin/track.py show` to see it)
─────────────────────────────────────────────────────────────

Then use AskUserQuestion:

  • Question: "Help us improve the skill by sharing anonymized usage data from this run?"
  • Options: ["Yes, share anonymized data", "No thanks"]

If "Yes": pass the accumulated event list to grant. Build the events JSON as a single-line array (escape carefully — question_text may contain quotes; use Python's json.dumps if in doubt). Example:

python3 "$_BEVAL_DIR/bin/track.py" grant \
  --session-id "$SESSION_ID" \
  --events '[{"sub_event":"skill_started","skill_version":"3.5.0"},{"sub_event":"vendor_question","vendor":"acme.com","category":"customer_success_platform","dimension":"product_fit","question_text":"...","delivery_method":"would_have_asked"}]'

Confirm to the user: "Thanks — sharing enabled. Run python3 bin/track.py revoke anytime to disable."

If "No":

python3 "$_BEVAL_DIR/bin/track.py" decline

Confirm to the user: "Got it — no data shared. We won't ask again."

Enterprise note

If a system administrator has set BUYER_EVAL_NO_TELEMETRY=1 or deployed /etc/salespeak/buyer-eval.json with {"locked":true,"consent":false}, TELEMETRY_STATE will be locked_off and no consent prompt is shown. This is the documented escape hatch for enterprise IT.

GitHub 저장소

salespeak-ai/buyer-eval-skill
경로: SKILL.md
0
ai-agentb2bclaude-codeclaude-skillprocurementsalespeak

연관 스킬

qmd

개발

qmd는 BM25, 벡터 임베딩, 재순위화를 결합한 하이브리드 검색을 통해 로컬 파일을 색인화하고 검색할 수 있는 로컬 검색 및 색인화 CLI 도구입니다. 명령줄 사용과 Claude 통합을 위한 MCP(Model Context Protocol) 모드를 모두 지원합니다. 이 도구는 임베딩에 Ollama를 사용하고 색인을 로컬에 저장하여 터미널에서 직접 문서나 코드베이스를 검색하는 데 이상적입니다.

스킬 보기

subagent-driven-development

개발

이 스킬은 각 독립적인 작업마다 새로운 하위 에이전트를 배치하고 작업 사이에 코드 리뷰를 진행하여 구현 계획을 실행합니다. 이 리뷰 프로세스를 통해 품질 게이트를 유지하면서 빠른 반복 작업을 가능하게 합니다. 동일한 세션 내에서 대부분 독립적인 작업을 진행할 때 내장된 품질 검증과 함께 지속적인 진행을 보장하기 위해 사용하세요.

스킬 보기

mcporter

개발

mcporter 스킬은 개발자가 Claude에서 직접 Model Context Protocol(MCP) 서버를 관리하고 호출할 수 있도록 합니다. 이 스킬은 사용 가능한 서버를 나열하고, 인수를 사용해 해당 서버의 도구를 호출하며, 인증 및 데몬 생명주기를 처리하는 명령어를 제공합니다. 개발 워크플로우에서 MCP 서버 기능을 통합하고 테스트할 때 이 스킬을 사용하세요.

스킬 보기

adk-deployment-specialist

개발

이 스킬은 A2A 프로토콜을 사용하여 Vertex AI ADK 에이전트를 배포하고 오케스트레이션하며, AgentCard 검색, 작업 제출, 코드 실행 샌드박스 및 메모리 뱅크와 같은 지원 도구를 관리합니다. Python, Java 또는 Go 언어로 순차, 병렬 또는 루프 오케스트레이션 패턴을 갖춘 다중 에이전트 시스템 구축을 가능하게 합니다. Google Cloud에서 ADK 에이전트 배포 또는 에이전트 워크플로우 오케스트레이션을 요청받았을 때 사용하세요.

스킬 보기