npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

codexskin-hub

v0.4.8

Published

Standalone Dream Skin theme management for codexhost-launched Codex: theme hot-switch, ZIP import, gallery, in-app settings page - non-invasive to Codex Dream Skin and codex-host

Readme

CodexSkinHub


CodexSkinHub 把 Codex Dream Skin × codex-host 集成中的主题管理能力抽取为独立项目,可单独版本化、分发与升级。

非侵入式:不修改 Codex Dream Skin 安装目录,也不改 @codexhost/cli 源码仓库——一切通过运行时补丁完成,由锚点式幂等补丁器施加,上游锚点漂移时拒绝写入并明确报错,绝不写脏文件。

功能

  • 🎨 主题热切换 — codexskin theme <名称>,基于 CDP 注入,所有运行中的 Codex 窗口即时生效,无需重启
  • 📦 主题 ZIP 导入 — codexskin import,原生文件对话框,自动探测嵌套 theme.json,按 id 去重新增
  • 🖼 主题库 — codexskin gallery 打开 dreamskin.cc/gallery,codexskin dir 打开本地主题库
  • ⚙️ 应用内设置面板 — CodexHost 设置页出现「Dream Skin」入口:主题卡片即时切换、状态芯片(活动主题 / CDP 端口 / 注入器状态)、Import ZIP、Open folder、Gallery 按钮
  • 🩺 体检 — codexskin doctor,一条命令检查引擎 / 主题库 / 垫片 / 守护进程 / 补丁状态
  • 🚀 后台启动 — codexskin start --background,脱离终端运行,关掉命令行窗口不影响 Codex 与注入
  • 🧰 全自动安装引导 — codexskin setup,全新机器一条命令补齐全部依赖
  • 🔄 四层自愈 — npm 升级覆盖补丁后自动恢复(详见工作原理)

安装

方式一:npm + 全自动引导(推荐)

npm install -g codexskin-hub
codexskin setup

codexskin setup 会自动补齐全新机器需要的一切:

| 步骤 | 缺失时的行为 | |---|---| | ① Codex Desktop(微软商店 MSIX 应用) | 尝试 winget 自动安装;失败则打开商店页面引导安装(最多重试 3 次) | | ② @codexhost/cli(npm 全局包) | 自动 npm install -g @codexhost/cli | | ③ Codex Dream Skin 引擎 | 从 GitHub Releases 下载最新 CodexDreamSkin-Setup-*.exe 并运行安装向导(--yes 静默安装) | | ④ 集成收尾 | 运行时拷贝 + 补丁 + PATH 垫片,最后跑 codexskin doctor 体检 |

  • 所有下载尊重 HTTPS_PROXY 环境变量;
  • 加 --dry-run 只报告缺什么、不做任何安装;
  • 加 --yes 跳过确认并静默安装 Dream Skin。

方式二:从源码

git clone <本仓库> && cd CodexSkinHub
node install.mjs          # 追加 --startup 注册开机自启

install.mjs 幂等可重复执行:git pull 之后重跑一次即完成原地升级。

前置条件(Windows):Codex Dream Skin (提供注入引擎与主题库)与全局安装的 @codexhost/cli。未装 Dream Skin 时安装器会优雅降级(警告 + 跳过补丁,CLI 仍可用),装好后重跑 codexskin setup 即可补齐。

命令一览

| 命令 | 说明 | |---|---| | codexskin setup [--yes] [--dry-run] | 引导安装全部前置依赖并完成集成 | | codexskin start [--theme <名>] [--background\|-b] | 启动 codexhost + 注入守护;--background 脱离终端运行 | | codexskin theme [<名称>] | 热切换主题 / 列出已装主题 | | codexskin import | 选择主题 ZIP 并导入主题库 | | codexskin gallery / dir | 打开在线 Gallery / 本地主题库 | | codexskin status | 查看 endpoint / 注入器 / 活动主题状态 | | codexskin inject | 手动对齐注入器到运行中的 Codex 一次 | | codexskin doctor | 全链路健康检查 | | codexskin down | 停止 supervisor、codexhost 包装进程与注入器 |

工作原理

启动与注入链路

codexhost 启动 Codex Desktop 时动态选择 CDP 端口;bin 补丁里的 hook 随启动自愈拉起 supervisor 守护,守护进程发现真实端点后拉起注入器;注入器 watch 循环轮询活动主题目录 指纹,重写 active-theme 内文件即对所有运行中的 Codex 窗口热生效。

flowchart TB
    A["codexskin start / codexskin start --background"] --> B["PATH 垫片<br/>.local/bin/codexhost.cmd · 转发前静默重打补丁"]
    B --> C["codexhost bin (已打补丁)"]
    C --> D["启动 Codex Desktop<br/>(动态 CDP 端口)"]
    C --> E["hook.mjs<br/>主题分发 + superviseDetached"]
    E --> F["supervisor 守护<br/>cli.mjs supervise"]
    F --> G["端口发现<br/>ChatGPT.exe 监听套接字 → /json/version"]
    G --> H["injector.mjs --watch"]
    H -- "CDP 注入" --> I["每个运行中的 Codex 窗口"]
    J["active-theme 目录<br/>(主题指纹变化)"] -- "watch 轮询" --> H
    T["codexskin theme &lt;名称&gt;"] -- "重写活动主题" --> J

四层自愈

npm update -g @codexhost/cli 会覆盖补丁,四层机制保证主题能力跨升级存活:

