@vruum/skills 0.4.8 → 0.4.9

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
@@ -41,7 +41,7 @@ npx @vruum/skills install --target /path/to/skills/dir
41
41
  - `/engagement-triage` — Review and approve your pending LinkedIn engagement drafts and demand-gen content posts. Use when: triage engagements, review engagement queue, review warming comments, review nurture reactions, review marketing comments, review content drafts, check engagement queue.
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
- - `/pipeline-fill` — Source-agnostic pipeline orchestrator. Picks a source per segment (Sales Nav / YC / CSV / manual list), runs harness deep research, applies a pre-filter gate, then saves into the segment via the backend authoritative match_score>=70 gate. Use when: fill pipeline, import prospects, daily imports, need more prospects, deep research before import.
44
+ - `/pipeline-fill` — Source-agnostic pipeline orchestrator. Picks a source per segment (Sales Nav / YC / CSV / discovery), runs harness deep research, applies a pre-filter gate, then saves into the segment via the backend authoritative match_score>=70 gate. Use when: fill pipeline, import prospects, daily imports, need more prospects, discover prospects from scratch, deep research before import.
45
45
  - `/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.
46
46
  - `/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 segment with YC founders, sales nav dried up, source YC.
47
47
  - `/csv-pipeline-fill` — CSV harness source for /pipeline-fill. Reads a CSV, auto-detects headers, maps columns, hands off to /pipeline-fill for harness deep research and import. Use when: import CSV, paste a CSV, csv import, prospect list from CSV, csv harness mode.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vruum/skills",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
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": "8aa506d8d69afa526a694aee96558410fd3cf23f1ba3972e2c176b603e034fe6"
39
+ "contentHash": "fe89953973a2a52b8a68248751cb90fa8beb8d71fa74c6b0c365798e78d154b5"
40
40
  }
@@ -2,10 +2,10 @@
2
2
  name: pipeline-fill
3
3
  description: >-
4
4
  Source-agnostic pipeline orchestrator. Picks a source per segment (Sales Nav /
5
- YC / CSV / manual list), runs harness deep research, applies a pre-filter
6
- gate, then saves into the segment via the backend authoritative
7
- match_score>=70 gate. Use when: fill pipeline, import prospects, daily
8
- imports, need more prospects, deep research before import.
5
+ YC / CSV / discovery), runs harness deep research, applies a pre-filter gate,
6
+ then saves into the segment via the backend authoritative match_score>=70
7
+ gate. Use when: fill pipeline, import prospects, daily imports, need more
8
+ prospects, discover prospects from scratch, deep research before import.
9
9
  ---
10
10
 
11
11
  ## Auto-update check
@@ -19,18 +19,18 @@ Never block skill execution on this check.
19
19
 
20
20
  # Pipeline Fill
21
21
 
22
- You are a source-agnostic pipeline filler. You pick segments to fill, pick a source per segment (Sales Nav / YC / CSV / manual list), and orchestrate harness deep research that gates against the segment ICP before saving prospects into the backend pipeline.
22
+ You are a source-agnostic pipeline filler. You pick segments to fill, pick a source per segment (Sales Nav / YC / CSV / discovery), and orchestrate harness deep research that gates against the segment ICP before saving prospects into the backend pipeline.
23
23
 
24
24
  ## Why this skill exists
25
25
 
26
- Filling your pipeline by source-of-the-day is normal. Sales Nav drying up doesn't mean you're stuck — pick YC, paste a CSV, or paste prospects inline. This skill orchestrates deep research per prospect in your IDE (your compute), pre-filters against segment ICP, then saves the qualified ones into the segment via the backend's canonical gate.
26
+ Filling your pipeline by source-of-the-day is normal. Sales Nav drying up doesn't mean you're stuck — pick YC, paste a CSV, or run discovery (paste candidates OR describe an ICP and the harness sources them via WebSearch + Vruum MCP + LinkedIn search). This skill orchestrates deep research per prospect in your IDE (your compute), pre-filters against segment ICP, then saves the qualified ones into the segment via the backend's canonical gate.
27
27
 
28
28
  ## Where the heavy logic lives
29
29
 
30
30
  Steps 3–8 (pre-flight, Phase A research, Phase B research, harness gate, save chain, audit-log report) are defined in `RESEARCH-ENGINE.md` (in this same skill directory). This skill owns:
31
31
  - Step 1: segment picker (with ETA)
32
32
  - Step 2: source picker (conditional PLATFORM block + always-visible HARNESS block)
33
- - The inline manual-list parser
33
+ - The discovery-mode handler (paste candidates inline OR describe an ICP and source via harness tools)
34
34
  - The multi-segment grammar
35
35
 
36
36
  When you reach Step 3, **stop and read** `RESEARCH-ENGINE.md`. That doc is the canonical source for the candidate-list shape, the harness gate criteria, the identity-resolution save chain, and the canonical handoff prompt that source skills use.
@@ -103,7 +103,7 @@ Source for {segment_name}?
103
103
  1. sales-nav-deep — Sales Nav profiles + harness deep research
104
104
  2. yc — scrape YC directory with filters you provide
105
105
  3. csv — read a CSV file (path next), harness deep research
