花了2天写了个全平台的技能管理工具

125 阅读3分钟

image.png

之前分享过很多次关于技能管理的想法,核心还是软链接。本来也开发了差不多了,就差 CLI(agent友好)和桌面端这两步,最近把这两步补齐了。

image.png


它是什么

Skill Port 维护一个本地 Hub~/.skill-port),所有 Skill 只在这里存一份。然后通过 enable 操作,把 Skill 暴露到需要它的项目或全局 Agent 目录。同一个 Hub 可以服务多个项目,CLI 和 Desktop 共享同一套数据和 schema。

  • Desktop(Electron 应用)给人用:选目录、点按钮、看状态。
  • CLI 给 Agent 用:装好以后,你可以直接让 Agent 替你管理。CLI 安装时会自动向 ~/.agents/skills/skill-port 注册一个内置管理 Skill,兼容的 Agent 在新会话中就能发现 sklp,无需你手动修改 AGENTS.md

实际效果

image.png

image.png

CLI 安装之后桌面端的效果: image.png


设计思路

核心模型:Hub 是唯一的真相来源

Skill Port 有三个关键概念:

概念是什么示例
Hub所有 Skill 的物理存储(~/.skill-port),基于 SQLite 维护状态一份 baoyu-translate 只存在于 Hub
Enablement将 Skill 暴露到目标的动作,项目级或全局sklp enable baoyu-translate --global
SourceSkill 的来源:Git 仓库、本地目录复制(install)、本地目录链接(link)sklp install https://github.com/owner/skill.git

image.png

Hub 不扫描文件系统来发现 Skill。每个 Skill 必须显式地 install 或 link 到 Hub,再显式地 enable 到目标。这个设计来自一个明确的选择:显式优于隐式。Agent Skill 目录是共享资源,如果你允许自动发现,就无法保证每个入口都有明确的所有者和可追溯的来源。

install vs link:两个不同的所有权模型

当你想把一个本地 Skill 加入 Hub 时,有两种模式:

  • sklp install ~/skills/my-skill:把 Skill 目录复制到 Hub 内。Hub 成为这份 Skill 的唯一管理者。适合不需要再改动的 Skill,或者来自 Git 仓库的 Skill。
  • sklp link ~/skills/my-skill:在 Hub 中创建一个指向原始目录的符号链接。你继续在原目录维护 Skill,Hub 只负责分发。适合你正在开发的 Skill,或者你希望保留外部所有权的 Skill。

这个区分直接关系到卸载行为:sklp uninstall 会清空 Hub 内的复制 Skill,但永远不会删除 Hub 外的 linked 源目录。

image.png

project vs global:两种分发范围

  • 项目级sklp enable my-skill):Skill 启用到 <project>/.agents/skills/。只对该项目生效。
  • 全局sklp enable my-skill --global):Skill 启用到 ~/.agents/skills/。所有项目都能用。

两者的启用入口由 Hub 的 enablement 记录追踪。删除 Skill 时(sklp remove --force),Skill Port 只移除自己管理的入口;~/.agents/skills/ 中非 Skill Port 创建的文件和链接不会被触碰。

image.png

Desktop 如何复用 CLI 核心

Desktop 不是 CLI 的 GUI 外壳——它不解析 stdout。Desktop 使用 Electron 43,渲染进程完全沙箱化(无 Node、无文件系统、无原始 IPC),通过受限 preload 将请求发到主进程,再由独立的 utility 进程调用 DesktopSkillPort 应用层 facade。所有持久化行为最终走与 CLI 相同的 SkillPort 服务类,共享同一 Hub 和 SQLite schema。

这意味着你可以在 CLI 里装一个 Skill,用 Desktop 启用它,反过来也完全兼容。

image.png


快速开始

环境要求:Node.js ≥ 22.16。从 Git 仓库安装 Skill 时还需要系统 Git。

让 Agent 帮你装

把下面这句话发给能够执行终端命令的编码 Agent:

参考 github.com/kanelogger/… 帮我全局安装 Skill Port CLI。先检查 Node.js 是否满足版本要求,再执行 sklp --versionsklp agent setup 验证安装;遇到权限或 PATH 问题时先报告,不要自行绕过。

桌面端

安装 Skill Port Desktop 0.1.4

image.png

image.png