flowchart TB
    X["npm update / install -g @codexhost/cli<br/>(覆盖 bin 与 renderer 补丁)"] --> L1["① CLI 命令入口<br/>codexskin 每次执行前静默重打补丁"]
    L1 --> L2["② PATH 前置垫片<br/>codexhost.cmd 转发真身前重打补丁"]
    L2 --> L3["③ 开机自启链<br/>Startup 注册项启动时自愈"]
    L3 --> L4["④ bin 内 hook 兜底<br/>superviseDetached spawn supervisor"]
    L4 --> OK["补丁恢复, 主题能力存活"]
  • 补丁:src/patch.mjs 锚点式幂等补丁器向已安装的 @codexhost/cli 的 bin 与 renderer 各插入带 [codexskin] 标记的代码块:
    • bin:主题命令分发 + superviseDetached(启动时自愈拉起 supervisor 守护);
    • renderer:应用内 Dream Skin 设置页载荷。 锚点漂移时拒绝写入、保持文件原样;--revert 可按标记剥离,与官方 0.6.0 stock 文件字节级一致。
  • 状态:运行时状态位于 %LOCALAPPDATA%\CodexSkinHub(config、supervisor 状态、日志、导入临时目录);Dream Skin 引擎与主题库留在 %LOCALAPPDATA%\CodexDreamSkin 仅被引用(可通过 config.json -> dreamSkinRoot 覆写)。

卸载

codexskin down
node uninstall.mjs        # 或 npm 卸载时自动执行
npm uninstall -g codexskin-hub

补丁会剥离回官方原状,垫片 / 开机项 / 运行时目录一并移除;Dream Skin 安装与主题库不受影响。

兼容性

  • Windows 10/11(x64 / arm64):完整支持,已对 codexhost 0.6.0 windows-x64 做字节级验证。
  • macOS(实验性):上游 Dream Skin 引擎提供 .dmg、@codexhost/cli 提供 darwin 二进制,codexskin setup 会下载 dmg 并引导安装。注意:本移植尚未在真实 macOS 硬件上验证,欢迎反馈 issue。
  • Linux:不支持——上游 Dream Skin 引擎没有 Linux 发行版(Windows .exe + macOS .dmg),在上游补齐前无解。

上游未来版本移动锚点时,补丁器会大声失败且不写文件——运行 codexskin doctor 查看漂移详情,并到仓库提 issue 等适配。

常见问题

Q: npm install -g 时警告 Dream Skin engine not found? 正常降级行为。装好 Codex Dream Skin 后重跑 codexskin setup,它会自动补齐并应用补丁。

Q: 更新 codexhost 后主题设置页消失了? 四层自愈通常会在下次启动时自动恢复。如未恢复,运行 codexskin doctor 查看 bin / renderer 补丁状态,或直接 node src/patch.mjs 手动重打。

Q: GitHub 下载超时? 设置代理环境变量(如 set HTTPS_PROXY=http://127.0.0.1:7897)后重跑 codexskin setup。

Q: codexskin start -b 之后关了终端,主题还在吗? 在。后台模式下的 Codex 与 supervisor 均已脱离终端,codexskin status 可随时查看,codexskin down 一键停止。

Q: start 报 cannot remove the temporary AppX environment: 找不到元素 (0x80070490)? 这是 codexhost 启动器在激活 Codex Desktop 后清理调试环境时失败,通常是该机器的 AppX 包注册状态异常或首次启动崩溃所致。运行 codexskin repair:它会重新为当前用户注册 OpenAI.Codex 包、清理残留的 cua_node .staging-* 目录,然后重试 codexskin start。仍失败时,从开始菜单手动启动一次 Codex Desktop 让其完全加载后退出再试;个别机器需要重启后重跑 repair。

Q: doctor 报 MISS engine node(v0.3.0 及更早),或者我的 Node 装在非系统盘 / nvm 管理的目录? 旧版用 NODE_EXE !== process.execPath 判断引擎 node 是否存在——当 shim 恰好用引擎自带的 node 启动 CLI 时两者天然相等,被误判为「没找到」(v0.3.1 已修复该判断)。v0.3.2 起逻辑收敛为一句话:优先用引擎自带运行时(engine\runtime\node\),否则直接用当前正在运行 CLI 的那个 node——它无论如何都是一个能用的 node,不需要任何额外探测。Node 装在任意盘符 / nvm / volta 管理的目录都不影响;开机自启脚本在两者皆缺失时静默退出,登录时不会弹窗。doctor 会显示实际采用的 Node 路径。

项目结构

src/cli.mjs               CLI + supervisor + CDP 桥(setup/start/theme/import/gallery/status/down/doctor)
src/platform.mjs          平台抽象层:数据目录 / 进程发现 / killTree / 垫片 / 自启(Windows + macOS)
src/hook.mjs              被补丁后的 codexhost bin 加载(主题分发 + supervisor 自愈拉起)
src/patch.mjs             锚点式幂等补丁器:apply / status / --revert
src/discover.mjs          定位全局 @codexhost/cli(兼容 nvm-windows / 自定义 npm prefix)
src/payload/renderer.js   应用内 Dream Skin 设置页载荷
src/tools/ui-verify.mjs   CDP 截图驱动(UI 验证)
install.mjs / uninstall.mjs

相关项目

  • Codex Dream Skin — 主题引擎与生态(本项目引用其注入器与主题库)
  • @codexhost/cli — Codex Desktop 启动器(本项目的补丁目标)

非 OpenAI 官方产品。不修改 WindowsApps / app.asar;所有改动均为可剥离的运行时补丁。

License

MIT © alleyf