zhaorui-wu/dsh-skill-cockpit ↗★ 0

dsh-skill-cockpit

展示本机所有技能源,提供隐身原因分析与一键开关。 适合需要统一管理、排查和快速启闭DSH本地技能的开发者。

包名
dsh-skill-cockpit
兼容性
待验证
版本
0.2.3
许可证
MIT
最近更新
2026年10月14日

同名包的其他仓库

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zhaorui-wu/dsh-skill-cockpit

dsh-skill-cockpit

Status: early / work in progress. This repository is being published ahead of its first release to reserve the name. The plugin already works end-to-end on the author's machine (4/4 self-test suites · 124 assertions) but the public docs, screenshots, and packaging are still being finished. Expect the surface below to change.

A skill cockpit for DSH (DeepSeek Harness): one page in the app-level navigation that shows every skill the machine actually exposes, says why a skill is missing, and lets you toggle a single skill without editing anything but its entry-file name.

中文说明

What it does

  • One page in the application-level nav. It takes the official sidebar.panellist seat with order: 5 — between the shipped Plugins row (0) and the shipped Schedule row (10) — plus the whole page in the layout's main keyed slot. Both seats are registered through the framework's slots service, the same extension point the shipped pages use.
  • All six skill-root kinds, not just one. DSH resolves skills from project-dsh, project-agents, custom, user-dsh, user-agents, and bundled. Scanning only ~/.dsh/skills under-reports what a session can actually see.
  • It answers "why is this skill not there?" A malformed frontmatter block makes the runtime drop a skill silently. The cockpit reports the concrete reason (dropped:no-frontmatter, dropped:unclosed, dropped:bad-yaml, dropped:missing-fields, dropped:bad-name), plus a missing root, a shadowed entry, or an explicit error — instead of showing nothing.
  • Toggling = renaming the entry file only. Enable/disable flips SKILL.md ⇄ SKILL.md.disabled. There is no sidecar state file, so there is exactly one source of truth: the filename. Project-level skill roots are always read-only.
  • No @deepseek-ai/dsh* peer dependency at all. The host half declares inject = [] and the client half declares only slots, so the plugin is not subject to DSH's compatibility-exemption gate and does not touch the credentials surface.

Install (from source, for now)

Not on npm yet. Until the first release, clone this repository and mount the working tree into a profile with a local link:

git clone https://github.com/zhaorui-wu/dsh-skill-cockpit.git
// ~/.dsh/profiles/
/package.json
{
  "dependencies": { "dsh-skill-cockpit": "link:/path/to/dsh-skill-cockpit" },
  "dsh": { "profile": { "bundles": ["…", "dsh-skill-cockpit"] } }
}

Then restart DSH. The entry appears in the left navigation as Skills.

Development

node test/run-all.mjs      # 4 suites: data layer · toggle loop · host routes · client

Pure ESM JavaScript, no build step — lib/*.js runs as-is.

Layout

PathWhat
lib/index.jshost half: local HTTP routes (/__dsh-skill-panel/*)
lib/client.jsclient half: the whole UI (classic script, React.createElement)
lib/roots.js · lib/scan.js · lib/frontmatter.jssix-root enumeration, scan, YAML frontmatter
lib/toggle.jsthe only writer: 8 guards, entry-file rename only
lib/undeclared.js"referenced but not installed" index
test/self-tests (no framework)

License

MIT