Files
crewAI/lib/crewai/tests/experimental/skills/test_models_version.py
Greyson LaLonde ed91100a0f refactor(skills): move Skills Repository to experimental + CREWAI_EXPERIMENTAL gate
Moves the registry/cache pieces of PR #5867 under crewai.experimental.skills
and the CLI commands under `crewai experimental skill`. The stable local-file
skills feature (loader, parser, validation, models) stays in crewai.skills.

Both entry points now require CREWAI_EXPERIMENTAL=1:
- resolve_registry_ref() calls require_experimental_skills() before resolving
- The `crewai experimental` CLI group raises UsageError when the flag is unset

SkillDownloadStarted/CompletedEvent move out of crewai.events.types.skill_events
into crewai.experimental.skills.events.

* refactor(skills): move 'version' off SkillFrontmatter into metadata

The skill version is now stored as `metadata.version` rather than a
top-level field on `SkillFrontmatter`. A `before` validator lifts any
top-level YAML `version:` into `metadata['version']` so existing SKILL.md
files keep parsing.
2026-05-28 09:38:10 -07:00

33 lines
1.0 KiB
Python

"""Tests for the 'version' metadata key on SkillFrontmatter.
Per the agentskills.io spec, `version` lives under `metadata`, not as a
top-level frontmatter field.
"""
from __future__ import annotations
from crewai.skills.models import SkillFrontmatter
class TestSkillFrontmatterVersion:
def test_no_metadata_by_default(self) -> None:
fm = SkillFrontmatter(name="my-skill", description="A skill.")
assert fm.metadata is None
def test_version_via_metadata(self) -> None:
fm = SkillFrontmatter(
name="my-skill",
description="A skill.",
metadata={"version": "1.2.3"},
)
assert fm.metadata is not None
assert fm.metadata["version"] == "1.2.3"
def test_metadata_accepts_other_keys(self) -> None:
fm = SkillFrontmatter(
name="my-skill",
description="A skill.",
metadata={"version": "1.0.0", "author": "acme"},
)
assert fm.metadata == {"version": "1.0.0", "author": "acme"}