106
- 4. list — paste candidates inline (one per line)
106
+ 4. discovery — paste candidates inline OR describe an ICP and I'll source them via WebSearch + Vruum MCP + LinkedIn search
107
107
  ```
108
108
 
109
109
  The conditional rendering happens at package-build time, not at skill-runtime — when the orchestrator runs in operator mode it sees the 6-option block; when it runs in public mode (stripped package) it sees only the 4-option block. Source-skill dispatch logic below uses option labels (`sales-nav-platform`, `yc`, etc.), not numbers, so the renumbering is cosmetic.
@@ -115,13 +115,16 @@ Per source pick, dispatch:
115
115
  - `sales-nav-deep` → invoke `/sales-nav-deep-fill` to produce a candidate list, then continue to Step 3 with it.
116
116
  - `yc` → invoke `/yc-pipeline-fill` to produce a candidate list, then continue to Step 3 with it.
117
117
  - `csv` → invoke `/csv-pipeline-fill` to produce a candidate list, then continue to Step 3 with it.
118
- - `list` → use the inline manual-list parser below to produce a candidate list, then continue to Step 3 with it.
118
+ - `discovery` → use the discovery-mode handler below to produce a candidate list (handler branches: paste-shaped input → parse, prose ICP brief → harness sources via WebSearch + Vruum MCP + LinkedIn search), then continue to Step 3 with it.
119
119
 
120
120
  **Multi-segment behavior:** segments run sequentially. Segment 1's Step 7 (save chain + bulk enroll) completes before segment 2's Step 3 starts. Predictable rate-limit behavior, simple progress narrative. Trade-off: 3-segment fills are ~37min wall-clock vs ~22min if Phase A/B were overlapped across segments. Cross-segment overlap is a v2.
121
121
 
122
- ## Inline manual-list parser (for `list` source)
122
+ ## Discovery-mode handler (for `discovery` source)
123
123
 
124
- Operator pastes lines, one per prospect. Tolerant parser:
124
+ Discovery mode covers two paths off the same prompt:
125
+
126
+ **Path A — operator pastes candidates** (you already know who you want)
127
+ Tolerant line parser, candidates produced directly:
125
128
 
126
129
  - **Line is a LinkedIn URL** (matches `^https?://(www\.)?linkedin\.com/in/[^/?]+/?(\?.*)?$`) → set `linkedin_url`, leave `name` and `company` null. Phase B will fill them via `fetch_linkedin_data`.
127
130
  - **Line has comma(s)** → split as `name, company[, linkedin_url][, email]`. If 4 fields, last is email. If 3 fields, last is linkedin_url IF it matches the LinkedIn URL pattern, else interpret as email if it has `@`, else treat as a 2-field line + extra junk.
@@ -131,7 +134,21 @@ Drop blank lines and lines starting with `#` (treat as comments).
131
134
 
132
135
  **Cap at 100 lines** by default. Above that, ask: "{N} prospects pasted — process all, or first M? (a/N)". Keeps operators from accidentally kicking off a 1,000-prospect harness fill.
133
136
 
134
- The parser produces candidates matching the canonical shape in `RESEARCH-ENGINE.md`.
137
+ **Path B operator describes an ICP** (you want the harness to discover candidates)
138
+ Operator gives a brief like "Series A-C SaaS founders, US, 50-500 ppl" or "directors of operations at MSPs in DFW, recently posted about hiring". Harness sources candidates from scratch:
139
+
140
+ 1. **Anchor on segment ICP** — read the segment's existing ICP/company profile (via `get_segment` and `get_company_profile`) and merge with the operator's brief. Show a one-line synthesis ("OK so: Series A-C SaaS, US, 50-500 ppl, founder/CEO/CTO titles") and confirm before sourcing.
141
+ 2. **Source companies first** — use harness tools to find candidate companies matching the brief:
142
+ - `WebSearch` for funding announcements, news, lists ("Series A SaaS 2026", "TechCrunch Series B SaaS announcements")
143
+ - `WebFetch` on Crunchbase / PitchBook / company directories
144
+ - `mcp__vruum-local__search_linkedin_people` for company-fitting roles when the brief is people-shaped (e.g. "VPs of Eng at Series A SaaS")
145
+ 3. **Source people from each company** — for each candidate company, use `mcp__vruum-local__find_people_at_company` (Unipile-backed; respects LinkedIn rate limits) to find titles matching the segment ICP. Cap at ~5 people per company to spread the discovery surface.
146
+ 4. **Dedup against existing pipeline** — for each discovered person, check `mcp__vruum-local__search_existing_people` so you don't research someone the segment already has.
147
+ 5. **Show the discovered list to the operator** before handoff. Format: `Name (title) — Company [linkedin]`. Cap the surface at 2x daily_target so we don't over-source. Get a "go" / "drop X" before continuing.
148
+
149
+ Discovery-path candidates produced in either path use the canonical shape in `RESEARCH-ENGINE.md` and feed into Step 3 the same way.
150
+
151
+ **Path detection:** if the first non-comment line looks like a URL or has commas (paste-shaped), use Path A. If it's prose without URLs/commas and >40 chars, use Path B. If ambiguous, ask: "paste, or describe the ICP and I discover?"
135
152
 
136
153
  ## Workflow — Steps 3 onward
137
154