@vruum/skills 0.4.5 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,6 +42,7 @@ npx @vruum/skills install --target /path/to/skills/dir
42
42
  - `/enrich-prospect` — Deep prospect diarization — synthesize everything known about a person into a structured intelligence profile. Use when: enrich prospect, deep research, profile this person, who is this person, research prospect, diarize prospect, prospect briefing.
43
43
  - `/outreach-triage` — Review and approve your pending outreach drafts across LinkedIn and email. Use when: triage, review queue, morning review, check messages, approve outreach, what needs review.
44
44
  - `/pipeline-fill` — Fill your outreach pipeline by importing new Sales Navigator prospects. Pre-filters results against ICP before import to save research credits. Use when: fill pipeline, import prospects, daily imports, need more prospects.
45
+ - `/segment-doctor` — Diagnose and fix struggling outreach segments. Use when: fix a segment, diagnose segment, why is my segment not working, segment health, low reply rate, check segments, which segments need help.
45
46
  - `/vruum-skills-upgrade` — Upgrade @vruum/skills to the latest npm version and re-sync ~/.vruum/. Use when: upgrade vruum skills, update vruum, pull latest vruum skills, or when the preamble reports UPGRADE_AVAILABLE.
46
47
  <!-- generated:skills-end -->
47
48
 
@@ -2,13 +2,13 @@
2
2
  name: vruum-engagement-reviewer
3
3
  description: Reviews engagement queue items (LinkedIn comments, reactions, content posts) using Vruum MCP tools. Evaluates warming/nurture/marketing engagements for relevance, AI tells, and relationship stage fit. Also reviews demand gen content posts.
4
4
  mcpServers:
5
- - vruum-local
5
+ - vruum
6
6
  tools:
7
- - mcp__vruum-local__get_engagement_review
8
- - mcp__vruum-local__manage_engagement
9
- - mcp__vruum-local__get_content_review
10
- - mcp__vruum-local__manage_content_post
11
- - mcp__vruum-local__get_person_360
7
+ - mcp__vruum__get_engagement_review
8
+ - mcp__vruum__manage_engagement
9
+ - mcp__vruum__get_content_review
10
+ - mcp__vruum__manage_content_post
11
+ - mcp__vruum__get_person_360
12
12
  - WebSearch
13
13
  - WebFetch
14
14
  ---
@@ -2,16 +2,16 @@
2
2
  name: vruum-outreach-reviewer
3
3
  description: Reviews and edits outreach messages using Vruum MCP tools. Evaluates drafts for cross-touch deduplication, AI tells, personalization depth, and strategic fit. Edits messages that need improvement and returns structured summaries.
4
4
  mcpServers:
5
- - vruum-local
5
+ - vruum
6
6
  tools:
7
- - mcp__vruum-local__get_outreach_review
8
- - mcp__vruum-local__edit_message
9
- - mcp__vruum-local__search_knowledge_base
10
- - mcp__vruum-local__get_person_research
11
- - mcp__vruum-local__get_person_360
12
- - mcp__vruum-local__get_company_research
13
- - mcp__vruum-local__fetch_company_website
14
- - mcp__vruum-local__fetch_linkedin_data
7
+ - mcp__vruum__get_outreach_review
8
+ - mcp__vruum__edit_message
9
+ - mcp__vruum__search_knowledge_base
10
+ - mcp__vruum__get_person_research
11
+ - mcp__vruum__get_person_360
12
+ - mcp__vruum__get_company_research
13
+ - mcp__vruum__fetch_company_website
14
+ - mcp__vruum__fetch_linkedin_data
15
15
  - WebSearch
16
16
  - WebFetch
17
17
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vruum/skills",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "description": "Vruum AI skills for Claude Code, Claude Desktop, Codex CLI, and any AI assistant with a skill directory. Slash commands for outreach triage, engagement triage, pipeline filling, prospect enrichment, and reply diagnosis. Pairs with the Vruum MCP server at https://api.vruum.ai/mcp.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -36,5 +36,5 @@
36
36
  "outreach",
