@vruum/skills 0.6.21 → 0.6.23

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vruum",
3
- "version": "0.6.21",
3
+ "version": "0.6.23",
4
4
  "description": "Vruum AI skills + remote MCP server for B2B GTM teams. Slash commands for outreach triage, engagement triage, pipeline filling, prospect enrichment, and reply diagnosis, paired with the full Vruum MCP tool surface over OAuth 2.1.",
5
5
  "author": {
6
6
  "name": "Vruum AI",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vruum",
3
- "version": "0.6.21",
3
+ "version": "0.6.23",
4
4
  "description": "Vruum AI skills + remote MCP server for B2B GTM teams. Skills for outreach triage, engagement triage, pipeline filling, prospect enrichment, and reply diagnosis, paired with the full Vruum MCP tool surface over OAuth 2.1.",
5
5
  "author": {
6
6
  "name": "Vruum AI",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vruum/skills",
3
- "version": "0.6.21",
3
+ "version": "0.6.23",
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": {
@@ -42,5 +42,5 @@
42
42
  "outreach",
43
43
  "gtm"
44
44
  ],
45
- "contentHash": "e410c9d89bfbc32777e45d0fcfb39383d2497f7c7f9e57d8867159e73591b6ac"
45
+ "contentHash": "cc0f34965c74a88434f72409179765785cd1fbe3edd2675cd9a936756213d88f"
46
46
  }
@@ -36,7 +36,7 @@ Keep it short. The user knows their queue — they just need the numbers to deci
36
36
 
37
37
  ### Step 2: Build the dispatch list and categorize
38
38
 
39
- Once the user says go (or picks a focus area), pull the lightweight message queue via `search` with type=messages and limit=100 — make TWO cheap calls: `status=needs_draft` (the authoring lane) and `status=draft` (the review lane). Each returns message IDs, person names, categories, sequence numbers, and match scores WITHOUT message content — very cheap on tokens. Tag each item with its status so dispatch routes it to the right mode: `needs_draft` → authoring, `draft` → review. (Omitting the status filter returns the default actionable set — needs_draft + draft + approved — but pull the two lanes explicitly so already-approved messages awaiting send don't enter triage.)
39
+ Once the user says go (or picks a focus area), pull the lightweight message queue via `search` with type=messages, `fields=compact` and limit=100 — make TWO cheap calls: `status=needs_draft` (the authoring lane) and `status=draft` (the review lane). `fields=compact` returns message_id, person_name, category, sequence_number, channel, status, match_score, touches_completed, and campaign_id WITHOUT message content — very cheap on tokens. Tag each item with its status so dispatch routes it to the right mode: `needs_draft` → authoring, `draft` → review. (Omitting the status filter returns the default actionable set — needs_draft + draft + approved — but pull the two lanes explicitly so already-approved messages awaiting send don't enter triage.)
40
40
 
41
41
  **Authoring mode (needs_draft items).** The backend no longer writes outreach prose — touches arrive as `needs_draft` items carrying the decision context (channel, touch number, signals) and no content. These are not rewrites; they are blank pages. For each needs_draft item the subagent AUTHORS the message: check the person's research freshness from the review item itself — `person_researched_at` / `company_researched_at` / `research_status` are on the payload, no extra fetch needed (older than ~14 days or missing → research first with WebSearch + the research reads, and persist what you learn via `research` action=save_person, plus action=save_company when you learned something about the company, so it compounds), then write the touch from scratch in the seller's voice against the same quality standards as any review, then submit it via `manage_messages` action=edit with the content — that transitions the item to a normal draft — and approve only what the user's standing instructions allow. Inbound replies also arrive as needs_draft (category inbound_reply, with the conversation attached): author the reply with full thread context. If a prospect turns out to be a bad fit at authoring time, skip the item and say why — authoring is the second qualification gate, not an obligation to write.
42
42
 
@@ -46,7 +46,7 @@ Categorize into three processing groups:
46
46
  2. **Follow-ups** (sequence_number >= 2) — need research and quality check
47
47
  3. **T1 initials** (sequence_number = 1) — usually structural check only
48
48
 
49
- Present the queue composition before dispatching:
49
+ Present the queue composition before dispatching. For the counts in one call, use `search` with type=messages and `view=breakdown` — it returns grouped counts (by status, category, sequence/touch number, channel, and campaign) over the whole queue plus a compact items page, so you don't have to tally the pages yourself:
50
50
 
51
51
  "Oaklet: 15 T1s, 5 T2s, 1 T3, 0 replies. How do you want to handle each group?"
52
52
 
@@ -48,9 +48,9 @@ Use the map to explain WHY a recommendation is next ("you have contacts but no c
48
48
 
49
49
  ## Step 3: Pick the mode
50
50
 
51
- **Onboarding mode** — when profile is missing/thin OR no campaigns exist. Walk the first-value sequence in order, one milestone per exchange, handing off at each step:
51
+ **Onboarding mode** — when profile is missing/thin OR no campaigns exist. This is a freshly connected account: land one fast win in the very first exchange, then walk the sequence to the first reviewed draft, one milestone per exchange, handing off at each step:
52
52
 
53
- 1. **Profile**: offer `manage_settings` action=auto_fill (bootstraps from their website), then review/correct together; save via action=profile. This powers every draft Vruum writes — worth five careful minutes.
53
+ 1. **Profile (the first quick win)**: run `manage_settings` action=auto_fill Vruum reads their website and builds a starting picture of their ICP, value proposition, and target titles in under a minute. Show that back to them right away: that reveal *is* the first tangible payoff ("here's your revenue engine's starting picture, built from your site"). Then review/correct together and save via action=profile. This powers every draft Vruum writes — worth five careful minutes.
54
54
  2. **Channels**: check channel_status; for any disconnected channel send them the exact settings URL to connect LinkedIn/email (connection happens in the web plumbing, not the harness). Don't block the session on it — continue and circle back.
55
55
  3. **First contacts**: their CSV (`import_prospects`, offer custom-column mapping + list mirroring) or sourced fresh (`/pipeline-fill`).
56
56
  4. **First campaign**: invoke `/campaign-builder` and narrate.