SkillDock 是一个本地技能管理应用,用于可视化管理本机上 Codex 与 Claude 的 skills、plugins 与 marketplace 来源。本 skill 随独立的 skilldock 插件分发,在 Codex 或 Claude 中均只负责打开这一本地技能管理应用,两边打开的是同一个本地实例和同一份数据。当用户只是需要在普通任务中使用某个 skill 时,不会触发本工具。
用途
SkillDock 面向技能库的可视化管理:浏览、安装更新、启用禁用、移除恢复。界面按钮直接调用本地服务,打开即加载本机技能库。当用户只要求打开界面时,不替其安装、禁用或移除实际技能。
打开方式
在支持原生入口的 Codex 版本中,可从 More / Explore 的 SkillDock 打开完整主页面并固定到侧栏(Pin to sidebar)。该原生入口仅为 Codex 所有,Claude 不加载它;插件随包提供本地 MCP 服务及完整 UI。第一次打开会自动准备后台,后续复用已核实的实例。全局页面沿用已保存的项目,首次无选择时使用用户主目录,用户可从项目选择器切换。后台中断时界面会重连,不自动重放写操作。原型 SkillDock Preview 是不同测试插件,正式入口需单独固定,不会自动卸载用户的 Preview。
在 Claude 中,把本地技能管理器打开在内置浏览器面板里。宿主未提供对应浏览器工具时不伪造面板已打开,给出可点击链接即可。
启动方式
从本次实际加载的 SKILL.md 所在目录定位 scripts/launch.sh,不要假定仓库 checkout 或插件缓存路径。启动前确定用户项目目录,并用 --project 显式传入;不要先切换到下载目录或安装目录再把它作为用户项目。未指定时依次使用 SKILLDOCK_PROJECT_DIR、界面保存的项目、调用工作目录。
命令示例:
/bin/sh "/实际安装位置/skill-manager/scripts/launch.sh" start --project "/用户项目的绝对路径"
/bin/sh "/实际安装位置/skill-manager/scripts/launch.sh" status
/bin/sh "/实际安装位置/skill-manager/scripts/launch.sh" stop
启动器按固定顺序查找本机 Node.js 22.12+(Codex 工作区、已下载的专用版本、Homebrew、nvm/fnm/Volta/asdf/mise/nodenv、PATH),保存所选路径供两侧入口与后台任务复用,失效时重新查找;找不到时弹出安装引导。界面“切换项目”可保存新的扫描选择。可用 SKILLDOCK_STATE_DIR 指定独立应用数据目录、PORT 指定端口;默认数据位于 ~/.local/share/skilldock,默认端口 4771。启动器把源文件复制到应用数据目录,按 lockfile 安装依赖并构建(输出写入数据目录的 build.log),不向安装的插件缓存写入运行数据;首次启动需要 npm registry 可达,后续复用相同构建。
Codex CLI 逐个验证 PATH、桌面应用内置 CLI 与 Codex 管理的副本;损坏的旧 wrapper 会被跳过。Claude 命令行依次取显式指定、用户手动指定的保存值、从 Claude 打开时会话提供的路径、Claude 桌面应用自带的最高版本、此前自动选中的保存值、PATH 与用户目录下的安装,选中后保存并在使用前核验版本。指定 SKILLDOCK_CODEX_BIN 或 SKILLDOCK_CLAUDE_BIN 时必须是有效的绝对路径。
运行环境诊断
运行环境发现失败时先执行 launch.sh doctor(只读,不写任何文件)。宿主若提供 load_workspace_dependencies,可读取其返回的真实 Node 路径,以 SKILLDOCK_NODE_BIN 指定;自定义 Codex 应用位置使用 SKILLDOCK_CODEX_APP_DIR。无人值守或没有图形界面的环境可设 SKILLDOCK_NO_DIALOG=1 关闭安装引导对话框。不要修改 Codex 的签名或用户 shell 配置来绕过加载限制。需核对启动前后打印的请求目录和最终扫描目录、目录来源、Codex CLI 绝对路径,以及本机有 Claude 时所选的 Claude 命令行。若最终目录不符合用户意图,修正 --project 后重新打开,不把 HTTP 200 当作扫描目录正确的证据。默认读取本机已知技能根和可用 CLI 证据,不声称扫描整台磁盘。
状态与停止
启动是网页后台服务操作,中断调用不一定停止已创建的服务;先用 status 核实实际结果,需要停止网页服务时执行 stop。启动器只停止它自己记录的服务。自 0.4.0 起,自动更新由独立的 macOS 用户后台任务负责,stop 不关闭自动更新;用户要求停止自动更新时,在更新页关闭计划并读回后台任务已移除。
退出码 3 表示数据已由更高版本的 SkillDock 管理、需要先更新本侧 SkillDock:把输出中的提示原样告诉用户,不要重试,也不要改用其他数据目录。退出码 4 表示某个 Agent 中还装有低于 0.10.3 的 SkillDock,0.11 暂不接管数据;把 stderr 中的说明与处理步骤告诉用户,并询问是否由 SkillDock 一键更新 stderr 中列出的那个 Agent。用户同意后在原启动命令前加上 SKILLDOCK_UPDATE_AGENT=codex 或 SKILLDOCK_UPDATE_AGENT=claude 重新运行一次。两侧都被拦下时每次只指名一侧。非 0 退出时 stdout 没有内容。
自动更新
用户将所属插件加入自动更新计划后,独立任务在整批结束时准备新版,下次任务使用新版;没有打开面板时不启动网页服务。已运行的网页服务检测到新版后自动重启,浏览器自动重连;同一安装跨版本保留原数据目录。构建失败保留旧服务,启动失败尝试恢复旧运行目录。macOS 计划首次开启时注册当前用户 LaunchAgent,结束即退出;Codex 和网页面板均可关闭。重启并登录、睡眠恢复后补一次到期检查。
从旧版迁移
旧版 SkillDock 0.1.0 属于 testany-eng。独立插件首次接续旧数据时,在明确打开新插件的请求下,执行 start --project "/用户项目" --migrate-from testany-eng;启动器只接续同一 marketplace 和 Codex 根的固定旧身份,保留旧计划与历史,不自动卸载整个 testany-eng。新旧同名 skill 共存时以独立 skilldock 的安装路径为准。
适用场景示例
“打开技能管理面板”→ 启动并打开 GUI,交由用户选择对象。
“设置技能自动更新”→ 打开更新页的计划设置;让用户选择对象、间隔与自动应用开关。仅打开界面不代表授权创建本机计划。
“查看这个项目有哪些同名技能”→ 将项目目录作为扫描根,打开技能库并筛选重名项。
“SkillDock 无法启动”→ 读取启动结果、服务日志,只处理该实例。
限制与边界
本 skill 仅打开本地技能管理应用,不替用户执行安装、禁用或移除等实际操作。默认只读取本机已知技能根和可用 CLI 证据,不声称扫描整台磁盘。已运行的 Codex 或 Claude 会话不保证即时重新加载配置,需按提示重启、新开会话或重载插件。启动器不按端口或进程名称杀掉其他程序。不得删除数据目录或手改所有权记录来绕过校验。用户或系统禁用后台运行时不擅自重启用。Sandbox 已从产品移除,隔离夹具仅供开发测试使用。本软件许可为 AGPL-3.0-only。