github xingkongliang/skills-manager v1.44.0
Skills Manager v1.44.0

one hour ago

Skills Manager v1.44.0

发布日期:2026-11-12
递交范围:v1.43.4...v1.44.0

发布概览

  • Agent 现在可以通过 CLI 管理项目级 Skill;Skill 详情页显示实际部署状态,而不是 Preset 的意向;渲染出错时不再整窗空白。

用户可见更新

  • 用 CLI 管理项目里的 Skill — skills-manager-cli 新增 projects 命令组:list、show、add、remove、deploy、undeploy、import。在某个仓库里干活的 Agent 现在可以登记这个项目,把库里的 Skill 或整个 Preset 部署进去,也可以把在项目里写的 Skill 收进库。所有会改动东西的命令都带 --dry-run。随应用发布的 manage-skills 已补上这些命令的用法。感谢 @vtxyer 和 @haringuyendev,这项功能建立在他们的 PR 之上(#660、#309、#486)。
  • Skill 详情页显示实际部署状态 — 详情页里各 Agent 的勾和「已同步 x / y」原来跟的是 Preset 里每个 Agent 的开关,而这个开关默认是开的。所以刚加进 Preset 的 Skill 会显示全部已同步,磁盘上却什么都没有。现在绿勾表示已启用且已部署;在生效中的 Preset 上,已启用但还没部署的 Agent 显示「待同步」,点一下就部署。感谢 @akushonkamen(#662、#548、#384)。
  • 共用同一个 skills 目录的 Agent 都能部署 — 有些 Agent 读的是同一个目录,比如 Codex、GitHub Copilot 和 Pi 都读 ~/.agents/skills。同步模式为「复制」时,从卡片、详情页或 Preset 给其中第二个 Agent 部署会被拒绝;往生效中的 Preset 里安装 Skill 时则显示成功,实际没有部署给它。现在目录里已有的副本和库里一致时,第二个 Agent 会直接接管。你改过的副本不会被动,部署照旧被拒绝(#663)。
  • 渲染出错时不再整窗空白 — 以前页面在渲染时出错,整个窗口会变成一片纯色,没有任何出路。现在会显示错误信息,并提供复制、导出日志和重新加载(#659)。
  • 重复添加同一个项目目录会明确拒绝 — 项目按规范化后的路径保存,同一个目录换种写法(末尾多一个斜杠、经过符号链接)不会再登记成两个项目,提示里会指出已有的那个项目(#660)。
  • 项目目录不存在时会提示,不再重建 — 已登记的项目目录不在了,再往里添加、移除或导入 Skill 时会直接说明。以前添加 Skill 会把这个目录重新建出来(#660)。
  • 主题默认跟随系统 — 没有选过主题时,应用现在跟随系统的浅色或深色外观,以前一律是深色。升级后同样生效:系统是浅色的话,界面会变成浅色。自己选过的主题保持不变(#652、#369)。

开发者与治理更新

  • 移除项目里的 Skill 副本、把项目 Skill 导入库,这两处检查现在写在 Rust 里,不再只靠前端:不带 force 时,只有已同步的副本或指向库内副本的链接才能移除;同一个 Skill 在项目里有多份副本都与库不同时拒绝导入。应用在自己的确认弹窗之后传 force,行为不变(#660)。
  • 把项目 Skill 导入库时现在会拿 RepoLock,写 sync metadata 和审计,并在锁内解析和判定目标(#660)。
  • 项目部署的一批里,只要有一个目标会覆盖不属于该 Skill 的内容,或两个 Skill 指向同一个目录,就整批拒绝并返回 TARGET_CONFLICT。共用项目目录的任何一个 Agent 都可以用 --agent 指定,不再只认登记在前的那个(#660)。
  • 批量部署之外,别的 Agent 的 skill_targets 记录只允许认领内容与库一致的目录,不能用来覆盖目录。移除时按物理目录查找其他记录,经符号链接的路径别名也能认出。skills sync --dry-run 会把同一轮里先写的目标算进去。批量部署不再把同一路径上另一个 Skill 的记录当作许可(#663)。
  • get_skill_tool_toggles 为每个 Agent 返回 deployed,取自 skill_targets;TypeScript 类型里是必填(#662)。
  • 新增直接依赖 dunce,用于在 Windows 上得到不带 verbatim 前缀的规范路径。它原本就在 lockfile 里(#660)。
  • CI 的 Linux 任务改为跑 cargo test,原来只跑 cargo check(#661)。

当前校验状态

  • ✅ 跨平台构建通过(macOS Intel / macOS ARM / Windows x64 / Linux x64 / Linux ARM64)
  • ✅ TypeScript typecheck 通过

English release notes

Release date: 2026-11-12
Commit range: v1.43.4...v1.44.0

Release Overview

  • Agents can now manage project-level skills through the CLI, the skill detail sheet shows what is actually deployed instead of what a preset intends, and a rendering error no longer leaves a blank window.

User-facing

  • Manage project skills from the CLI — skills-manager-cli gains a projects group: list, show, add, remove, deploy, undeploy and import. An agent working in a repository can now register it, deploy library skills or a whole preset into it, and bring a skill written there back into the library. Every command that changes something takes --dry-run. The bundled manage-skills skill explains the commands to agents. Thanks to @vtxyer and @haringuyendev, whose pull requests this builds on (#660, #309, #486).
  • The skill detail sheet shows what is deployed — The agent rows and "synced x / y" used to follow the preset's switch for each agent, which starts out on. A skill just added to a preset therefore showed every agent as synced while nothing was on disk. A green tick now means the skill is enabled and deployed. On the active preset, an enabled agent that has not been deployed to yet shows "pending sync", and clicking it deploys. Thanks to @akushonkamen (#662, #548, #384).
  • Agents that share a skills folder can each be deployed to — Several agents read the same folder; Codex, GitHub Copilot and Pi all read ~/.agents/skills, for example. With the sync mode set to Copy, deploying a skill to the second of them from its card, the detail sheet or a preset was refused, and installing into the active preset reported success without deploying to it. The second agent now takes over the copy that is already there when it matches the library. A copy you have edited is left alone and the deploy is refused, as before (#663).
  • A rendering error no longer blanks the window — When a page failed while rendering, the whole window turned a plain colour with no way out. It now shows the error, with buttons to copy the details, export logs and reload (#659).
  • Adding the same project folder twice is refused clearly — A project is stored under its canonical path, so a second spelling of the same folder (a trailing slash, a symlink) no longer registers a duplicate. The message names the project that already has it (#660).
  • A missing project folder is reported, not recreated — When a registered project's folder no longer exists, adding, removing or importing a skill there says so. Adding a skill used to recreate the folder (#660).
  • The theme follows the system by default — When you have never picked a theme, the app now follows the system's light or dark appearance; it used to open dark. This also applies after updating: on a light system you will get the light theme. A theme you chose yourself is kept (#652, #369).

Developer & Governance

  • Removing a project skill copy and importing one into the library are now checked in Rust, not only in the frontend: removal without force is refused unless the copy is in sync or is a link to the library copy, and an import is refused when several copies of the skill in the project differ from the library. The app passes force after its own confirmation dialog, so its behaviour is unchanged (#660).
  • Importing a project skill into the library now takes RepoLock, writes sync metadata and an audit entry, and resolves and authorizes its destination under the lock (#660).
  • A project deploy batch that would overwrite something that is not that skill, or send two skills to one directory, is refused as a whole with TARGET_CONFLICT. Any agent that reads a shared project directory can be named with --agent, not only the one the directory is filed under (#660).
  • Outside batch deploys, a skill_targets row belonging to another agent only lets a deploy adopt a directory whose content matches the library; it never authorizes replacing one. Removal checks for other rows by physical directory, so a path alias through a symlink is recognized. skills sync --dry-run accounts for writes made earlier in the same run. Batch deploys no longer take a row for a different skill at the same path as permission (#663).
  • get_skill_tool_toggles returns deployed for each agent, read from skill_targets; the TypeScript type requires it (#662).
  • New direct dependency dunce, for canonical Windows paths without the verbatim prefix. It was already in the lockfile (#660).
  • The Linux CI job runs cargo test; it used to run cargo check only (#661).

Current Verification

  • ✅ Cross-platform build passed (macOS Intel / macOS ARM / Windows x64 / Linux x64 / Linux ARM64)
  • ✅ TypeScript typecheck passed

完整变更:v1.43.4...v1.44.0

Full changelog files: English | 中文

Don't miss a new skills-manager release

NewReleases is sending notifications on new releases.