mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-03 06:08:15 +00:00
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.
33 lines
1.0 KiB
Python
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"}
|