37
37
  "gtm"
38
38
  ],
39
- "contentHash": "b0e043a4560fc5d2eda1f7238a08f58d8d1865c97b28442574d6c509eb74e53a"
39
+ "contentHash": "e80f9da6dae9eddc25e0dd9c3fef27fcf04c55a903599a90c464266599e7242d"
40
40
  }
@@ -31,15 +31,15 @@ This skill uses the custom agent `vruum-pipeline-filter` defined at `~/.claude/a
31
31
 
32
32
  ### MCP access requirements
33
33
 
34
- Subagents can only access Vruum MCP if `vruum-local` is configured as a user-scoped HTTP MCP server in `~/.claude.json`. Cloud MCP servers (`claude.ai Vruum`) are NOT inherited by subagents.
34
+ Subagents can only access Vruum MCP if `vruum` is configured as a user-scoped HTTP MCP server in `~/.claude.json`. Cloud MCP servers (`claude.ai Vruum`) are NOT inherited by subagents.
35
35
 
36
- To set up: `claude mcp add --transport http --scope user vruum-local https://api.vruum.ai/mcp` (one-time, requires OAuth).
36
+ To set up: `claude mcp add --transport http --scope user vruum https://api.vruum.ai/mcp` (one-time, requires OAuth).
37
37
 
38
38
  ### Dispatch methods (in order of preference)
39
39
 
40
40
  1. **Agent tool** (primary): Spawn subagents via the Agent tool. Subagents inherit local MCP servers from `~/.claude.json` and can call Vruum tools directly. Use `run_in_background=true` for parallelism.
41
41
 
42
- 2. **CLI dispatch**: `claude --agent vruum-pipeline-filter --allowedTools "mcp__vruum-local__*,mcp__claude_ai_Vruum__*" -p "<prompt>" --output-format text --max-turns 20`. Use if Agent tool subagents can't reach MCP.
42
+ 2. **CLI dispatch**: `claude --agent vruum-pipeline-filter --allowedTools "mcp__vruum__*,mcp__claude_ai_Vruum__*" -p "<prompt>" --output-format text --max-turns 20`. Use if Agent tool subagents can't reach MCP.
43
43
 
44
44
  3. **Inline**: For well-targeted searches where pre-filtering adds little value, skip the subagent and import directly.
45
45
 
@@ -129,4 +129,4 @@ Before dispatching subagents, group segment fills by their saved search ID. With
129
129
  - The 5-minute cooldown on automated pipeline fills prevents duplicate imports if the skill runs twice in quick succession.
130
130
  - Pre-filtering saves ~$0.10-0.20 per dismissed profile (LinkedIn research + company research + match analysis costs).
131
131
  - If a search returns fewer profiles than needed, flag it as "drying up" so the user knows to create a new search or broaden targeting.
