1
0
Files
Skill/openspec/changes/archive/2026-02-25-build-skillmgr-cli/specs/install-tracking/spec.md

125 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## ADDED Requirements
### Requirement: 系统必须持久化安装记录
工具必须在每次成功安装后,将安装信息写入 `~/.skillmgr/install.json`
#### Scenario: 创建新记录
- **WHEN** 首次安装某个 skill/command
- **THEN** 系统在 install.json 的 installations 数组中添加新记录
#### Scenario: 记录包含必要字段
- **WHEN** 创建安装记录
- **THEN** 记录必须包含 type、name、source_repo、platform、scope、install_path、installed_at、updated_at
---
### Requirement: 用户可以查询已安装项
工具必须提供命令列出所有已安装的 skills 和 commands。
#### Scenario: 列出所有已安装项
- **WHEN** 用户执行 `skillmgr list` 命令
- **THEN** 系统显示所有 install.json 中的记录
#### Scenario: 按类型过滤
- **WHEN** 用户执行 `skillmgr list --type skill``--type command`
- **THEN** 系统仅显示对应类型的安装记录
#### Scenario: 按平台过滤
- **WHEN** 用户执行 `skillmgr list --platform claude``--platform opencode`
- **THEN** 系统仅显示对应平台的安装记录
#### Scenario: 按作用域过滤
- **WHEN** 用户执行 `skillmgr list --global` 或省略该参数
- **THEN** 系统仅显示对应作用域的安装记录
#### Scenario: 无已安装项
- **WHEN** install.json 为空或不存在
- **THEN** 系统提示"无已安装的 skills/commands"
---
### Requirement: 用户可以卸载已安装项
工具必须提供卸载功能,删除文件并移除安装记录。
#### Scenario: 卸载 skill
- **WHEN** 用户执行 `skillmgr uninstall skill <name> --platform <platform> --global`
- **THEN** 系统从 install.json 查找记录,删除对应目录,移除记录
#### Scenario: 卸载 command
- **WHEN** 用户执行 `skillmgr uninstall command <group> --platform <platform> --global`
- **THEN** 系统删除对应的命令文件或目录,移除记录
#### Scenario: 卸载不存在的项
- **WHEN** install.json 中无对应记录
- **THEN** 系统提示"未找到安装记录",不执行删除
#### Scenario: 安装路径已被手动删除
- **WHEN** install.json 有记录但文件已不存在
- **THEN** 系统仅移除记录,不报错
---
### Requirement: 用户可以更新已安装项
工具必须提供更新功能,重新从源仓库安装最新版本。
#### Scenario: 更新单个 skill
- **WHEN** 用户执行 `skillmgr update skill <name> --platform <platform> --global`
- **THEN** 系统从源重新安装到原路径,更新 updated_at 字段
#### Scenario: 更新单个 command
- **WHEN** 用户执行 `skillmgr update command <group> --platform <platform> --global`
- **THEN** 系统从源重新安装到原路径,更新 updated_at 字段
#### Scenario: 更新所有已安装项
- **WHEN** 用户执行 `skillmgr update --all`
- **THEN** 系统遍历 install.json 中所有记录,逐个更新
#### Scenario: 源仓库找不到原始项
- **WHEN** 更新时源仓库中不再存在该 skill/command
- **THEN** 系统报错,不修改已安装文件和记录
---
### Requirement: 用户可以清理孤立记录
工具必须提供命令扫描并清理 install.json 中文件路径已不存在的记录。
#### Scenario: 扫描孤立记录
- **WHEN** 用户执行 `skillmgr clean` 命令
- **THEN** 系统遍历 install.json 中所有记录,检查 install_path 是否存在
#### Scenario: 清理孤立记录
- **WHEN** 发现安装路径不存在的记录
- **THEN** 系统列出这些记录并从 install.json 中删除
#### Scenario: 无孤立记录
- **WHEN** 所有记录的安装路径都存在
- **THEN** 系统提示"无孤立记录"
#### Scenario: 显示清理结果
- **WHEN** 清理完成
- **THEN** 系统显示清理的记录数量和详情type、name、platform、scope、路径