向 DSH Hub Workshop 提交插件

DSH Hub Workshop 是插件实体索引,不要求作者把源码搬进本仓库。大多数贡献只需要给 catalog.json 增加一条经过核对的元数据。

第一次开发或接入插件,请先阅读插件开发与市场指南。它说明 Skill、MCP、Cordis/Profile Bundle 的最短开发路径、市场准入标准,以及官方/OMDSH 托管与第三方接入的边界。

快速提交

不熟悉目录结构也可以提交,推荐按经验选择一条路径:

  1. 作者 Agent 自动投稿(推荐):把标准指令交给能读取作者仓库的 Agent。它会核对公开固定 commit、生成并本地校验 omdsh-workshop-submission/v1,再展示目标、标题和完整正文;作者确认本次 GitHub 写入后,Agent 创建收录 Issue。提交人不需要手填表单,也不需要理解 catalog.json、Registry 或生成文件。
  2. Author Studio(人工兜底):在 Author Studio 选择“创建项目”或“新增 Release”;待审核候选也可从详情继续。页面自动生成清单并带入 Issue,但身份、许可、兼容性、权限和测试仍必须来自作者确认的事实。
  3. 直接 PR:熟悉本仓库的贡献者可以按下方格式修改源数据、生成产物并提交 PR,适合一次更新多个条目或维护已有条目。

Issue 只是收录申请,不等于已经通过审核,也不代表 DSH Hub Workshop 为第三方代码提供安全背书。自动化只读取固定 commit,不执行投稿代码,并复用一条候选分支和一个 PR。Critical 漏洞会阻止收录;高风险权限、native code、安装脚本、作者身份不一致和可信发布者请求进入 Draft PR 人工审核;扫描完整且没有高风险信号的条目形成普通 PR。扫描或外部漏洞服务不可用时保守地停在审核队列。

requiresFabricdeepHookrestartRequired 必须按 Release 如实声明;深层 Hook 必须同时声明 Fabric。它们只影响兼容提示,不授权 DSH Hub Workshop 或 Runtime 调用 Fabric。Release 撤回、Project 归档和所有权转移使用 Governance Issue,不通过普通新增 Release 自动化完成。

普通市场收录只判断项目当前的真实形态,不要求具备事务回滚。项目实际使用官方 Profile Bundle 时,维护者才核对不可变安装 spec 并标记“事务托管”。最小结构只有 package.json#dsh.bundlecordis.patch.yml,不需要第二套 Loader;patch 如果加载 Bundle 自身,还必须提交其运行时入口,因为安装脚本始终保持禁用。示例仓库进入 main 前不会被文档或市场标成可安装模板。

提交前请确保目标 commit 对维护者可读。不要在 Issue、PR、安装命令或示例配置中粘贴 Token、密钥、成员名单、个人路径或私有配置。

收录条件

条目必须满足:

一个仓库包含多个独立可安装包时,请拆成多条;同一实现仅有中英文 README 时,不要重复收录。

候选发现、拆分与去重

组织仓库可以先进入 candidates-v1.json 的“待审核”页,不需要作者先写 Catalog PR。候选只代表固定 commit 上发现了相关仓库或声明,不携带安装命令,也不进入 Runtime Registry。

维护者可以用 pnpm candidate:promote -- --id <candidate-id> 查看预填草稿和缺失声明,或用 --batch auto-listed 查看低风险批次。命令默认 dry-run;只有完整 manifest 通过 repository + path + ref 精确匹配并再次扫描后,显式添加 --apply 才会改写 catalog.json。这条路径直接复用普通 Submission 的 schema、扫描器和 Catalog 应用函数,不是第二套审核入口。批量处理应使用一个滚动 PR,而不是为发现列表自动创建大量机器人 PR。

组织维护者使用独立入库流水线:npm run intake:validate -- submission.json 只校验固定 commit 清单,不执行投稿代码;npm run intake:prepare -- submission.json 生成待审核记录;npm run intake:check 以 fail-closed 方式校验 Intake、官方基线、admissions 与 Registry。Topic 仅负责发现;维护者还必须定位真实插件子包,核验清单、声明入口、DSH 专属注册路径、兼容性、权限与供应链。事务安装、配置安装、引导接入是三种接入类型,待审核是独立状态。只有人工审核通过、在当前官方基线完成完整生命周期,并证明一个明确能力已注册、调用和观察的受支持类型才可进入 Registry;仅加载成功不能通过,引导接入始终只有查看说明。完整流程见 Workshop 插件入库与验证流程

添加条目

catalog.json#packages 添加对象。完整约束见 catalog.schema.json

最小示例:

{
  "id": "session-notes",
  "name": "Session Notes",
  "description": "把会话摘要保存为可检索的项目笔记。",
  "kind": "extension",
  "tags": ["sessions", "notes"],
  "author": {
    "name": "your-github-login",
    "url": "https://github.com/your-github-login"
  },
  "repository": "https://github.com/your-github-login/session-notes",
  "ref": "0123456789abcdef0123456789abcdef01234567",
  "updatedAt": "2026-08-05T03:22:38Z",
  "version": "0.1.0",
  "license": "BSD-3-Clause",
  "status": "beta",
  "compatibility": "Marisa/dshx · DSH >=0.0.1",
  "install": {
    "type": "marisa",
    "label": "第三方接入",
    "command": "仅记录固定来源与兼容事实;不执行第三方命令。",
    "note": "旧 dshx / Marisa 形态不是官方安装后端。"
  }
}

枚举值

kind

category 是可选的 DSH Hub Workshop 导航标签:workflowdeveloper-toolschannelsinterfaceplatformsafetymemoryinfrastructurefun。它不会进入 Runtime Registry,也不参与收录或信任判断。

status

install.typeprofile-bundlerepository-pluginmarisaplugin-registrysourcemanualnpmscript。后六项只是私有 Catalog 中保留的历史兼容事实,不是官方 Harness 契约;公开页面统一显示为“第三方接入”,Runtime 也不会把它们解析为安装适配器。

registry 由自动化或维护者根据扫描事实填写,作者不应自行声明“低风险”或“可信发布者”。只有真正由官方 Profile 管理、且有精确不可变包版本的条目才可声明:

{
  "registry": {
    "listing": "reviewed",
    "risk": "low",
    "vulnerabilityScan": "passed",
    "permissions": "reviewed",
    "nativeCode": "absent",
    "installScripts": "absent",
    "trustedPublisher": "unknown",
    "profileBundle": {
      "packageName": "@example/session-notes",
      "spec": "1.2.3"
    }
  }
}

Registry 不携带 install.command。Harness 只把条目 ID 发给本机 Runtime,由 Runtime 重新解析 packageName 和精确 spec。公开的 index.json / docs/catalog.json 也会把审核源中的历史命令净化为 OMDSH install 或只读 inspect;第三方命令不会成为公开操作入口。

Repository Plugin 配置候选

已有静态目录可以提供固定来源作为未来兼容证据,但当前自动阻断且不产生安装操作:

{
  "type": "repository-plugin",
  "source": "github:owner/repo#<40位commit>&path:/plugins/example/.dsh-plugin",
  "label": "复制配置",
  "command": "完整 YAML 配置"
}

如果插件托管在 dsh-hub 自己的 plugins/ 下,CI 还会检查:

本地校验

pnpm install
pnpm build
pnpm catalog:build
pnpm validate
node --check docs/assets/app.js

提交中应同时包含:

不要手改生成文件来绕过源数据评审。

评审清单