Files
llama-agent-skills/openspec/changes/add-skill-support/specs/skill-registry/spec.md
T
Summer Shen 9578366e36 init repo
2026-03-31 09:14:32 +08:00

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() 获取