itismyskillmarket 1.3.47 → 1.3.48

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
@@ -1,6 +1,6 @@
1
1
  # SkillMarket
2
2
 
3
- > **v1.3.42** — Cross-platform skill manager for AI coding tools (Cursor, VSCode, Codex CLI, OpenCode, Claude Code, Antigravity, OpenClaw, Hermes Agent, Saitec TUI).
3
+ > **v1.3.48** — Cross-platform skill manager for AI coding tools (Cursor, VSCode, Codex CLI, OpenCode, Claude Code, Antigravity, OpenClaw, Hermes Agent, Saitec TUI).
4
4
 
5
5
  ## Installation
6
6
 
@@ -1295,13 +1295,9 @@ async function fetchScopePackages() {
1295
1295
  }
1296
1296
  return [...all].sort();
1297
1297
  }
1298
- async function adminList() {
1299
- console.log("\n\u{1F50D} Fetching all published skills...\n");
1298
+ async function fetchScopePackageDetails() {
1300
1299
  const packages = await fetchScopePackages();
1301
- if (packages.length === 0) {
1302
- console.log("No published skills found.");
1303
- return;
1304
- }
1300
+ if (packages.length === 0) return [];
1305
1301
  const details = await throttledMap(
1306
1302
  packages,
1307
1303
  async (pkg) => {
@@ -1323,21 +1319,189 @@ async function adminList() {
1323
1319
  }
1324
1320
  },
1325
1321
  3,
1326
- // 并发 3
1327
1322
  200
1328
- // 批次间 200ms
1329
1323
  );
1330
1324
  const valid = details.filter(Boolean);
1331
- console.log(`\u{1F4E6} ${valid.length} published skill(s):
1332
- `);
1333
1325
  valid.sort((a, b) => a.name.localeCompare(b.name));
1326
+ return valid;
1327
+ }
1328
+ async function getPublishingStats() {
1329
+ const packages = await fetchScopePackages();
1330
+ if (packages.length === 0) {
1331
+ return {
1332
+ totalSkills: 0,
1333
+ totalVersions: 0,
1334
+ averageVersions: "0",
1335
+ withMetadata: 0,
1336
+ totalSizeMB: "0",
1337
+ platformCount: 0,
1338
+ platforms: []
1339
+ };
1340
+ }
1341
+ const infos = (await throttledMap(
1342
+ packages,
1343
+ async (pkg) => {
1344
+ try {
1345
+ const info = await fetchNpmPackage(pkg);
1346
+ return info ? { name: pkg, info } : null;
1347
+ } catch {
1348
+ return null;
1349
+ }
1350
+ },
1351
+ 3,
1352
+ 200
1353
+ )).filter((item) => item !== null);
1354
+ let totalVersions = 0;
1355
+ let totalSize = 0;
1356
+ const platformSet = /* @__PURE__ */ new Set();
1357
+ let withMetadata = 0;
1358
+ let mostVersions = { name: "", count: 0 };
1359
+ let mostRecent = { name: "", date: "" };
1360
+ for (const { name, info } of infos) {
1361
+ const versions = Object.keys(info.versions || {});
1362
+ totalVersions += versions.length;
1363
+ if (versions.length > mostVersions.count) {
1364
+ mostVersions = { name, count: versions.length };
1365
+ }
1366
+ const latestVer = info["dist-tags"]?.latest;
1367
+ const latestPkg = latestVer ? info.versions?.[latestVer] : void 0;
1368
+ const meta = latestPkg?.skillmarket;
1369
+ if (meta) {
1370
+ withMetadata++;
1371
+ if (meta.platforms) meta.platforms.forEach((p) => platformSet.add(p));
1372
+ }
1373
+ if (latestPkg?.dist?.unpackedSize) totalSize += latestPkg.dist.unpackedSize;
1374
+ const modTime = info.time?.modified || "";
1375
+ if (modTime && modTime > mostRecent.date) {
1376
+ mostRecent = { name, date: modTime };
1377
+ }
1378
+ }
1379
+ return {
1380
+ totalSkills: infos.length,
1381
+ totalVersions,
1382
+ averageVersions: infos.length > 0 ? (totalVersions / infos.length).toFixed(1) : "0",
1383
+ withMetadata,
1384
+ totalSizeMB: (totalSize / 1024 / 1024).toFixed(2),
1385
+ platformCount: platformSet.size,
1386
+ platforms: [...platformSet],
1387
+ mostVersions,
1388
+ mostRecent,
1389
+ registry: NPM_REGISTRY,
1390
+ scopes: [...SKILL_SCOPES]
1391
+ };
1392
+ }
1393
+ async function verifySkillData(skillId) {
1394
+ const info = await fetchSkillPackage(skillId);
1395
+ if (!info) return null;
1396
+ const checks = [];
1397
+ let passed = 0;
1398
+ let failed = 0;
1399
+ let warnings = 0;
1400
+ const nameValid = /^@[^/]+\/[^/]+$/.test(info.name);
1401
+ if (nameValid) {
1402
+ checks.push({ label: "Package name format", status: "pass", message: info.name });
1403
+ passed++;
1404
+ } else {
1405
+ checks.push({ label: "Package name format", status: "warn", message: `Unusual: ${info.name}` });
1406
+ warnings++;
1407
+ }
1408
+ const tags = info["dist-tags"] || {};
1409
+ if (tags.latest) {
1410
+ checks.push({ label: "dist-tags.latest", status: "pass", message: tags.latest });
1411
+ passed++;
1412
+ } else {
1413
+ checks.push({ label: "dist-tags.latest", status: "fail", message: "Missing" });
1414
+ failed++;
1415
+ }
1416
+ const latestVer = tags.latest;
1417
+ const latestPkg = latestVer ? info.versions?.[latestVer] : void 0;
1418
+ if (latestPkg) {
1419
+ checks.push({ label: "Latest version exists", status: "pass", message: `${latestVer} exists in versions` });
1420
+ passed++;
1421
+ } else {
1422
+ checks.push({ label: "Latest version exists", status: "fail", message: `${latestVer} not found in versions` });
1423
+ failed++;
1424
+ }
1425
+ const meta = latestPkg?.skillmarket;
1426
+ if (meta) {
1427
+ checks.push({ label: "skillmarket metadata", status: "pass", message: "Present" });
1428
+ passed++;
1429
+ const subChecks = [
1430
+ { label: "skillmarket.id", ok: !!meta.id },
1431
+ { label: "skillmarket.displayName", ok: !!meta.displayName },
1432
+ { label: "skillmarket.platforms", ok: Array.isArray(meta.platforms) && meta.platforms.length > 0 }
1433
+ ];
1434
+ for (const c of subChecks) {
1435
+ if (c.ok) {
1436
+ checks.push({ label: c.label, status: "pass", message: "Present" });
1437
+ passed++;
1438
+ } else {
1439
+ checks.push({ label: c.label, status: "warn", message: "Missing or empty" });
1440
+ warnings++;
1441
+ }
1442
+ }
1443
+ if (meta.platforms) {
1444
+ const unknown = meta.platforms.filter((p) => !PLATFORMS.includes(p));
1445
+ if (unknown.length > 0) {
1446
+ checks.push({ label: "Platforms recognized", status: "warn", message: `Unknown: ${unknown.join(", ")}` });
1447
+ warnings++;
1448
+ } else {
1449
+ checks.push({ label: "Platforms recognized", status: "pass", message: "All recognized" });
1450
+ passed++;
1451
+ }
1452
+ }
1453
+ } else {
1454
+ checks.push({ label: "skillmarket metadata", status: "warn", message: "Not a skillmarket-formatted skill" });
1455
+ warnings++;
1456
+ }
1457
+ if (latestPkg?.description) {
1458
+ checks.push({ label: "Description", status: "pass", message: `${latestPkg.description.length} chars` });
1459
+ passed++;
1460
+ } else {
1461
+ checks.push({ label: "Description", status: "warn", message: "Missing" });
1462
+ warnings++;
1463
+ }
1464
+ if (info.license || latestPkg?.license) {
1465
+ checks.push({ label: "License", status: "pass", message: info.license || latestPkg?.license || "" });
1466
+ passed++;
1467
+ } else {
1468
+ checks.push({ label: "License", status: "warn", message: "Missing" });
1469
+ warnings++;
1470
+ }
1471
+ if (latestPkg?.dist?.unpackedSize) {
1472
+ const sizeKB = (latestPkg.dist.unpackedSize / 1024).toFixed(1);
1473
+ checks.push({ label: "Package size", status: "pass", message: `${sizeKB} KB (unpacked)` });
1474
+ passed++;
1475
+ }
1476
+ const versionCount = Object.keys(info.versions || {}).length;
1477
+ checks.push({ label: "Total versions", status: "info", message: String(versionCount) });
1478
+ return {
1479
+ skillId,
1480
+ valid: failed === 0,
1481
+ passed,
1482
+ failed,
1483
+ warnings,
1484
+ checks
1485
+ };
1486
+ }
1487
+ async function adminList() {
1488
+ console.log("\n\u{1F50D} Fetching all published skills...\n");
1489
+ const valid = await fetchScopePackageDetails();
1490
+ if (valid.length === 0) {
1491
+ console.log("No published skills found.");
1492
+ return;
1493
+ }
1494
+ let hasSkillmarketCount = 0;
1334
1495
  for (const d of valid) {
1496
+ if (d.hasSkillmarket) hasSkillmarketCount++;
1335
1497
  const flag = d.hasSkillmarket ? "\u2705" : "\u{1F4E6}";
1336
1498
  console.log(` ${flag} ${d.name}@${d.version}`);
1337
1499
  if (d.description) console.log(` ${d.description.slice(0, 80)}`);
1338
1500
  if (d.platforms) console.log(` Platforms: ${d.platforms}`);
1339
1501
  console.log();
1340
1502
  }
1503
+ console.log(`\u{1F4E6} ${valid.length} published skill(s) \uFF08${hasSkillmarketCount} with skillmarket metadata\uFF09
1504
+ `);
1341
1505
  }
1342
1506
  async function adminInfo(skillId) {
1343
1507
  console.log(`
@@ -1345,9 +1509,10 @@ async function adminInfo(skillId) {
1345
1509
  `);
1346
1510
  const info = await fetchSkillPackage(skillId);
1347
1511
  if (!info) {
1348
- console.error(`\u274C Skill "${skillId}" not found in any configured scope.`);
1349
- console.log(` Scopes checked: ${SKILL_SCOPES.join(", ")}`);
1350
- process.exit(1);
1512
+ throw new Error(
1513
+ `Skill "${skillId}" not found in any configured scope.
1514
+ Scopes checked: ${SKILL_SCOPES.join(", ")}`
1515
+ );
1351
1516
  }
1352
1517
  const latestVer = info["dist-tags"]?.latest || "unknown";
1353
1518
  const latestPkg = info.versions?.[latestVer];
@@ -1447,169 +1612,44 @@ async function adminSearch(keyword, limit = 20) {
1447
1612
  }
1448
1613
  async function adminStats() {
1449
1614
  console.log("\n\u{1F4CA} SkillMarket Publishing Statistics\n");
1450
- const packages = await fetchScopePackages();
1451
- if (packages.length === 0) {
1615
+ const stats = await getPublishingStats();
1616
+ if (stats.totalSkills === 0) {
1452
1617
  console.log("No published skills found.");
1453
1618
  return;
1454
1619
  }
1455
- const infos = (await throttledMap(
1456
- packages,
1457
- async (pkg) => {
1458
- try {
1459
- const info = await fetchNpmPackage(pkg);
1460
- return info ? { name: pkg, info } : null;
1461
- } catch {
1462
- return null;
1463
- }
1464
- },
1465
- 3,
1466
- // 并发 3
1467
- 200
1468
- // 批次间 200ms
1469
- )).filter(Boolean);
1470
- const totalSkills = infos.length;
1471
- let totalVersions = 0;
1472
- let totalSize = 0;
1473
- const platformSet = /* @__PURE__ */ new Set();
1474
- let withMetadata = 0;
1475
- let mostVersions = { name: "", count: 0 };
1476
- let mostRecent = { name: "", date: "" };
1477
- for (const { name, info } of infos) {
1478
- const versions = Object.keys(info.versions || {});
1479
- totalVersions += versions.length;
1480
- if (versions.length > mostVersions.count) {
1481
- mostVersions = { name, count: versions.length };
1482
- }
1483
- const latestVer = info["dist-tags"]?.latest;
1484
- const latestPkg = latestVer ? info.versions?.[latestVer] : void 0;
1485
- const meta = latestPkg?.skillmarket;
1486
- if (meta) {
1487
- withMetadata++;
1488
- if (meta.platforms) {
1489
- for (const p of meta.platforms) platformSet.add(p);
1490
- }
1491
- }
1492
- if (latestPkg?.dist?.unpackedSize) {
1493
- totalSize += latestPkg.dist.unpackedSize;
1494
- }
1495
- const modTime = info.time?.modified || "";
1496
- if (modTime && modTime > mostRecent.date) {
1497
- mostRecent = { name, date: modTime };
1498
- }
1499
- }
1500
- console.log(`\u{1F4E6} Total published skills: ${totalSkills}`);
1501
- console.log(`\u{1F4DD} Total versions: ${totalVersions}`);
1502
- console.log(` Avg versions/skill: ${(totalVersions / totalSkills).toFixed(1)}`);
1503
- console.log(`\u{1F4CB} Skills with skillmarket metadata: ${withMetadata}/${totalSkills}`);
1504
- console.log(`\u{1F4BE} Total unpacked size: ${(totalSize / 1024 / 1024).toFixed(2)} MB`);
1505
- console.log(`\u{1F527} Platforms covered: ${platformSet.size} (${[...platformSet].join(", ")})`);
1506
- console.log(`\u{1F3C6} Most versions: ${mostVersions.name} (${mostVersions.count})`);
1507
- if (mostRecent.date) {
1508
- console.log(`\u{1F550} Most recent update: ${mostRecent.name} (${new Date(mostRecent.date).toLocaleDateString()})`);
1509
- }
1510
- console.log(`\u{1F517} Registry: ${NPM_REGISTRY}`);
1620
+ console.log(`\u{1F4E6} Total published skills: ${stats.totalSkills}`);
1621
+ console.log(`\u{1F4DD} Total versions: ${stats.totalVersions}`);
1622
+ console.log(` Avg versions/skill: ${stats.averageVersions}`);
1623
+ console.log(`\u{1F4CB} Skills with skillmarket metadata: ${stats.withMetadata}/${stats.totalSkills}`);
1624
+ console.log(`\u{1F4BE} Total unpacked size: ${stats.totalSizeMB} MB`);
1625
+ console.log(`\u{1F527} Platforms covered: ${stats.platformCount} (${stats.platforms.join(", ")})`);
1626
+ console.log(`\u{1F3C6} Most versions: ${stats.mostVersions.name} (${stats.mostVersions.count})`);
1627
+ if (stats.mostRecent.date) {
1628
+ console.log(`\u{1F550} Most recent update: ${stats.mostRecent.name} (${new Date(stats.mostRecent.date).toLocaleDateString()})`);
1629
+ }
1630
+ console.log(`\u{1F517} Registry: ${stats.registry}`);
1511
1631
  console.log(`
1512
- Configured scopes: ${SKILL_SCOPES.join(", ")}`);
1632
+ Configured scopes: ${stats.scopes.join(", ")}`);
1513
1633
  console.log();
1514
1634
  }
1515
1635
  async function adminVerify(skillId) {
1516
1636
  console.log(`
1517
1637
  \u{1F50D} Verifying published skill "${skillId}"...
1518
1638
  `);
1519
- const info = await fetchSkillPackage(skillId);
1520
- if (!info) {
1521
- console.error(`\u274C Skill "${skillId}" not found.`);
1522
- process.exit(1);
1639
+ const result = await verifySkillData(skillId);
1640
+ if (!result) {
1641
+ throw new Error(`Skill "${skillId}" not found.`);
1523
1642
  }
1524
- let passed = 0;
1525
- let failed = 0;
1526
- let warnings = 0;
1527
- const nameValid = /^@[^/]+\/[^/]+$/.test(info.name);
1528
- if (nameValid) {
1529
- console.log(`\u2705 Package name format: ${info.name}`);
1530
- passed++;
1531
- } else {
1532
- console.log(`\u26A0\uFE0F Package name format unusual: ${info.name}`);
1533
- warnings++;
1534
- }
1535
- const tags = info["dist-tags"] || {};
1536
- if (tags.latest) {
1537
- console.log(`\u2705 dist-tags.latest: ${tags.latest}`);
1538
- passed++;
1539
- } else {
1540
- console.log(`\u274C dist-tags.latest missing`);
1541
- failed++;
1643
+ for (const check of result.checks) {
1644
+ const icon = check.status === "pass" ? "\u2705" : check.status === "fail" ? "\u274C" : check.status === "warn" ? "\u26A0\uFE0F" : "\u2139\uFE0F";
1645
+ console.log(` ${icon} ${check.label}: ${check.message}`);
1542
1646
  }
1543
- const latestVer = tags.latest;
1544
- const latestPkg = latestVer ? info.versions?.[latestVer] : void 0;
1545
- if (latestPkg) {
1546
- console.log(`\u2705 Latest version ${latestVer} exists in versions`);
1547
- passed++;
1548
- } else {
1549
- console.log(`\u274C Latest version ${latestVer} not found in versions object`);
1550
- failed++;
1551
- }
1552
- const meta = latestPkg?.skillmarket;
1553
- if (meta) {
1554
- console.log(`\u2705 Has skillmarket metadata`);
1555
- const checks = [
1556
- { name: "id", ok: !!meta.id },
1557
- { name: "displayName", ok: !!meta.displayName },
1558
- { name: "platforms (array)", ok: Array.isArray(meta.platforms) && meta.platforms.length > 0 }
1559
- ];
1560
- for (const c of checks) {
1561
- if (c.ok) {
1562
- console.log(` \u2705 skillmarket.${c.name}`);
1563
- passed++;
1564
- } else {
1565
- console.log(` \u26A0\uFE0F skillmarket.${c.name} missing or empty`);
1566
- warnings++;
1567
- }
1568
- }
1569
- if (meta.platforms) {
1570
- const unknown = meta.platforms.filter(
1571
- (p) => !PLATFORMS.includes(p)
1572
- );
1573
- if (unknown.length > 0) {
1574
- console.log(` \u26A0\uFE0F Unknown platforms: ${unknown.join(", ")}`);
1575
- warnings++;
1576
- } else {
1577
- console.log(` \u2705 All platforms recognized`);
1578
- passed++;
1579
- }
1580
- }
1581
- } else {
1582
- console.log(`\u26A0\uFE0F No skillmarket metadata (not a skillmarket-formatted skill)`);
1583
- warnings++;
1584
- }
1585
- if (latestPkg?.description) {
1586
- console.log(`\u2705 Has description (${latestPkg.description.length} chars)`);
1587
- passed++;
1588
- } else {
1589
- console.log(`\u26A0\uFE0F No description`);
1590
- warnings++;
1591
- }
1592
- if (info.license || latestPkg?.license) {
1593
- console.log(`\u2705 License: ${info.license || latestPkg?.license}`);
1594
- passed++;
1595
- } else {
1596
- console.log(`\u26A0\uFE0F No license specified`);
1597
- warnings++;
1598
- }
1599
- if (latestPkg?.dist?.unpackedSize) {
1600
- const sizeKB = (latestPkg.dist.unpackedSize / 1024).toFixed(1);
1601
- console.log(`\u2705 Package size: ${sizeKB} KB (unpacked)`);
1602
- passed++;
1603
- }
1604
- const versionCount = Object.keys(info.versions || {}).length;
1605
- console.log(`\u2139\uFE0F Total versions: ${versionCount}`);
1606
- const total = passed + failed;
1607
1647
  console.log(`
1608
1648
  \u{1F4CA} Verification Result:`);
1609
- console.log(` \u2705 Passed: ${passed}`);
1610
- console.log(` \u26A0\uFE0F Warnings: ${warnings}`);
1611
- console.log(` \u274C Failed: ${failed}`);
1612
- if (failed === 0) {
1649
+ console.log(` \u2705 Passed: ${result.passed}`);
1650
+ console.log(` \u26A0\uFE0F Warnings: ${result.warnings}`);
1651
+ console.log(` \u274C Failed: ${result.failed}`);
1652
+ if (result.valid) {
1613
1653
  console.log(`
1614
1654
  \u2705 Skill "${skillId}" is valid!
1615
1655
  `);
@@ -1917,9 +1957,10 @@ function getSourceBadge(source) {
1917
1957
  async function getConfigValue(key) {
1918
1958
  const entry = await getConfig(key);
1919
1959
  if (!entry) {
1920
- console.error(`\u274C Unknown config key: "${key}"`);
1921
- console.log(` Valid keys: ${CONFIG_DEFINITIONS.map((d) => d.key).join(", ")}`);
1922
- process.exit(1);
1960
+ throw new Error(
1961
+ `Unknown config key: "${key}"
1962
+ Valid keys: ${CONFIG_DEFINITIONS.map((d) => d.key).join(", ")}`
1963
+ );
1923
1964
  }
1924
1965
  console.log(`
1925
1966
  \u{1F527} ${entry.key}`);
@@ -1933,9 +1974,10 @@ async function getConfigValue(key) {
1933
1974
  async function setConfigValue(key, value) {
1934
1975
  const def = CONFIG_DEFINITIONS.find((d) => d.key === key);
1935
1976
  if (!def) {
1936
- console.error(`\u274C Unknown config key: "${key}"`);
1937
- console.log(` Valid keys: ${CONFIG_DEFINITIONS.map((d) => d.key).join(", ")}`);
1938
- process.exit(1);
1977
+ throw new Error(
1978
+ `Unknown config key: "${key}"
1979
+ Valid keys: ${CONFIG_DEFINITIONS.map((d) => d.key).join(", ")}`
1980
+ );
1939
1981
  }
1940
1982
  await writeConfigFile({ [key]: value });
1941
1983
  console.log(`
@@ -1959,9 +2001,10 @@ async function resetConfig(key, all = false) {
1959
2001
  if (key) {
1960
2002
  const def = CONFIG_DEFINITIONS.find((d) => d.key === key);
1961
2003
  if (!def) {
1962
- console.error(`\u274C Unknown config key: "${key}"`);
1963
- console.log(` Valid keys: ${CONFIG_DEFINITIONS.map((d) => d.key).join(", ")}`);
1964
- process.exit(1);
2004
+ throw new Error(
2005
+ `Unknown config key: "${key}"
2006
+ Valid keys: ${CONFIG_DEFINITIONS.map((d) => d.key).join(", ")}`
2007
+ );
1965
2008
  }
1966
2009
  await removeConfigKeys([key]);
1967
2010
  const sourceNow = process.env[def.envVar] ? "env" : "default";
@@ -2314,42 +2357,8 @@ API_ROUTES.POST["/api/uninstall"] = async (req, res, _url) => {
2314
2357
  };
2315
2358
  API_ROUTES.GET["/api/admin/stats"] = async (_req, res, _url) => {
2316
2359
  try {
2317
- const packages = await fetchScopePackages();
2318
- const infos = (await Promise.all(
2319
- packages.map(async (pkg) => {
2320
- try {
2321
- const info = await fetchNpmPackage(pkg);
2322
- return info ? { name: pkg, info } : null;
2323
- } catch {
2324
- return null;
2325
- }
2326
- })
2327
- )).filter((item) => item !== null);
2328
- let totalVersions = 0;
2329
- let totalSize = 0;
2330
- const platformSet = /* @__PURE__ */ new Set();
2331
- let withMetadata = 0;
2332
- for (const { info } of infos) {
2333
- const versions = Object.keys(info.versions || {});
2334
- totalVersions += versions.length;
2335
- const latestVer = info["dist-tags"]?.latest;
2336
- const latestPkg = latestVer ? info.versions?.[latestVer] : void 0;
2337
- const meta = latestPkg?.skillmarket;
2338
- if (meta) {
2339
- withMetadata++;
2340
- if (meta.platforms) meta.platforms.forEach((p) => platformSet.add(p));
2341
- }
2342
- if (latestPkg?.dist?.unpackedSize) totalSize += latestPkg.dist.unpackedSize;
2343
- }
2344
- jsonResponse(res, 200, {
2345
- totalSkills: infos.length,
2346
- totalVersions,
2347
- averageVersions: infos.length > 0 ? (totalVersions / infos.length).toFixed(1) : "0",
2348
- withMetadata,
2349
- totalSizeMB: (totalSize / 1024 / 1024).toFixed(2),
2350
- platformCount: platformSet.size,
2351
- platforms: [...platformSet]
2352
- });
2360
+ const stats = await getPublishingStats();
2361
+ jsonResponse(res, 200, stats);
2353
2362
  } catch (err) {
2354
2363
  jsonResponse(res, 500, { error: String(err) });
2355
2364
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startGuiServer
4
- } from "./chunk-KDSWKP7T.js";
4
+ } from "./chunk-B3B5NGC6.js";
5
5
  export {
6
6
  startGuiServer
7
7
  };
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ import {
39
39
  uninstallAll,
40
40
  uninstallSkill,
41
41
  updateSkill
42
- } from "./chunk-KDSWKP7T.js";
42
+ } from "./chunk-B3B5NGC6.js";
43
43
 
44
44
  // src/cli.ts
45
45
  import { Command } from "commander";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itismyskillmarket",
3
- "version": "1.3.47",
3
+ "version": "1.3.48",
4
4
  "description": "Cross-platform skill manager for AI coding tools",
5
5
  "type": "module",
6
6
  "bin": {