P

publish-kit

github.com/EternalNight996/publish-kit

v0.5.2 市场与管理 写入文件运行时改写自身配置R013 清单可疑

⭐ 如果你发过包又曾因「忘了打 tag」而丢了版本, 给个 Star。 安装: npx skills add https://github.com/EternalNight996/publish-kit 或 npm i -g @eternalnight/publish-kit

作者原文(英文)

Release playbook for AI agents. npm-installable CLI + DSH plugin + skill bundle. Covers npm, GitHub+Gitee dual remote, DSH marketplace, cargo crates.io, PyPI, PyInstaller exe, Go single-binary, Rust single-binary, Electron/Tauri desktop. Bilingual EN/ZH.

中文简介由 DeepSeek 模型翻译,仅供参考。

publishingreleasenpmcargopypipyinstallerdsh-plugindsh-skill
分类
market
发布
2026-09-06
版本
v0.5.2

检测报告

有一定能力。命中了若干能力模式,大多是插件正常工作时会用到的。
3需留意3一般18未命中
高关注需留意一般

能力清单

  • 写入文件writes-files需留意6 处命中
    • scripts/postinstall.js:46if (FORCE) { fs.unlinkSync(dest); } else { skipped.push(dest); continue; }
    • scripts/postinstall.js:57try { fs.unlinkSync(dest); } catch { /* may still fail; re-link will try */ }
    • scripts/postinstall.js:68try { fs.rmSync(dest, { recursive: true, force: true }); }
    • scripts/postinstall.js:81fs.mkdirSync(dir, { recursive: true });
    • 看写入位置。写自己的配置目录是正常的,写系统目录不是。
  • 运行时改写自身配置modifies-own-manifest需留意1 处命中
    • scripts/bootstrap-release.sh:86node -e "const p=require('./package.json');p.version=process.argv[1];require('fs').writeFileSync('package.json',JSON.str…
    • 运行时改写自身配置会让下次启动的行为和你看过的源码不一致。
  • R013 清单可疑manifest-obfuscation需留意1 处命中
    • 安装脚本: postinstall
    • 清单被刻意写乱时,加载行为会难以预测。看原文而不是看渲染结果。
  • 接触凭据或密钥credentials一般10 处命中
    • …s/skills/publish-kit/EXAMPLES.md:38- Gitee API POST `/user/repos` returned HTTP 400 with an HTML body (no JSON error). Workaround: create the Gitee repo ma…
    • …s/skills/publish-kit/EXAMPLES.md:154| Windows code signing fails (`signtool` exit non-zero) | the cert EV pass is required; add `secrets.WINDOWS_CERT_BASE64…
    • …s/skills/publish-kit/EXAMPLES.md:155| macOS Gatekeeper rejects unsigned binary | add `xcrun notarytool` step; needs Apple Developer ID + `secrets.APPLE_ID` …
    • …s/skills/publish-kit/TEMPLATE.md:225NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
    • 看它读取哪些凭据、发往哪里。用于登录自己的服务是正常的。
  • 读取环境变量reads-env一般4 处命中
    • scripts/postinstall.js:12const FORCE = process.env.PUBLISH_KIT_FORCE === '1'
    • scripts/postinstall.js:13|| (Array.isArray(process.env.npm_config_force) ? process.env.npm_config_force.includes('true') : process.env.npm_config…
    • 环境变量里常混有密钥。看它是否把整个 env 都读走。
  • 读取文件reads-files一般2 处命中
    • scripts/postinstall.js:24if (!fs.existsSync(PACKAGE_SKILL_SRC)) {
    • scripts/postinstall.js:42if (fs.existsSync(dest)) {
    • 读文件是绝大多数插件的正常工作方式,本身不构成顾虑。
逐条扫描明细
能力标识关注度命中次数
写入文件writes-files需留意6
运行时改写自身配置modifies-own-manifest需留意1
R013 清单可疑manifest-obfuscation需留意1
接触凭据或密钥credentials一般10
读取环境变量reads-env一般4
读取文件reads-files一般2

这份报告的口径

扫描读的是包里的源码,全程不执行第三方代码。 本次读了 18 个文件,扫描于 2026-10-14。 命中次数只说明源码里出现过这类调用,不说明行为好坏——一个插件读写文件 500 次和 1 次 都会被记为「读取文件」。这是能力清单,不是信任评分,也不是安全结论: 没扫出来的能力可能只是写法没被规则覆盖。

依赖安全公告

已查询这个插件声明的全部依赖,没有匹配到已公开的安全公告。(含 DSH 框架包在内的 @deepseek-ai/* 不作查询——那是运行时自己的问题,不是插件的。)

← 返回全部插件