Skip to content

About

桌面应用,用图形界面同时管 Claude Code 和 Codex 两套 AI 编程助手的技能、插件和配置。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Skill Manager

一个桌面应用,用图形界面同时管理 Claude Code 和 Codex 这两套 AI 编程助手的技能、插件和配置。

亮点在这里:它不把 Codex 当成 Claude 的附属。两个工具平级独立,各自有自己的技能、插件、配置子页,顶层一个工作区切换器来回切,整窗配色跟着换。市面上管 Claude Code 配置的工具不少,但大多只盯着一家;Skill Manager 同时盯着两家,而且承认它们是两套独立的东西——配置目录、命令、版本要求都不一样,所以干脆分开管,不强行套进同一个模子。

为什么要做这个?这两个工具的配置都散在命令行和 ~/.claude/、~/.codex/ 的文本文件里。想关掉某个技能、想知道哪些技能在吃上下文、想看插件到底启没启用,都得翻文件或敲命令。Skill Manager 把这些搬进一个窗口:技能的"完整开启 / 仅看名称 / 仅手动调用 / 关闭"四档,每档都标了模型能不能发现它、上下文开销多大;插件开关改完会回读一遍,确认真的写进去了。

开发与构建

npm install
npm run check          # typecheck + lint + test + build
npm run electron:dev   # 启动 Electron 调试会话
npm run electron:build # 打包 NSIS 安装包(产物在 release/)

校验命令一次跑完 TypeScript、ESLint、Vitest 和 Vite 生产构建。提交前应保证它通过。

Windows 打包走 scripts/pack-win.js,本机没开开发者模式、非管理员也能稳定产出(详见脚本注释)。直接 electron-builder --win 在当前环境会因 winCodeSign 解压失败而中断。

架构与目录

  • electron/main.js 进程入口、能力服务装配、配置 watcher 挂载
  • electron/services/capability-service.js 把 inventory 扫描、配置解析、宿主回读合并为统一入口
  • electron/services/settings-resolver.js 设置值优先级(Managed > Local > Project > User)
  • electron/services/capability-resolver.js 安装实例优先级(Enterprise > Personal > Project)
  • src/hooks/useClaudeCapabilities.ts 渲染层会话状态、写作用域路由
  • docs/superpowers/specs/ 设计稿,docs/superpowers/plans/ 实施计划

两个 resolver 方向相反是有意的:Skill 来源优先级决定"哪个 Skill 文件被加载",设置值优先级决定"哪条配置生效"。Claude Code 官方就是两套独立机制,实现里不能合并成一条排序。

作用域与四档状态

Claude Skill 四档

skillOverrides 接受四个值:

产品名称 配置值 向模型暴露 用户手动调用
关闭 off 隐藏 隐藏
仅手动调用 user-invocable-only 隐藏 可见
仅看名称 name-only 仅名称 可见
完整开启 on 名称与描述 可见

没出现在 skillOverrides 里的 Skill 按 on 处理。

四档控制要求 Claude Code 2.1.129 或更高。低于这个版本时状态切换禁用、不写 skillOverrides,设置页会显示当前版本和最低要求。检测只读,不做安装或升级。

验证等级

Skill 设置写完后会重新读回配置文件比对内容,这一级叫已持久化。它只能证明:

  • 写入的是官方字段、合法枚举
  • 目标配置文件读回一致

证明不了已打开的 Claude 会话已经重新算过 Skill 暴露程度。官方 /skills 是交互菜单,Claude Code 也没有能被脚本稳定调用的 skill list/status 命令,所以应用不显示"已验证生效"或"宿主已确认",成功文案统一是"已保存,需新对话加载"。

Claude Plugin 的状态走官方 claude plugin enable/disable --scope 命令,改完再跑 claude plugin list --json 回读,只有 JSON 里目标插件的 enabled 字段跟请求一致时才显示"宿主已确认"。

Codex Plugin 只在当前 Codex CLI 输出里明确带安装和启用状态时才显示宿主确认;CLI 只能写出、不能回读的版本上,降级为"已持久化"。

作用域与默认值

持久化设置按 Managed > Local > Project > User 解析。Managed 只读,应用不会去覆盖。更高优先级有明确值时盖掉更低优先级,没有就向下继承。

  • 全局视图:只写用户全局配置,影响没有更高层明确值的项目。
  • 项目视图:只写当前选定的 Project 或 Local,不写用户全局。
  • 切换项目或全局:重新算实例、来源、状态来源,不产生写入,不闪现上一视图的状态。

全局值是默认值,Project/Local 的显式值能盖掉它。项目切换不创建、删除或修改任何配置文件。

同名实例与遮蔽

普通 Skill 按名称寻址,同名不同源时,Claude Code 加载的是按 Enterprise > Personal > Project 排出来的胜者。Skill Manager 不合并同名卡片,输的那个标为"已遮蔽"并把控制区设为只读。同项目层内出现同名 Skill 而官方没规定层内优先级时,显示"来源未确认"提示,不替用户猜谁是胜者。

测试

npm test -- --run

Vitest 双工程:Electron 服务用 node 环境,渲染层 hook 和组件用 jsdom。集成测试(临时目录 + 真实文件)放在对应服务的 *.test.js 旁边。

About

桌面应用,用图形界面同时管 Claude Code 和 Codex 两套 AI 编程助手的技能、插件和配置。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages