@shnitzel/plugscout 0.3.28 → 0.3.29

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.
@@ -1521,6 +1521,13 @@ function buildItemLinks(item) {
1521
1521
  add('npm', `https://www.npmjs.com/package/${encodeURIComponent(pkg)}`);
1522
1522
  }
1523
1523
  }
1524
+ // MCP items: io.github.<owner>/<repo> ID pattern → derive GitHub URL
1525
+ if (item.kind === 'mcp' && item.id.startsWith('mcp:io.github.')) {
1526
+ const ownerRepo = item.id.slice('mcp:io.github.'.length);
1527
+ if (ownerRepo.includes('/')) {
1528
+ add('Repository', `https://github.com/${ownerRepo}`);
1529
+ }
1530
+ }
1524
1531
  // install.url is the most direct link for the user
1525
1532
  add('Install page', item.install.url);
1526
1533
  // Metadata links — priority order
@@ -1,19 +1,16 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import { spawn } from 'node:child_process';
3
3
  import { createInterface, moveCursor, clearScreenDown } from 'node:readline';
4
- import { loadQuarantine, loadWhitelist } from '../../../catalog/repository.js';
5
- import { getStaleRegistries, loadSyncState } from '../../../catalog/sync-state.js';
6
4
  import { getPackagePath } from '../../../lib/paths.js';
7
5
  import { colors } from '../formatters/colors.js';
8
6
  import { isSetUp, loadCatalogItems } from '../../../api/index.js';
9
7
  export async function renderHomeScreen() {
10
8
  const termCols = process.stdout.columns ?? 80;
11
9
  const useCompact = termCols < 82;
12
- const [logo, pkg, catalogStats, runtimeStats] = await Promise.all([
10
+ const [logo, pkg, catalogStats] = await Promise.all([
13
11
  readLogo(useCompact),
14
12
  readPackageMeta(),
15
13
  readCatalogStats(),
16
- readRuntimeStats()
17
14
  ]);
18
15
  const lines = [];
19
16
  const version = pkg.version ?? '0.0.0';
@@ -29,7 +26,6 @@ export async function renderHomeScreen() {
29
26
  lines.push(colorIfTty('Catalog', colors.bold));
30
27
  lines.push(colorIfTty(` items=${catalogStats.items} skill=${catalogStats.skill} mcp=${catalogStats.mcp} claude-plugin=${catalogStats.claudePlugin} claude-connector=${catalogStats.claudeConnector}`, colors.dim));
31
28
  lines.push(colorIfTty(` copilot-extension=${catalogStats.copilotExtension} cursor-extension=${catalogStats.cursorExtension} gemini-extension=${catalogStats.geminiExtension}`, colors.dim));
32
- lines.push(colorIfTty(` stale-registries=${runtimeStats.staleRegistries} whitelist=${runtimeStats.whitelist} quarantined=${runtimeStats.quarantined}`, colors.dim));
33
29
  lines.push('');
34
30
  lines.push(colorIfTty('Quick actions', colors.bold));
35
31
  for (const cmd of [
@@ -113,14 +109,6 @@ async function readCatalogStats() {
113
109
  });
114
110
  return { items: items.length, skill, mcp, claudePlugin, claudeConnector, copilotExtension, cursorExtension, geminiExtension };
115
111
  }
116
- async function readRuntimeStats() {
117
- const [syncState, whitelist, quarantine] = await Promise.all([loadSyncState(), loadWhitelist(), loadQuarantine()]);
118
- return {
119
- staleRegistries: getStaleRegistries(syncState).length,
120
- whitelist: whitelist.size,
121
- quarantined: quarantine.length
122
- };
123
- }
124
112
  function colorIfTty(value, apply) {
125
113
  if (!process.stdout.isTTY || process.env.NO_COLOR === '1') {
126
114
  return value;
@@ -585,6 +585,12 @@ function buildItemLinks(item) {
585
585
  add('npm', `https://www.npmjs.com/package/${encodeURIComponent(pkg)}`);
586
586
  }
587
587
  }
588
+ if (item.kind === 'mcp' && item.id.startsWith('mcp:io.github.')) {
589
+ const ownerRepo = item.id.slice('mcp:io.github.'.length);
590
+ if (ownerRepo.includes('/')) {
591
+ add('Repository', `https://github.com/${ownerRepo}`);
592
+ }
593
+ }
588
594
  add('Install page', item.install.url);
589
595
  add('Repository', meta.repositoryUrl);
590
596
  add('Repository', meta.githubUrl);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shnitzel/plugscout",
3
- "version": "0.3.28",
3
+ "version": "0.3.29",
4
4
  "description": "Claude plugins + Claude connectors + Copilot extensions + Skills + MCP security intelligence framework",
5
5
  "private": false,
6
6
  "type": "module",