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

2.1 KiB
Raw Blame History

ADDED Requirements

Requirement: SKILL.md 文件解析

系统 SHALL 能够解析符合标准格式的 SKILL.md 文件,提取 YAML frontmatter 中的元数据和 Markdown 正文中的指令内容。

Scenario: 解析标准 SKILL.md 文件

  • WHEN 提供一个包含 YAML frontmatter--- 分隔)和 Markdown 正文的 SKILL.md 文件路径
  • THEN 系统返回一个 Skill 对象,包含 namestr)、descriptionstr)、metadatadict)和 bodystr)字段

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 包含以下字段:namestr,必填)、descriptionstr,必填)、bodystr,必填)、metadatadict,可选,默认空 dict)、source_pathPath | None,可选)

Scenario: Skill 实例不可变

  • WHEN 尝试修改已创建的 Skill 实例的 name 字段
  • THEN 系统抛出异常(frozen dataclass / immutable model

Requirement: Frontmatter 元数据提取

系统 SHALL 从 YAML frontmatter 中提取以下标准字段:namedescriptionlicensecompatibilitymetadata(包含 authorversiongeneratedBy)。

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 {}