2.1 KiB
2.1 KiB
ADDED Requirements
Requirement: SKILL.md 文件解析
系统 SHALL 能够解析符合标准格式的 SKILL.md 文件,提取 YAML frontmatter 中的元数据和 Markdown 正文中的指令内容。
Scenario: 解析标准 SKILL.md 文件
- WHEN 提供一个包含 YAML frontmatter(
---分隔)和 Markdown 正文的 SKILL.md 文件路径 - THEN 系统返回一个 Skill 对象,包含
name(str)、description(str)、metadata(dict)和body(str)字段
Scenario: 解析缺少必填字段的 SKILL.md
- WHEN 提供的 SKILL.md 文件的 frontmatter 中缺少
name字段 - THEN 系统抛出
SkillLoadError异常,包含明确的错误描述
Scenario: 解析无 frontmatter 的文件
- WHEN 提供的文件不包含 YAML frontmatter(无
---分隔符) - THEN 系统抛出
SkillLoadError异常,提示文件格式不合法
Requirement: Skill 数据模型
系统 SHALL 提供一个 Skill 数据类(dataclass 或 Pydantic model),用于表示解析后的 SKILL 实例。
Scenario: Skill 数据模型包含所有必要字段
- WHEN 创建一个 Skill 实例
- THEN 该实例 MUST 包含以下字段:
name(str,必填)、description(str,必填)、body(str,必填)、metadata(dict,可选,默认空 dict)、source_path(Path | None,可选)
Scenario: Skill 实例不可变
- WHEN 尝试修改已创建的 Skill 实例的
name字段 - THEN 系统抛出异常(frozen dataclass / immutable model)
Requirement: Frontmatter 元数据提取
系统 SHALL 从 YAML frontmatter 中提取以下标准字段:name、description、license、compatibility、metadata(包含 author、version、generatedBy)。
Scenario: 提取完整的 metadata
- WHEN SKILL.md 的 frontmatter 包含
metadata: { author: "test", version: "1.0" } - THEN 解析结果的
metadata字段为{"author": "test", "version": "1.0"}
Scenario: metadata 缺失时使用默认值
- WHEN SKILL.md 的 frontmatter 不包含
metadata字段 - THEN 解析结果的
metadata字段为空 dict{}