dsh-skill-store
English | 简体中文
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:
dsh plugin --profile web add dsh-skill-store
After installation, restart DSH Web — the "Skill Store" entry will appear under Settings.
Install from source:
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:
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):
$ curl -s http://127.0.0.1:3080/api/dsh-skill-store/status
{
"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):
{
"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
fetchand ESM)
Development
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:
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.
No comments yet. Be the first to write one.