@vruum/skills 0.6.68 → 0.6.70

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.68",
3
+ "version": "0.6.70",
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.68",
3
+ "version": "0.6.70",
4
4
  "description": "Connect your Vruum workspace to review revenue priorities, manage deals, research prospects, and prepare outreach through guided skills and authenticated MCP tools.",
5
5
  "author": {
6
6
  "name": "Vruum",
package/README.md CHANGED
@@ -109,14 +109,17 @@ the public skill instead of leaving a broken link.
109
109
  - `/pipeline-fill` — Source-agnostic pipeline orchestrator. Picks a source per campaign (Sales Nav / YC / CSV / account list / discovery), runs harness deep research, applies a pre-filter gate, then saves into the campaign via the backend authoritative match_score>=70 gate. Use when: fill pipeline, import prospects, daily imports, need more prospects, discover prospects from scratch, find buyers at these companies, deep research before import.
110
110
  - `/sales-nav-deep-fill` — Sales Nav harness source for /pipeline-fill. Pre-filters Sales Nav profiles via vruum-pipeline-filter, produces a candidate list, hands off to /pipeline-fill for deep research and import. Use when: sales nav with deep research, sales nav harness mode, in-chat sales nav.
111
111
  - `/vruum-guide` — Guide to running Vruum from your own AI harness. First run: guided onboarding from empty account to first reviewed outreach draft. After: reads live account state, recommends the single next most valuable action, hands off to the right skill. Use when: get started, onboarding, how do I use vruum, what should I do next, where do I start.
112
- - `/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.
112
+ - `/vruum-skills-upgrade` — Upgrade @vruum/skills to the latest npm version and re-sync ~/.vruum/. Use when the user explicitly asks: upgrade vruum skills, update vruum, or pull latest vruum skills. A passive update notice does not invoke this skill.
113
113
  - `/winback-fill` — Source winback candidates from closed-lost deals or churned customers. Surfaces people who went silent or lost a deal >90 days ago, where the loss reason wasn't 'no_fit'. Use when: winback, win back churned, reactivate, revive cold deals, 90-day silent revival, lost deal recovery, lost customer outreach.
114
114
  - `/yc-pipeline-fill` — YC harness source for /pipeline-fill. Scrapes YC's public Algolia index, extracts founder LinkedIn URLs, dedups, hands a candidate list to /pipeline-fill for deep research and import. Use when: YC pipeline fill, source from YC, fill campaign with YC founders, sales nav dried up, source YC.
115
115
  <!-- generated:skills-end -->
116
116
 
117
117
  ## Upgrade
118
118
 
119
- Skills auto-prompt to upgrade via the preamble. To upgrade explicitly:
119
+ Passive update checks do not interrupt the requested task or install updates.
120
+ After the task result, a skill may mention an available update once per
121
+ conversation. Invoke `/vruum-skills-upgrade` when you want its upgrade flow
122
+ (including the saved automatic-upgrade preference), or explicitly run:
120
123
 
121
124
  ```bash
122
125
  npx --yes @vruum/skills@latest install
package/install.js CHANGED
@@ -52,7 +52,7 @@ _UPD=$(~/.vruum/bin/vruum-skills-update-check 2>/dev/null || true)
52
52
  [ -n "$_UPD" ] && echo "$_UPD" || true
53
53
  \`\`\`
54
54
 
55
- If output shows \`UPGRADE_AVAILABLE <old> <new>\`: read \`~/.vruum/skills/vruum-skills-upgrade/SKILL.md\` and follow the inline upgrade flow. If \`~/.vruum/config.yaml\` has \`auto_upgrade: true\`, run the upgrade silently; otherwise AskUserQuestion with four options — (A) upgrade now, (B) upgrade with changelog preview, (C) snooze, (D) skip this session. If user picks snooze, bump the snooze level in \`~/.vruum/update-snoozed\` (format: \`<new_version> <level> <unix_epoch>\`; level 1 = 24h, 2 = 48h, 3+ = 7d). Then continue with the skill.
55
+ If output shows \`UPGRADE_AVAILABLE <old> <new>\`: Continue with the requested skill immediately. After delivering its result, mention the available update and \`/vruum-skills-upgrade\` in one optional line, at most once per conversation. Do not ask an upgrade question, run an installer, or invoke the upgrade skill from this passive check. Read \`~/.vruum/skills/vruum-skills-upgrade/SKILL.md\` only when the user explicitly asks to upgrade; its configuration and consent flow apply then.
56
56
 
57
57
  If output shows \`JUST_UPGRADED <from> <to>\`: tell the user "Running @vruum/skills v{to} (just updated!)" in one line, then continue.
58
58
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vruum/skills",
3
- "version": "0.6.68",
3
+ "version": "0.6.70",
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": "935d2cff928fcd38ce3918f9a9b03b10997239323f820f351224c843c3a6aa1c"
45
+ "contentHash": "14614746d660f2832e18dc75d8eb3d13f626a43341395f84eb5b9cdad2535f04"
46
46
  }
@@ -1,15 +1,21 @@
1
1
  ---
2
2
  name: vruum-skills-upgrade
3
- description: "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."
3
+ description: "Upgrade @vruum/skills to the latest npm version and re-sync ~/.vruum/. Use when the user explicitly asks: upgrade vruum skills, update vruum, or pull latest vruum skills. A passive update notice does not invoke this skill."
4
4
  ---
5
5
 
6
6
  # /vruum-skills-upgrade
7
7
 
8
8
  Upgrade the `@vruum/skills` npm package + re-sync `~/.vruum/` + relink all harness skill dirs.
9
9
 
10
- ## Inline upgrade flow (called from preamble)
10
+ For every explicit request, whether a slash command or natural language, start
11
+ with the fresh check in **Standalone mode** below. Do not reuse a passive notice
12
+ as proof that an upgrade is still available.
11
13
 
12
- If the calling skill's preamble reported `UPGRADE_AVAILABLE <old> <new>`, follow this flow. It runs inline — when done, the original skill continues.
14
+ ## Explicit upgrade flow
15
+
16
+ Use this flow only when the user explicitly requests an upgrade. A passive
17
+ `UPGRADE_AVAILABLE <old> <new>` notice must not interrupt another skill. If the
18
+ user requested an upgrade while doing other work, resume that work afterward.
13
19
 
14
20
  ### Step 1: decide whether to auto-upgrade
15
21
 
@@ -29,8 +35,8 @@ Use AskUserQuestion with these four options:
29
35
  [ $NEW_LEVEL -gt 3 ] && NEW_LEVEL=3
30
36
  echo "<new> $NEW_LEVEL $(date +%s)" > ~/.vruum/update-snoozed
31
37
  ```
32
- Replace `<new>` with the version the preamble reported.
33
- - **D) Skip this session** — do nothing, don't write snooze. Next session will re-prompt.
38
+ Replace `<new>` with the version the fresh check reported.
39
+ - **D) Skip this session** — do nothing, don't write snooze. Ask again only on another explicit upgrade request.
34
40
 
