2.4 KiB
2.4 KiB
ADDED Requirements
Requirement: SKILL 目录扫描
系统 SHALL 能够扫描指定目录,自动发现并加载所有 SKILL.md 文件。
Scenario: 扫描包含多个 SKILL 的目录
- WHEN 指定一个包含 3 个子目录、每个子目录有一个 SKILL.md 文件的目录路径
- THEN 系统返回 3 个 Skill 实例的列表
Scenario: 扫描空目录
- WHEN 指定一个不包含任何 SKILL.md 文件的目录路径
- THEN 系统返回空列表,不抛出异常
Scenario: 扫描不存在的目录
- WHEN 指定一个不存在的目录路径
- THEN 系统抛出
FileNotFoundError异常
Scenario: 跳过无效的 SKILL 文件
- WHEN 目录中包含 2 个有效 SKILL.md 和 1 个格式错误的 SKILL.md
- THEN 系统返回 2 个有效 Skill 实例,并通过日志记录无效文件的错误信息
Requirement: SKILL 注册表
系统 SHALL 提供一个 SkillRegistry 类,用于管理已注册的 SKILL 实例。
Scenario: 注册 SKILL
- WHEN 调用
registry.register(skill)注册一个 Skill 实例 - THEN 该 Skill 被存储在注册表中,可通过
registry.get(skill.name)获取
Scenario: 注册同名 SKILL 覆盖
- WHEN 先后注册两个
name相同但body不同的 Skill - THEN 注册表中保留后注册的 Skill,前一个被覆盖
Scenario: 注销 SKILL
- WHEN 调用
registry.unregister("skill-name") - THEN 该 SKILL 从注册表中移除,
registry.get("skill-name")返回 None
Scenario: 注销不存在的 SKILL
- WHEN 调用
registry.unregister("nonexistent") - THEN 不抛出异常,静默忽略
Requirement: 列出所有已注册 SKILL
系统 SHALL 提供查询所有已注册 SKILL 的能力。
Scenario: 列出所有 SKILL
- WHEN 注册了 3 个 SKILL 后调用
registry.list_skills() - THEN 返回包含 3 个 Skill 实例的列表
Scenario: 空注册表列出 SKILL
- WHEN 未注册任何 SKILL 时调用
registry.list_skills() - THEN 返回空列表
Requirement: 从目录批量加载到注册表
系统 SHALL 提供一个便捷方法,将目录扫描和注册合并为一步操作。
Scenario: 从目录加载所有 SKILL
- WHEN 调用
registry.load_from_directory(path)传入包含 3 个有效 SKILL.md 的目录 - THEN 注册表中包含 3 个 SKILL,可通过
registry.list_skills()获取