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 4 days ago
Readme
# dsh-skill-store
[](LICENSE)
[](https://www.npmjs.com/package/dsh-skill-store)
[](https://www.npmjs.com/package/dsh-skill-store)
[](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
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-skill-store from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.