Skip to content

dsh-plugin-manager-registry

⭐ 1 · ✅ active · plugin

Type plugin Category Plugin discovery
Stars ⭐ 1 Status ✅ active
Author Jesse-njx Updated 2026-08-13

One-liner

@dsh-pm/registry — discover dsh plugins by merging the awesome-dsh-plugin list, GitHub dsh-plugin-topic search, and npm keyword search into one deduped, offline-tolerant registry (the discovery engine of dsh pm)

About

The discovery engine of dsh pm — find dsh plugins by merging three independent sources into one deduped, sorted, offline-tolerant registry: 1. awesome-list — the awesome-dsh-plugin README, parsed under its category headings (config awesomeUrl). 2. GitHub topic — repo search for the dsh-plugin topic via the gh CLI, with a plain api.github.com https fallback. 3. npm keyword — npm search --json (config npmKeyword, default dsh), with a registry /-/v1/search https fallback. A GitHub hit and an npm hit for the same project collapse into one RegistryEntry carrying both repoUrl and npmName; entries dedupe by normalized repo URL first, then by bare name. Every source degrades independently — a dead

📦 Install

dsh plugin add github:Jesse-njx/dsh-plugin-manager

🚀 Quick Start

pnpm install            # from the monorepo root (requires packages/core to exist)
pnpm --filter @dsh-pm/registry test        # node --test, 43 tests
pnpm --filter @dsh-pm/registry typecheck
pnpm --filter @dsh-pm/registry build       # tsc → lib/

📚 Learn more

Install

Workspace package of the dsh-plugin-manager monorepo; consumed through @dsh-pm/core (workspace dep). The product that wires it into DSH is the plugin manager CLI: dsh plugin add github:Jesse-njx/dsh-plugin-manager

Usage

import { createRegistryClient, search } from '@dsh-pm/registry' import type { PmConfig } from '@dsh-pm/core' const cfg: PmConfig['registry'] = { awesomeUrl: 'https://raw.githubusercontent.com/awesome-dsh-plugin/awesome-dsh-plugin/main/README.md', npmKeyword: 'dsh', } const client = createRegistryClient(cfg) // Filtered, sorted: stars desc, then name. const hits = await client.search('memory') // E