@vruum/skills 0.6.30 → 0.6.31

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.30",
3
+ "version": "0.6.31",
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.30",
3
+ "version": "0.6.31",
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/install.js CHANGED
@@ -86,6 +86,7 @@ const KNOWN_TARGETS = [
86
86
  { name: 'Claude Code', detect: path.join(os.homedir(), '.claude'), dir: path.join(os.homedir(), '.claude', 'skills') },
87
87
  { name: 'Codex CLI', detect: path.join(os.homedir(), '.codex'), dir: path.join(os.homedir(), '.agents', 'skills') },
88
88
  ];
89
+ const LEGACY_CODEX_SKILLS_DIR = path.join(os.homedir(), '.codex', 'skills');
89
90
 
90
91
  function parseArgs(argv) {
91
92
  const args = { command: 'install', targets: [], dryRun: false, help: false };
@@ -243,6 +244,14 @@ function pruneStaleLinks({ target, skills, dryRun }) {
243
244
  return results;
244
245
  }
245
246
 
247
+ // Older releases linked Codex skills into ~/.codex/skills. Modern Codex also
248
+ // scans ~/.agents/skills, so an upgrade otherwise leaves duplicate skills in
249
+ // two registries. Reuse the ownership predicate and remove every public-bundle
250
+ // link from the legacy directory while preserving operator and user links.
251
+ function pruneLegacyCodexLinks({ dryRun }) {
252
+ return pruneStaleLinks({ target: LEGACY_CODEX_SKILLS_DIR, skills: [], dryRun });
253
+ }
254
+
246
255
  function ensureTargetDir(target, dryRun) {
247
256
  if (fs.existsSync(target)) return { created: false };
248
257
  if (dryRun) return { created: 'would' };
@@ -342,6 +351,14 @@ function commandInstall({ targets: extraTargets, dryRun }) {
342
351
  }
343
352
  }
344
353
 
354
+ // Only remove the legacy copy after every canonical target reconciles. If a
355
+ // non-symlink collision blocks any current skill, keep the legacy links so a
356
+ // failed migration cannot turn duplicate skills into missing skills.
357
+ const skipped = summary.filter((row) => row.action === 'skipped');
358
+ if (skipped.length === 0) {
359
+ summary.push(...pruneLegacyCodexLinks({ dryRun }));
360
+ }
361
+
345
362
  const prefix = dryRun ? '[dry-run] ' : '';
346
363
  console.log(`${prefix}@vruum/skills v${VERSION}`);
347
364
  console.log(`${prefix}package source: ${PACKAGE_ROOT}`);
@@ -361,7 +378,6 @@ function commandInstall({ targets: extraTargets, dryRun }) {
361
378
  console.log(` ${prefix}${label} ${row.name}${row.reason ? ` [${row.reason}]` : ''}`);
362
379
  }
363
380
 
364
- const skipped = summary.filter((row) => row.action === 'skipped');
365
381
  if (skipped.length > 0) {
366
382
  console.log('');
367
383
  console.log(`Skipped ${skipped.length} skill(s); remove the conflicting file(s) and re-run.`);
@@ -378,6 +394,11 @@ function commandUninstall({ targets: extraTargets, dryRun }) {
378
394
  console.error('No AI harness skill directories detected.');
379
395
  }
380
396
 
397
+ for (const row of pruneLegacyCodexLinks({ dryRun })) {
398
+ const action = dryRun ? 'would-remove' : 'removed';
399
+ console.log(` ${prefix}${action.padEnd(15)} ${row.name} (legacy ~/.codex/skills link)`);
400
+ }
401
+
381
402
  // Scan each target dir and remove every symlink we own — not just the
382
403
  // current skill names — so stale links left by renamed/removed skills are
383
404
  // cleaned up too. Foreign symlinks and non-symlinks are left untouched
@@ -523,6 +544,7 @@ module.exports = {
523
544
  linkSkill,
524
545
  isOurLink,
525
546
  pruneStaleLinks,
547
+ pruneLegacyCodexLinks,
526
548
  commandInstall,
527
549
  commandUninstall,
528
550
  commandList,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vruum/skills",
3
- "version": "0.6.30",
3
+ "version": "0.6.31",
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": "edb317856c2825036b1d3d8017b14b908386a977b3d0f05efc61e0db0cee7762"
45
+ "contentHash": "61a04fc0b58e9a17bb95f61fdabdc5c43dc849e6099b74d247590d8cd4f48201"
46
46
  }