## 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 --platform --global` - **THEN** 系统从 install.json 查找记录,删除对应目录,移除记录 #### Scenario: 卸载 command - **WHEN** 用户执行 `skillmgr uninstall command --platform --global` - **THEN** 系统删除对应的命令文件或目录,移除记录 #### Scenario: 卸载不存在的项 - **WHEN** install.json 中无对应记录 - **THEN** 系统提示"未找到安装记录",不执行删除 #### Scenario: 安装路径已被手动删除 - **WHEN** install.json 有记录但文件已不存在 - **THEN** 系统仅移除记录,不报错 --- ### Requirement: 用户可以更新已安装项 工具必须提供更新功能,重新从源仓库安装最新版本。 #### Scenario: 更新单个 skill - **WHEN** 用户执行 `skillmgr update skill --platform --global` - **THEN** 系统从源重新安装到原路径,更新 updated_at 字段 #### Scenario: 更新单个 command - **WHEN** 用户执行 `skillmgr update command --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、路径)