@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.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/install.js +23 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vruum",
|
|
3
|
-
"version": "0.6.
|
|
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.
|
|
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.
|
|
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": "
|
|
45
|
+
"contentHash": "61a04fc0b58e9a17bb95f61fdabdc5c43dc849e6099b74d247590d8cd4f48201"
|
|
46
46
|
}
|