# Pre-publish checklist:把 dsh-reasoning-language 发到 DSH 插件市场 # # 这份文件是**给发布者看的内部文档**,不会被 npm 发包(见 .npmignore)。 ## 一、市场收录的硬性要求(对照现状) 市场不收录自建列表:它只读官方收录仓库 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 的 `data/plugins/*.yml`。所以"发布"= 给那个仓库提一个只加一个文件的 PR。 | 要求 | 现状 | | --- | --- | | `package.json` 声明 `dsh.bundle` | ✅ `"bundle": { "patch": "./cordis.patch.yml" }` | | 仓库根有 `cordis.patch.yml` | ✅ | | 真实可用的代码(非占位/纯 README) | ✅ 双面插件 + 36 组测试 | | 仓库创建满 **1 天** | ⚠️ 建完仓库要等一天再提 PR(CI 自动查) | | 仓库加 `dsh-plugin` topic | ⚠️ 建仓库后手动加 | | 官方 `@deepseek-ai/*` 用 `peerDependencies` | ✅ cordis / schemastery 都在 peerDependencies | | peer 范围要带**显式预发布分支** | ✅ `>=4.0.1 <5.0.0-0` 这类写法,不会静默排除 rc | | 描述不含营销词、且**与代码相符** | ✅ 见下方 description 与 entry | | 一个 PR 最多 3 条 | ✅ 只有 1 条 | > **最常见被拒原因**:只声明 `dsh.client` 而漏了 `dsh.bundle`。本插件两者都有。 ## 二、先建立公开仓库 1. **建 GitHub 仓库**:`https://github.com/<你的用户名>/dsh-reasoning-language` - Public,**不要**加 README / .gitignore(本地已经有了) - 建完给它加 topic:`dsh-plugin` 2. **等满 1 天**(CI 会拒掉"PR 前几分钟才建好"的仓库;不达标就做完工作再提,不影响后续) 3. (可选)**发 npm**:不是收录条件,但预构建安装能免掉 `allowBuilds` 构建授权步骤。 前提:npm 包里的 `repository` 必须指回这个 GitHub 仓库,否则两边不会关联。 ## 三、发之前:核对仓库归属 `package.json` 当前指向 `jide315/dsh-reasoning-language`。如果以后转移仓库归属,运行: ```powershell node scripts/prepare-release.mjs --owner <新的GitHub用户名> ``` 它会改 `package.json` 的 `repository` / `homepage` / `bugs` 三处,并在没有显式 `--author` 时把 `LICENSE` 的版权人对齐。**跑完再执行下面的自检。** ## 四、自检 ```powershell node scripts/check-release.mjs ``` 会检查:`dsh.bundle` + `cordis.patch.yml` 存在、`dsh-plugin` 关键词、描述无营销词、 peer 范围带预发布分支、没有残留占位符、两套测试能跑通,等等。 `npm publish` 之前也会自动跑它(`prepublishOnly`)。 ## 五、提交收录 PR(这就是"发布到市场") 在 `awesome-dsh-plugin/awesome-dsh-plugin` 仓库新增**一个文件**: - 路径:`data/plugins/__dsh-reasoning-language.yml` - 内容: ```yaml url: https://github.com//dsh-reasoning-language name: /dsh-reasoning-language category: ui description: en: Makes the DSH agent's thinking process use a language you choose (Simplified Chinese by default) and expands thinking rows by default. zh: 让 DSH 的思考过程用指定语言(默认简体中文)输出,并把思考行默认展开。 ``` 要点: - 文件名必须与仓库完全对应(`__.yml`),`url` 必须与仓库完全一致。 - `category` 我选 **`ui`** —— 插件的主要可见行为是思考行展示(展开/语言), 设置卡片也属 UI。可选值里也有 `usage` / `dev`,选得不够准维护者会直接改,不会打回。 - 只有 `description.en` 是必填;`zh` 写不了可以不写。 - 若描述里出现 `: `(冒号+空格)**必须加引号**,否则 YAML 解析失败。 - **不要**手工编辑那两个生成的 README —— 只交这一个数据文件。 - 不要动别人的条目。 - 有截图的话,把 `screenshots.json` 放在**本仓库**(`package.json` 旁边), 列出 1-8 个相对路径,例如 `["assets/shot-1.png"]`。市场会自动抓取。 ## 六、Review 会看什么 CI 只校验形式(manifest、仓库年龄、格式),**合并不看绿勾**。维护者会真的读代码并核对 描述里的每一句话 —— 所以描述里别写数字、别写不存在的命令。本插件的描述只陈述 两个可验证的行为(指定语言的推理提示词注入、思考行默认展开),都是实测过的。 ## 七、日常迭代 收录后更新插件**不需要**再提 PR(除非改描述/分类):推自己的仓库即可。 如果改了描述或分类,只改自己那一行 `data/plugins/__dsh-reasoning-language.yml`。