125 lines
3.7 KiB
Markdown
125 lines
3.7 KiB
Markdown
## 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、路径)
|