{"_id":"@cnzgray/dsh-claude-marketplace-bridge","name":"@cnzgray/dsh-claude-marketplace-bridge","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@cnzgray/dsh-claude-marketplace-bridge","version":"0.1.0","type":"module","main":"index.js","description":"Bridge Claude Code's installed plugin marketplace skills and commands (via installed_plugins.json installPath under ~/.claude/plugins) into DeepSeek Harness, honoring scope / settings.json enablement.","keywords":["deepseek-harness","dsh","cordis","claude-code","plugins","skills","commands"],"license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/cnzgray/dsh-plugins.git","directory":"packages/claude-marketplace-bridge"},"homepage":"https://github.com/cnzgray/dsh-plugins/tree/main/packages/claude-marketplace-bridge#readme","bugs":{"url":"https://github.com/cnzgray/dsh-plugins/issues"},"dependencies":{"yaml":"^2.9.0"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"gitHead":"6e58c156a694d06b5b8c3d9b8cfc59da7ba8f1cf","_id":"@cnzgray/dsh-claude-marketplace-bridge@0.1.0","_nodeVersion":"26.4.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-oeVPP95jZqlep9NO0n3KDzLfVUTLNERVvLbOZn0TB2gHNvpY+JoSsul/ifDlA8qUoMvkLfEmGdFuvVEdVBRejg==","shasum":"d4c9fc9249707aeaab99b7e63a4a5b22e336aaa3","tarball":"https://registry.npmjs.org/@cnzgray/dsh-claude-marketplace-bridge/-/dsh-claude-marketplace-bridge-0.1.0.tgz","fileCount":5,"unpackedSize":45775,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC4moFYIREaM/9OGIRm4UnOKCjsfeCgAqfnirqJ43dv4wIhANiBTqcCyw7Ux7ZvvlN8Wj7aDvESjdtzuDqUXscfCdjh"}]},"_npmUser":{"name":"cnzgray","email":"cnzgray@gmail.com"},"directories":{},"maintainers":[{"name":"cnzgray","email":"cnzgray@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-claude-marketplace-bridge_0.1.0_1786756816367_0.5400968222065161"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-15T01:20:16.230Z","0.1.0":"2026-08-15T01:20:16.513Z","modified":"2026-08-15T01:20:16.701Z"},"maintainers":[{"name":"cnzgray","email":"cnzgray@gmail.com"}],"description":"Bridge Claude Code's installed plugin marketplace skills and commands (via installed_plugins.json installPath under ~/.claude/plugins) into DeepSeek Harness, honoring scope / settings.json enablement.","homepage":"https://github.com/cnzgray/dsh-plugins/tree/main/packages/claude-marketplace-bridge#readme","keywords":["deepseek-harness","dsh","cordis","claude-code","plugins","skills","commands"],"repository":{"type":"git","url":"git+https://github.com/cnzgray/dsh-plugins.git","directory":"packages/claude-marketplace-bridge"},"bugs":{"url":"https://github.com/cnzgray/dsh-plugins/issues"},"license":"MIT","readme":"# @cnzgray/dsh-claude-marketplace-bridge（DeepSeek Harness 插件）\n\nEnglish | [简体中文](README.zh-CN.md)\n\n把 **Claude Code 已安装的插件市场** 桥接进 DeepSeek Harness（DSH / Cordis）。这是 [pi-claude-plugins](https://www.npmjs.com/package/pi-claude-plugins) 扩展（MIT）移植到 DSH 原生机制上的实现：\n\n- **skills** → 注册为 DSH 一等公民的 `ctx.skills` provider（`skill-filesystem` 同款），像普通技能一样出现在模型的技能目录里\n- **commands** → 注册为真正的 DSH 斜杠命令；命令的 markdown 正文作为提示词模板，通过 `agent.steer()` 交给模型\n\n只加载 Claude 里当前**已启用**的插件，同时遵守：\n\n- `~/.claude/plugins/installed_plugins.json`（user / project 作用域）\n- `~/.claude/settings.json`（`enabledPlugins`）\n\n## 会加载什么\n\n### Skills\n\n发现逻辑遵循 Claude 权威的已安装插件布局——`installed_plugins.json` 里的 `installPath`（`~/.claude/plugins/cache/<市场>/<插件>/<版本>/`），对每个已启用插件的安装目录做有界递归扫描，找 `skills/<技能>/SKILL.md`（也兼容 `skills-default` / `skills-opus` 这类模型变体目录）。安装目录内自带 `.claude-plugin/plugin.json` 的（如\"捆绑式\"插件），按 manifest 名归属到对应插件 key。\n\n**命名采用 `<插件>-<技能>` 前缀**——即 Claude Code 的 `插件:技能` 身份，因 DSH 技能名只允许 `[a-z0-9-]`（不含冒号），用 kebab 编码：\n\n| 市场布局 | 目录里的名字 |\n|---|---|\n| `ponytail` 顶层技能 `ponytail-audit` | `ponytail-ponytail-audit` |\n| `claude-plugins-official` 插件 `claude-md-management` 的技能 `claude-md-improver` | `claude-md-management-claude-md-improver` |\n| `cnzgray-marketplace` 插件 `cexll` 的技能 `do` | `cexll-do` |\n\nfrontmatter 里的 `name`、`description`、`whenToUse`、`disable-model-invocation` / `user-invocable` 都会被识别。导入的技能 rank 为 `550`：低于你自己的项目/自定义/用户技能根目录（100–500），高于内置系统技能（600）——重名时你自己的技能永远优先。同一插件内的同名技能（如 `skills-default`/`skills-opus`/`skills-kimi` 三份）按路径排序保留第一个。\n\n### Commands\n\n来自同一次 install-path 扫描：安装目录里任意位置的 `commands/*.md`（同样按 manifest 规则归属）。\n\n每个 `.md` 变成一个斜杠命令（文件名 → `/名字`，小写 kebab-case）。执行时读取模板，替换 `$ARGUMENTS`、`$1`…`$9` 和 `$CWD`，然后把结果作为一条用户消息交给 agent。命令 `description:` frontmatter 会显示在命令列表里。\n\n## 启用状态如何生效\n\nClaude 的 `installed_plugins.json` 键形如 `frontend-design@claude-plugins-official` 或 `minimax-skills@minimax-skills`。只有「已安装 **且** 未在 `settings.json` 里显式禁用」的资源才会暴露：\n\n- `user` 作用域 → 始终启用\n- `project` 作用域 → 仅当当前工作区位于该 `projectPath` 内时启用\n\n**Skills** 每次按当前 `cwd` 查询时重新评估。**Commands** 在启动时注册全部命令文件（DSH 命令注册表是静态的），每次调用时再按当前工作区重新检查启用状态——不在启用范围内就 fail closed，给出明确提示。\n\n## 屏蔽命令 / 技能\n\n在 profile 的补丁层（`~/.dsh/profiles/web/cordis.patch.yml`）里通过插件的 `config` 配置黑名单：\n\n```yaml\n- id: claude-marketplace-bridge\n  config:\n    blockedCommands:\n      - review                        # 按命令名屏蔽（斜杠可省）\n      - /git-commit\n      - git-*                         # 命令名通配\n      - code-review@claude-plugins-official   # 屏蔽某插件的全部命令\n      - @cnzgray-marketplace          # 屏蔽某市场的全部命令\n    blockedSkills:\n      - ponytail-ponytail             # 按 <插件>-<技能> 限定名屏蔽技能\n      - frontend-design@claude-plugins-official  # 屏蔽某插件的全部技能\n      - @cnzgray-marketplace          # 屏蔽某市场的全部技能\n```\n\n条目形式（无歧义）：\n\n| 条目 | 匹配 |\n|---|---|\n| `名字` 或 `/名字` | 命令名，或技能的 `<插件>-<技能>` 限定名 |\n| `模式*` | 同名通配（`*` = 任意字符序列） |\n| `插件@市场` | 该插件 key 的全部资源 |\n| `@市场` | 该市场的全部资源 |\n\n`blockedCommands` 只管命令、`blockedSkills` 只管技能——想两个面都屏蔽就把条目同时加进两个列表。匹配不到任何资源的规则会在启动时告警（拼写错误 / 过期规则）。屏蔽数量显示在 `/claude-marketplace-bridge` 里。命令在启动时注册，改黑名单需重启 `dsh web`。\n\n## 安装\n\n```bash\n# 从 npm（发布后）\ndsh plugin --profile web add @cnzgray/dsh-claude-marketplace-bridge\n\n# 或本地路径\ndsh plugin --profile web add ./packages/claude-marketplace-bridge\n\n# 不启动，先验证组装后的配置树\ndsh --profile web --dump-config | grep -A3 claude-marketplace-bridge\n\n# 重启 web profile（会结束当前 GUI 会话）\ndsh web\n```\n\n需要 `skills` 和 `commands` 两个服务（自带的 `web` / `headless` profile 都已挂载）。\n\n## 验证\n\n- 启动时宿主日志显示 `found N command file(s) across installed plugins` 以及 skills provider 挂载行。\n- 已启用的市场技能以 `<插件>-<技能>` 名字出现在模型的技能目录里（如技能 UI 或 `skill` 工具）。\n- 输入 `/claude-marketplace-bridge` 显示按插件归类的已加载技能/命令汇总。\n- 运行导入的命令（如 `/review`）执行其模板。\n\n## 说明\n\n- **只读实时桥接**：直接读 Claude Code 现有的 `~/.claude/plugins/`，不做拷贝或迁移。在 Claude 里启用/禁用插件后，重启 `dsh web` 生效（技能按会话查询即时重估；命令在启动时注册）。\n- **不执行 Claude 插件的 hooks / 运行时逻辑**——只导入能干净映射到 DSH 的文件资源：`SKILL.md` 技能和命令 markdown。插件的 agents、hooks、MCP server、非 markdown 命令格式不在范围内（与 pi-claude-plugins 的局限一致）。\n- **捆绑式市场怪癖**：如果某个插件的安装目录里含有其他插件的内容（如 `cnzgray-marketplace` 的 `cexll` 打包了 `omo-workflow`、`development-essentials`），这些技能会同时以捆绑插件前缀出现——`cexll-omo-*` 会和 `omo-omo-*` 并存。这和 Claude Code 看到的内容一致；禁用捆绑插件即可去掉。\n- **零 `@deepseek-ai/*` 运行时依赖**：只用 Node 内置模块加 `yaml` 包（DSH 官方 skill provider 用的同一个 frontmatter 解析库）。\n- 插件源码在 profile 之外，`cordis-plugin-hmr` 不会监听它。改代码后需重启 `dsh web`。\n\n## 文件\n\n- 入口：`index.js`\n- 包清单：`package.json` / `cordis.patch.yml`\n\n## License\n\nMIT\n","readmeFilename":"README.zh-CN.md","_rev":"1-5ec34acf51b73ea44e01a423ca5be310"}