Skip to content
dsh.fish
Bundle

dsh-skill-store

Community skill marketplace for DeepSeek Harness: browse, search, and one-click install skills from awesome-skills-cn and the wider Claude Code / OpenClaw skill ecosystem.

Source
cxy9204
stars
1 stars
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-skill-store

[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![npm version](https://img.shields.io/npm/v/dsh-skill-store)](https://www.npmjs.com/package/dsh-skill-store)
[![npm downloads](https://img.shields.io/npm/dm/dsh-skill-store)](https://www.npmjs.com/package/dsh-skill-store)
[![Listed on dsh-plugin.org](https://dsh-plugin.org/badges/listed.svg)](https://dsh-plugin.org/plugins/cxy9204/dsh-skill-store)

**English** | [简体中文](README.zh-CN.md)

**A community skill marketplace for DeepSeek Harness.** Browse, search, and one-click install **140,000+ Agent Skills** from three registries right inside the DSH Web UI — sorted by stars / downloads, with Chinese category support.

After installing this plugin, open DSH Web and go to **Settings → Skill Store**: search skills, check popularity, and click to install them locally. No more browsing GitHub repos, downloading ZIPs, or manually unzipping into your skills directory.

---

## The Three Data Sources

> Counts measured locally on 2026-09-02; the upstream sites keep growing, so the numbers shown in the UI are authoritative.

| Source | Skills | Stars | Downloads | Categories | Content Fetch |
|---|---|---:|:---:|:---:|:---:|:---:|
| **SkillHub** (default, recommended) | 134,262 | ✅ | ✅ | ✅ 13 bilingual categories | ✅ |
| **ClawHub** | 6,632 | ✅ up to 3,982★ | ✅ up to 470k | ✅ 1,694 topics | ✅ |
| **GitHub mirror** (awesome-skills-cn) | 2,063 | ❌ dirs, not repos | ❌ | ⚠️ 11 collection-level | ✅ |

The three ecosystems barely overlap (only 0.2% of SkillHub names match ClawHub), so the plugin presents them as **parallel switchable tabs** rather than a merged list.

### GitHub Source — Categories & Upstream Trust

| Collection | Category | Upstream repo |
|---|---|---|
| `anthropics-skills` | Anthropic official | anthropics/skills |
| `openai-skills` | OpenAI official | openai/skills |
| `claude-scientific-skills` | Scientific research | K-Dense-AI/claude-scientific-skills |
| `huggingface-skills` | HuggingFace | huggingface/skills |
| `obsidian-skills` | Obsidian | kepano/obsidian-skills |
| 6 more | Community collections | see `COLLECTIONS` in source |

Upstream repo star counts are shown on the cards as a trust signal for each source.

---

## Installation

The plugin is **published on the npm registry** (`dsh-skill-store@0.1.x`). Install it directly:

```bash
dsh plugin --profile web add dsh-skill-store
```

After installation, **restart DSH Web** — the "Skill Store" entry will appear under Settings.

Install from source:

```bash
git clone https://github.com/cxy9204/dsh-skill-store.git
cd dsh-skill-store
npm install
dsh plugin --profile web add file:./path/to/dsh-skill-store
```

Uninstall:

```bash
dsh plugin --profile web remove dsh-skill-store
```

---

## Features

- **Three-source switching** — toggle between GitHub / ClawHub / SkillHub with the top buttons; a sort dropdown appears for the latter two
- **Popularity sorting** — by stars / downloads / installs / name
- **Category filter** — dropdown with per-category skill counts
- **Full-text search** — matches both skill name and description
- **One-click install** — skills are written to `~/.dsh/skills/<name>/SKILL.md`, ready to use immediately
- **Detail preview** — click a card to see the full SKILL.md body and popularity data
- **Progressive loading** — skeleton index appears instantly; descriptions and popularity fill in the background with visible progress

## Live Status Output

Real runtime state after the plugin is mounted (DSH Web defaults to `127.0.0.1:3080`):

```bash
$ curl -s http://127.0.0.1:3080/api/dsh-skill-store/status
```

```json
{
  "github":  { "total": 2063, "enriched": 0, "pending": 2063,
               "activeMirror": "https://gcore.jsdelivr.net/gh/lingxling/awesome-skills-cn@main" },
  "clawhub": { "loaded": true, "count": 6632, "builtAt": "2026-09-02T07:10:44.288Z" },
  "skillhub":{ "loaded": true, "count": 2005, "builtAt": "2026-09-02T07:08:05.871Z",
               "progress": { "pages": 20, "fetched": 2005, "total": 134262 } }
}
```

`skillhub.count` being smaller than `progress.total` is the normal progressive-loading intermediate state: the index builds while in use, and the number of usable skills keeps growing until fully loaded.

A real skill record (excerpt from the SkillHub API):

```json
{
  "name": "B站视频分析",
  "slug": "bilibili-content-research",
  "canonicalName": "@user_825d9e7e/bilibili-content-research",
  "category": "content-creation",
  "subCategories": ["自媒体运营", "选题策划"],
  "stars": 1, "downloads": 167, "version": "1.0.2"
}
```

UI entry: **Settings → Skill Store**. Top bar has the three-source switcher, search box, category dropdown, and sort dropdown (shown for ClawHub / SkillHub). Cards show name, description, and stars / downloads; clicking a card opens the detail preview and install button.

## Design Notes

**Why does the GitHub source have no per-skill stars?** A skill in that repo is a **directory**, not a repository, so it has no independent star field. Measured coverage in the upstream frontmatter is only 2% for `tags` and 6% for `category`, with just 8 distinct tags across the whole repo — "everything is uncategorized" is a data-source limitation, not a bug. This plugin groups by collection and shows the upstream repo's stars instead.

**Network adaptation (China-friendly)**: `raw.githubusercontent.com` is frequently DNS-blocked in mainland China (fails with `ENOTFOUND`, and — worst of all — **throws no exception, it just returns empty data**, which is very hard to debug). This plugin fetches through jsDelivr CDN mirrors with automatic fallback, and remembers the last working mirror:

```
cdn.jsdelivr.net → gcore.jsdelivr.net → fastly.jsdelivr.net → raw.githubusercontent.com
```

**Two-phase loading**: fetching all 130k+ SKILL.md files upfront is impractical. The skeleton phase only walks the directory tree (a few seconds); details are fetched on demand plus background progressive enrichment, persisted every 60 records, resuming after restart.

---

## Permissions & External Services

This plugin sends **read-only** HTTPS requests to:

| Service | Purpose |
|---|---|
| `api.github.com` | read awesome-skills-cn directory tree |
| `*.jsdelivr.net` | read SKILL.md file contents (CDN mirrors) |
| `clawhub.ai` | ClawHub skill registry & file contents |
| `api.skillhub.cn` | SkillHub skill registry & file contents |

Local writes are limited to:
- `~/.dsh/skills/` — target directory for installed skills
- `~/.dsh/skill-store-cache/` — index cache

**No telemetry, no data upload, no account or token required.** Setting the `GITHUB_TOKEN` environment variable only raises the GitHub API rate limit from 60 to 5,000 requests/hour; everything works fine without it.

## Compatibility

- **Profile**: `web` (requires the web UI; in headless mode the UI is unavailable but the API endpoints still work)
- **Injected dependencies**: `@deepseek-ai/dsh-client-ui-settings`, `@deepseek-ai/dsh-client-ui-slots`
- **React**: 18.x (optional peerDependency, provided by the host)
- **Node.js**: ≥ 20 (relies on built-in `fetch` and ESM)

## Development

```bash
git clone https://github.com/cxy9204/dsh-skill-store.git
cd dsh-skill-store
node --check lib/index.js   # syntax check
```

Source layout:

```
lib/index.js      Main plugin: routes, GitHub source index, install logic
lib/client.js     Frontend UI (React, injected by the host)
lib/clawhub.js    ClawHub data source
lib/skillhub.js   SkillHub data source
cordis.patch.yml  DSH plugin mount declaration
```

Debug endpoints:

```bash
curl http://localhost:<port>/api/dsh-skill-store/status
curl "http://localhost:<port>/api/dsh-skill-store/sources"
```

## FAQ

**The first open shows 0 skills?** The SkillHub source takes about 1-3 minutes to build its first index in the background — just refresh. Hit the `/status` endpoint to watch the live progress.

**ClawHub skill installs the wrong one?** ClawHub has name collisions (e.g. `github` has 6 authors). The plugin picks the first match (usually the most popular). If it installed the wrong one, check the author on the detail page first.

**UI does not appear after install?** DSH plugins need a Web process restart to complete frontend injection.

## License

MIT © 2026 cxy9204

This is an independent community project, not affiliated with DeepSeek AI.

Install

dsh plugin --profile web add github:cxy9204/dsh-skill-store

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source