中文
Skills Manager v2.2.0 带来了独立的命令行工具 skm,以及 macOS 上的 Homebrew 安装渠道。
命令行工具 skm(新增)
新增一个与桌面应用并列的命令行前端,面向适合在终端里完成的工作流:SSH / 无头服务器、dotfiles 初始化脚本、快速状态检查。CLI 与桌面应用读写同一份配置和同一批软链接,两者可以随意混用。
| 命令 | 作用 |
|---|---|
skm init |
不启动 GUI 完成首次配置(写配置、检测已装工具) |
skm adopt |
把已散落在各工具目录里的技能收编进技能库,并替换为指回技能库的链接 |
skm list |
列出技能及其在各工具下的链接状态 |
skm enable <skill> --for <tool> |
为指定工具创建软链接 |
skm disable <skill> --for <tool> |
移除软链接 |
skm doctor |
检测已安装工具并报告同步问题 |
skm fix |
修复 doctor 发现的问题(需要 --yes 才真正写入) |
- 可脚本化:每个命令都支持
--json,数据走 stdout、诊断信息走 stderr,所以调用方可以只解析一份文档,同时仍然信任退出码。 - 前缀匹配:技能名和工具名都接受唯一前缀,
claude即可匹配claude-code。 - 可与 GUI 并存:所有会改动状态的命令都会先对配置文件加建议锁,并且在读取之前就加锁,避免把修复动作套用在已被其他写入者替换过的快照上。只读路径(
list、doctor、不带--yes的fix)完全不加锁,不会阻塞正在进行的启用/禁用;交互式确认发生在锁之外,不会因为等待用户回答而卡住其他skm进程。 - 安全默认:
init不会覆盖已有配置;adopt对候选项做稳定排序,重名技能每次运行都会得到相同的处理结果。
桌面应用是可选的:skm init + skm adopt 就构成一套纯终端工作流。
从桌面应用一键安装 CLI(新增)
安装包内已附带编译好的 skm,无需二次下载 —— 在 设置 → 命令行工具 里可以一键安装。
安装位置会优先选用确实可写的 /usr/local/bin,否则回退到用户级 bin 目录(优先挑已经在 PATH 上的)。如果最终落到一个不在 PATH 上的目录,界面会直接说明这一点,而不是假装安装成功:安装后会有一条常驻提示,行内也会保留一条说明,直到 PATH 被修正为止。
配套 skill 自动保持同步(新增)
skills-manager-cli 配套 skill 会写入技能库并为已检测到的工具启用,让其他 agent 不必猜参数就能驱动 skm —— 里面写清了 --json 契约、dry-run 与实际写入的区别,以及 skm 明确不做的事。
这一版起,它不会再随版本升级而过期:
- GUI 启动时自动刷新技能库里的副本(未安装 CLI 时是空操作)
skm doctor会检查它与当前二进制是否匹配(--json里的companion_skill字段,文本模式下给出刷新提示),覆盖手动替换二进制的情况- 每次版本升级自动发布到 ClawHub,从市场拉技能而非从应用安装的 agent 也总能拿到与当前
skm匹配的说明
Homebrew 安装(macOS,新增)
brew tap jiweiyeah/tap
brew install --cask jiweiyeah/tap/skills-managercask 会自动匹配 CPU 架构,之后 brew upgrade 即可保持最新。
请使用完整路径 jiweiyeah/tap/skills-manager:Homebrew 官方 cask 仓库里有一个同名但无关的 skills-manager,官方源优先级更高,直接用短名会装错。
本应用有 ad-hoc 签名但未经 Apple 公证,因此 cask 会在安装后移除隔离标记,否则 Gatekeeper 会拒绝启动。具体含义与手动处理方式见 tap 仓库说明。
修复与改进
- 修复技能发布时的版本查询解析错误:ClawHub 接口实际返回
items字段,而客户端只读versions,缺失的键会静默变成空列表 —— 于是已发布的技能看起来像未发布,预览里建议 1.0.0,随后被服务端当作重复版本拒绝。现在两种字段都接受,遇到无法识别的响应会报告查询失败,而不是猜成「没有已发布版本」。 - 内部重构:models 与 services 抽成独立的
sm-corecrate,仓库转为 cargo workspace,桌面应用不再是这些逻辑的唯一使用方。启用/禁用的链接应用路径与 doctor/fix 的同步检查也移入 core,非 GUI 调用方才能复用。 - 现有用户会在启动时看到一次 CLI 介绍弹窗,最多显示三次,可用 Escape 关闭。
安装包
本版本提供 macOS Apple Silicon、macOS Intel、Windows 和 Linux 的桌面安装包,以及四个平台的 skm 命令行归档(按 Rust target 命名,例如 skm-aarch64-apple-darwin.tar.gz)。请从下方 Assets 中选择适合系统和架构的文件。
English
Skills Manager v2.2.0 introduces skm, a standalone command-line interface, and a Homebrew installation channel on macOS.
New: the skm command-line interface
A second front end alongside the desktop app, for the parts of the workflow that belong in a terminal: SSH and headless machines, dotfiles setup scripts, and quick status checks. The CLI reads and writes the same config and the same symlinks as the desktop app, so the two are interchangeable.
| Command | What it does |
|---|---|
skm init |
First-run setup without the GUI (writes config, detects installed tools) |
skm adopt |
Move skills already living in tool directories into the hub and relink them back to it |
skm list |
List skills and their per-tool link status |
skm enable <skill> --for <tool> |
Create the symlink |
skm disable <skill> --for <tool> |
Remove the symlink |
skm doctor |
Detect installed tools and report sync issues |
skm fix |
Repair what doctor found (--yes required to actually write) |
- Scriptable: every command takes
--json, with data on stdout and diagnostics on stderr, so a consumer can parse one document and still trust the exit code. - Prefix matching: both
<skill>and<tool>accept a unique prefix —claudematchesclaude-code. - Safe alongside the GUI: anything that mutates state takes an advisory lock on the config file, and always locks before reading, so a repair is never applied against a snapshot another writer has already replaced. Read-only paths (
list,doctor,fixwithout--yes) take no lock at all and never block an in-flight enable/disable. Interactive prompts happen outside the lock, so waiting on an answer can't stall otherskmprocesses. - Careful defaults:
initrefuses to clobber an existing config, andadoptsorts candidates deterministically, so a duplicate skill name resolves the same way on every run.
The desktop app is optional: skm init + skm adopt give a fully terminal-only workflow.
New: install the CLI from the desktop app
The compiled skm now ships inside the installer, so there is no second download — install it in one click from Settings → Command Line Tool.
The install target prefers /usr/local/bin when it is genuinely writable, and otherwise falls back to a user bin directory, preferring one already on PATH. If the chosen directory is still off PATH, the UI says so rather than claiming success: a persistent toast after installing, plus a hint in the row that outlives it, until PATH is fixed.
New: the companion skill stays in sync
The skills-manager-cli companion skill is written into the hub and enabled for every detected tool, so other agents can drive skm without guessing flags — it documents the --json contracts, dry-run versus apply, and which commands skm deliberately does not implement.
As of this release it no longer goes stale on upgrade:
- The hub copy is refreshed on GUI startup (a no-op unless the CLI is installed)
skm doctorchecks it against the running binary (companion_skillin--json, a refresh hint in text mode), covering the manual-binary-swap case- Every version bump publishes it to ClawHub, so agents pulling from the marketplace instead of the app also get instructions matching the current
skm
New: Homebrew on macOS
brew tap jiweiyeah/tap
brew install --cask jiweiyeah/tap/skills-managerThe cask picks the right build for your CPU automatically, and brew upgrade keeps it current.
Use the full jiweiyeah/tap/skills-manager path: Homebrew's official cask repository contains an unrelated cask that happens to share the skills-manager token, and the official tap wins on a bare name.
The app is ad-hoc signed but not notarized by Apple, so the cask strips the quarantine attribute on install — without that, Gatekeeper refuses to launch the bundle. See the tap README for what that means and how to handle it yourself.
Fixes and improvements
- Fixed version lookup when publishing a skill. The ClawHub API answers with an
itemskey while the client only readversions; the missing key silently became an empty list, so an already published skill looked unpublished, the preview suggested 1.0.0, and the server then rejected it as a duplicate. Both keys are now accepted, and an unrecognized response reports a failed lookup instead of guessing "no published versions". - Internal refactor: models and services were extracted into a standalone
sm-corecrate and the repository became a cargo workspace, so the desktop app is no longer the only consumer of that logic. The enable/disable link-apply path and the doctor/fix sync check moved into core as well, so non-GUI callers can reuse them. - Existing users see a one-time modal pointing at the CLI on launch, capped at three displays and closable with Escape.
Downloads
This release includes desktop installers for macOS Apple Silicon, macOS Intel, Windows, and Linux, plus skm CLI archives for all four platforms (named after their Rust target, e.g. skm-aarch64-apple-darwin.tar.gz). Choose the appropriate file for your platform and architecture from the Assets section below.
Full changelog: v2.1.9...v2.2.0