## ADDED Requirements ### Requirement: 用户可以安装 skill 到全局目录 工具必须支持将 skill 安装到用户主目录下的平台配置目录(如 `~/.claude/skills/`)。 #### Scenario: 全局安装到 Claude Code - **WHEN** 用户执行 `skillmgr install skill --platform claude --global` - **THEN** 系统将 skill 复制到 `~/.claude/skills//` #### Scenario: 全局安装到 OpenCode - **WHEN** 用户执行 `skillmgr install skill --platform opencode --global` - **THEN** 系统将 skill 复制到 `~/.config/opencode/skills//` --- ### Requirement: 用户可以安装 skill 到项目目录 工具必须支持将 skill 安装到当前项目目录下的平台配置目录。 #### Scenario: 项目级安装到 Claude Code - **WHEN** 用户在项目目录执行 `skillmgr install skill --platform claude` - **THEN** 系统将 skill 复制到 `./claude/skills//` #### Scenario: 项目级安装到 OpenCode - **WHEN** 用户在项目目录执行 `skillmgr install skill --platform opencode` - **THEN** 系统将 skill 复制到 `./.opencode/skills//` --- ### Requirement: 系统必须在所有源仓库中查找 skill 工具必须在所有已配置的源仓库缓存中搜索指定的 skill。 #### Scenario: 在第一个仓库找到 - **WHEN** 第一个仓库包含目标 skill - **THEN** 系统使用该仓库的 skill 进行安装 #### Scenario: 在后续仓库找到 - **WHEN** 前面的仓库不包含目标 skill,但后续仓库包含 - **THEN** 系统使用找到的第一个匹配仓库 #### Scenario: 所有仓库都不包含 - **WHEN** 所有源仓库都不包含目标 skill - **THEN** 系统报错"skill '' not found in any repository" --- ### Requirement: 用户可以临时指定源仓库 工具必须支持通过 `--from` 参数临时指定源仓库 URL,不保存到配置文件。 #### Scenario: 使用临时仓库安装 - **WHEN** 用户执行 `skillmgr install skill --platform claude --global --from ` - **THEN** 系统从指定 URL 拉取仓库并安装,不修改 repository.json --- ### Requirement: 系统必须处理目录已存在的情况 工具必须在安装前检查目标目录是否已存在,并根据情况处理。 #### Scenario: install.json 有记录且目录存在 - **WHEN** 目标 skill 已通过 skillmgr 安装 - **THEN** 系统询问用户是否覆盖,默认为否 #### Scenario: install.json 无记录但目录存在 - **WHEN** 目标目录存在但不在 install.json 中 - **THEN** 系统询问用户是否覆盖该目录,默认为否 #### Scenario: 用户拒绝覆盖 - **WHEN** 用户选择不覆盖 - **THEN** 系统取消安装,不修改任何文件 --- ### Requirement: 系统必须记录安装操作 工具必须在成功安装后将记录写入 `~/.skillmgr/install.json`。 #### Scenario: 记录包含完整信息 - **WHEN** 安装成功完成 - **THEN** 系统在 install.json 中添加包含 type、name、platform、scope、install_path、installed_at、updated_at 的记录