35
41
  ### Step 3: run the upgrade
36
42
 
@@ -59,7 +65,7 @@ rm -f ~/.vruum/last-update-check ~/.vruum/update-snoozed
59
65
 
60
66
  One line: `upgraded @vruum/skills $OLD → $NEW`. Then continue with the original skill.
61
67
 
62
- ## Standalone mode (user invoked `/vruum-skills-upgrade` directly)
68
+ ## Standalone mode (slash command or natural-language upgrade request)
63
69
 
64
70
  Force a fresh check first, then run the flow above starting from Step 1 so the automatic-upgrade setting is honored:
65
71
 
@@ -11,12 +11,12 @@ tenant bind to choose.
11
11
  # Step 1: pull closed-lost deals (scoped to your session's tenant)
12
12
  lost = search(type="deals", filters={"outcome": "lost"}, limit=200)
13
13
 
14
- # Step 2: keep deals lost between 90 days and 18 months ago
14
+ # Step 2: keep deals lost between 90 days and 365 days ago
15
15
  ninety_days_ago = now() - 90 days
16
- eighteen_months_ago = now() - 18 months
16
+ oldest_eligible = now() - 365 days
17
17
  revival_window = [
18
18
  d for d in lost.deals
19
- if eighteen_months_ago < parse(d.stage_changed_at) < ninety_days_ago
19
+ if oldest_eligible < parse(d.stage_changed_at) < ninety_days_ago
20
20
  ]
21
21
 
22
22
  # Step 3: drop terminal loss reasons — these are NOT revivable
@@ -34,7 +34,7 @@ candidates = [d for d in revivable if d.person_id not in open_person_ids]
34
34
  Cap the candidate list to the 50 most-recently-lost (sort by
35
35
  `stage_changed_at DESC`) before per-account enrichment.
36
36
 
37
- The 18-month upper bound prevents revival of ancient conversations the
37
+ The 365-day upper bound prevents revival of ancient conversations the
38
38
  buyer has forgotten. The 90-day lower bound prevents the "thanks but no
39
39
  thanks" buyer from being re-pitched while the rejection is still fresh.
40
40
 
@@ -13,7 +13,7 @@ You are a winback-side pipeline filler. While `/expansion-fill` targets won-and-
13
13
 
14
14
  ## Why this skill exists
15
15
 
16
- A closed-lost deal is not a closed door. Most "lost" deals had a real conversation, a fit signal, and a circumstantial blocker — wrong timing, wrong champion, wrong budget cycle. Within 6-18 months, those circumstances change. The data points worth revisiting:
16
+ A closed-lost deal is not a closed door. Most "lost" deals had a real conversation, a fit signal, and a circumstantial blocker — wrong timing, wrong champion, wrong budget cycle. Within 3-12 months, those circumstances change. The data points worth revisiting:
17
17
  - The person is still at the same company (relationship intact)
18
18
  - The original loss_reason was NOT `no_fit` or `no_budget_permanent` (the deal was lose-able, not unwinnable)
19
19
  - Their company has had a recent trigger (new exec, funding, news event)
@@ -46,7 +46,7 @@ is automatic from your authenticated session. Pick a variant per your intent
46
46
 
47
47
  For variant 1 (silent-deal revival), the cohort criteria:
48
48
  - `outcome == 'lost'`
49
- - `stage_changed_at` between 90 days ago and 18 months ago
49
+ - `stage_changed_at` between 90 days ago and 365 days ago
50
50
  - `loss_reason NOT IN ('no_fit', 'no_budget_permanent')` (these are terminal — don't re-pitch)
51
51
  - Person is still surfaceable via `get_person_360` (still at company)
52
52
  - No open deal currently exists on that person (post-filter against