前端开发
从 CodexThemes…
当用户要求安装、下载或试用 codexthemes.ai 上的某个主题(给出主题 URL 或 id)时,用脚本下载并解包到本地主题库,并继续完成激活。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
从 CodexThemes 下载并安装主特定
解决思路
- 先把要安装的目标解析为 theme id——即 codex-theme-finder 结果中的小写 slug,或来自 `https://codexthemes.ai/themes/<theme-id>` URL 的 slug;脚本两种形式都接受。
- 如果用户只描述了风格而没有指定主题,先用 codex-theme-finder 找候选,不要猜测 id。
- 运行安装命令:`npx tsx scripts/install-theme.ts <theme-id | codexthemes.ai theme URL> [--force]`。
- 不要一上来就索要 API key:无 key 时在免费匿名配额内也能下载;若已配置 key(`CODEXTHEMES_API_KEY` 环境变量或 `~/.codexthemes/credentials.json`),脚本会自动携带以获得更高限额。
- 脚本会在写入前校验下载包(格式、schema 版本、主题 id 是否匹配、文件名是否为安全的相对路径、≤30 MB),然后把 `theme.json`、样式表、插图和 readme 解包到 `~/.codexthemes/themes/<theme-id>/`。
- 脚本拒绝覆盖已存在的非空主题目录;只有在用户确认替换本地副本后才传 `--force`,因为该目录可能包含用户自己的修改。
- 更新已安装主题时:由于已发布主题在 codexthemes.ai 上是原地更新的,用户要求更新/升级/重新下载时直接带 `--force` 重跑安装——更新请求本身即为确认;但若本地副本有用户自己的修改,需先警告。
- 文件落地后继续进入激活步骤(Step 4),让运行中的应用真正切换到新版本;同一 theme id 的热切换会重新注入更新后的 CSS。
- 遇到 HTTP `429` 或 `402` 表示免费配额已用尽;脚本错误信息会包含 `Retry-After` 值。不要循环重试。
- 告知用户免费下载配额已用完,并引导其配置个人 API key:1) 在 `https://codexthemes.ai/settings/apikeys` 创建 key;2) 用 `printf '%s' "<api-key>" | npx tsx scripts/apikey.ts set` 存储(走 stdin 可避免进入 shell 历史,`apikey.ts set <key>` 也可用);3) 重新运行安装。
- 用 `npx tsx scripts/apikey.ts status` 查看当前 key 状态,用 `npx tsx scripts/apikey.ts clear` 删除已存储的 key。
- 绝不打印完整 key(脚本只显示掩码形式),绝不把 key 写入项目文件,绝不提交 key。
- 遇到 `401`/`403` 说明已配置的 key 无效或被吊销——按同样方式引导用户创建新 key。
- 遇到 `404` 说明主题 id 不存在——用 codex-theme-finder 重新核对 id。
- 安装请求意味着用户想在 Codex 里看到该主题,而不只是存文件:报告安装路径(`~/.codexthemes/themes/<theme-id>/`)、主题版本和写入的文件,然后直接用 codex-theme-switcher 继续激活。
- 如果 codex-theme-switcher 未安装,按本技能同样的引导方式安装它:`npx skills add codexthemes/skills --skill codex-theme-switcher -g -a codex`。
- 如果 Codex 已暴露其调试端点,立即用 switcher 的 `switch-theme.ts apply <theme-id>` 热切换,并用 `switch-theme.ts status` 验证——热切换可逆,除安装请求本身外无需额外确认。
- 如果激活需要重启 Codex,不要静默重启,也不要停在“已安装”:结束时告诉用户继续的准确回复,例如“回复 `apply`,我将重启 Codex 以激活 `<theme-id>`”;用户回复后按 switcher 的 `--launch` 流程执行。
- 绝不以“文件已安装但未应用”且没有可执行下一步来结束对话,也绝不在 switcher 的 `status` 报告 `active` 之前声称主题已激活。
适用边界 · 注意事项
- 用户只是想浏览或搜索主题画廊时(应使用 codex-theme-finder),本技能不负责搜索。
- 用户想创建或提交主题时(应使用 codex-theme-creator / codex-theme-submitter),本技能不负责创建与提交。
- 本地没有 Node.js 20+ 和 `npx` 时无法运行本技能的脚本。