132
- - If subagent MCP connections fail, fall back to inline: preview in the main session, filter manually, import directly. This typically means `vruum-local` isn't in `~/.claude.json`.
132
+ - If subagent MCP connections fail, fall back to inline: preview in the main session, filter manually, import directly. This typically means `vruum` isn't in `~/.claude.json`.
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: segment-doctor
3
+ description: >-
4
+ Diagnose and fix struggling outreach segments. Use when: fix a segment,
5
+ diagnose segment, why is my segment not working, segment health, low reply
6
+ rate, check segments, which segments need help.
7
+ ---
8
+
9
+ ## Auto-update check
10
+
11
+ Before starting, run `~/.vruum/bin/vruum-skills-update-check` (path relative to this repo). Interpret output:
12
+ - `UPGRADE_AVAILABLE <old> <new>` → mention the available upgrade in one line and offer `/vruum-upgrade`. Then continue.
13
+ - `JUST_UPGRADED <old> <new>` → acknowledge in one line, then continue.
14
+ - Empty → proceed silently.
15
+
16
+ Never block skill execution on this check.
17
+
18
+ # Segment Doctor
19
+
20
+ You are a segment diagnostics and optimization agent. Your job is to identify struggling segments, diagnose root causes, and recommend (or apply) fixes.
21
+
22
+ ## Workflow
23
+
24
+ ### Step 1: Triage — health + trends
25
+
26
+ Call `get_segments` to list all segments. For each segment, dispatch three calls in parallel:
27
+ - `diagnose_segment(segment_id=X)` — returns `health_score` (0–100), reply-rate vs company average, and ranked root causes (targeting, messaging, channel, saturation, cadence, timing).
28
+ - `get_performance_metrics(view='funnel', segment_id=X, start_date=<today_utc - 6d>, end_date=<today_utc + 1d>)` — current 7-day window (7 full days ending today, inclusive).
29
+ - `get_performance_metrics(view='funnel', segment_id=X, start_date=<today_utc - 13d>, end_date=<today_utc - 7d>)` — prior 7-day window (7 full days ending the day before current starts — no shared days).
30
+
31
+ Use **UTC** dates in `YYYY-MM-DD` format. The backend filters use inclusive `gte(start_date)` + `lte(end_date)` against timestamp columns — so passing `end_date = today_utc + 1d` captures all of today's activity (timestamps < tomorrow 00:00 UTC), and the current/prior windows share no days. Example: if today (UTC) is 2026-04-22, current = `(2026-04-16, 2026-04-23)`, prior = `(2026-04-09, 2026-04-15)`.
32
+
33
+ If `get_segments` returns no segments, tell the user "No segments yet — create one in the Vruum app before running diagnosis" and stop.
34
+
35
+ Classify each segment by reply rate (from `diagnose_segment` output):
36
+ - **CRITICAL** — 30-day reply rate < 5% with ≥20 sent
37
+ - **WARNING** — 30-day reply rate 5–10% with ≥20 sent
38
+ - **HEALTHY** — 30-day reply rate ≥ 10%
39
+ - **INSUFFICIENT DATA** — `diagnose_segment` returned `insufficient_data: true` (fewer than 20 sent in 30d)
40
+
41
+ For WoW delta, compute `(current_reply_rate - prior_reply_rate) / prior_reply_rate`. Guards:
42
+ - **Brand-new segment** (prior window sent = 0): show "new segment, WoW N/A".
43
+ - **Low-volume** (prior window sent < 5): show "low volume — WoW unreliable" instead of a percentage.
44
+ - **Zero-baseline** (prior sent ≥ 5 but prior reply_rate = 0, so denominator would be 0): show the absolute change as percentage points, e.g. "0% → 3.2% (first replies this week)" instead of dividing.
45
+
46
+ Present results grouped by urgency:
47
+
48
+ "Segment health across N segments:
49
+
50
+ CRITICAL:
51
+ - 'IT Directors' — 2.1% reply rate (30d), 145 sent, 1 reply — WoW: -18%
52
+ - 'CFO Northeast' — 3.5% reply rate (30d), 28 sent, 1 reply — new segment, WoW N/A
53
+
54
+ WARNING:
55
+ - 'VP Engineering' — 7.2% reply rate (30d), trending down from 11% (WoW -34%)
56
+
57
+ INSUFFICIENT DATA (< 20 sends in 30d):
58
+ - 'New Segment' — only 8 sends. Need 20+ for diagnosis. Run /pipeline-fill to add volume, check back in a few days.
59
+
60
+ HEALTHY:
61
+ - 'DFW CFOs' — 14.3% reply rate (WoW +4%)
62
+ - 'Startup Founders' — 18.1% reply rate (low volume — WoW unreliable)
63
+
64
+ Want me to diagnose the critical and warning segments?"
65
+
66
+ Key behaviors:
67
+ - Never auto-diagnose `insufficient_data` segments. They need more volume first.
68
+ - If `get_performance_metrics` returns an empty funnel for the prior window, treat it as "new segment, WoW N/A" (not -100%).
69
+ - If the funnel is empty for the current window too, fall back to the 30-day reply rate from `diagnose_segment` output — don't show a fake zero.
70
+
71
+ ### Step 2: Diagnose root causes
72
+
73
+ For each segment the user wants to diagnose, you already have the `diagnose_segment` output from Step 1's parallel calls. Present the findings:
74
+
75
+ "**'IT Directors'** — Health score: 25/100
76
+
77
+ Root causes (ranked):
78
+ 1. **TARGETING (high)**: Average match score 58/100. Replied prospects average 82. Targeting is too broad.
79
+ → Recommendation: Tighten target titles, add industry filters
80
+
81
+ 2. **MESSAGING (high)**: Reply rate 2.1% vs company average 9.4% — segment performing at 22% of baseline.
82
+ → Recommendation: Review tone instructions, consider A/B test
83
+
84
+ 3. **CHANNEL (medium)**: Email 1.2%, LinkedIn 4.8% — LinkedIn is 4x more effective.
85
+ → Recommendation: Shift channel mix to prioritize LinkedIn
86
+
87
+ 4. **SATURATION (high)**: Pipeline source has 0 profiles available vs 15/day target.
88
+ → Recommendation: Broaden your Sales Navigator saved search criteria, then run `/pipeline-fill` to add volume.
89
+
90
+ Want me to apply any of these fixes?"
91
+
92
+ Key behaviors:
93
+ - If `diagnose_segment` returned `insufficient_data`, surface the tool's own `message` field verbatim. Don't re-derive the threshold logic.
94
+ - When multiple segments share the same root cause dimension (e.g., all have messaging issues), recommend a cross-segment fix first.
95
+
96
+ ### Step 3: Apply fixes (with approval)
97
+
98
+ For each recommended fix the user approves:
99
+
100
+ - **Targeting fix**: Suggest specific ICP field changes and call `update_segment` with new `target_titles`, `target_industries`, or `positioning_angle`.
101
+
102
+ - **Messaging fix**: Suggest revised `ai_tone_instructions` or `ai_selling_strategy` and call `update_segment`.
103
+
104
+ - **Channel fix**: Call `update_segment` with adjusted `allowed_channels`.
105
+
106
+ - **Saturation fix (recommend only)**: The client flow doesn't manage pipeline sources directly. Instead:
107
+ 1. Explain the saturation issue in plain terms ("your saved search is drying up — fewer new profiles available each day than your target").
108
+ 2. Recommend broadening the Sales Navigator saved search (wider titles, more industries, bigger geography).
109
+ 3. Tell the user to run `/pipeline-fill` to import prospects once they've adjusted the search.
110
+
111
+ Always confirm before applying. Show the exact fields that will change.
112
+
113
+ ### Step 4: Summary
114
+
115
+ After all fixes are applied:
116
+
117
+ "Segment doctor complete:
118
+ - 'IT Directors': Tightened target titles (removed 3 generic titles), shifted to LinkedIn-first channel mix
119
+ - 'VP Engineering': Updated tone instructions
120
+ - 'CFO Northeast': Suggested broader saved search; run /pipeline-fill once updated
121
+
122
+ Monitor results over the next 7 days. Run /segment-doctor again next week to check progress."
123
+
124
+ ## Notes
125
+
126
+ - `diagnose_segment` requires 20+ sent touches in 30 days for meaningful analysis. For newer segments, wait — do not attempt diagnosis.
127
+ - Reply-rate thresholds for health bands match `diagnose_segment.health_score` output: <30 ≈ CRITICAL, 30–75 ≈ WARNING, ≥75 ≈ HEALTHY (see `health_score` field).
128
+ - WoW comparison uses two `get_performance_metrics(view='funnel', segment_id=X)` calls — **always UTC dates in YYYY-MM-DD**, current = `(today-7d, today)`, prior = `(today-14d, today-7d)`. If prior-window sent < 5, show "low volume — WoW unreliable" instead of a percentage.
129
+ - Root causes are ranked by severity. Focus on the highest-severity issues first.
130
+ - Saturation fixes in the client flow are text recommendations only — clients cannot manage pipeline sources directly via MCP; they adjust Sales Nav and run `/pipeline-fill`.