"""Pydantic models for structured skill packages.""" from __future__ import annotations from pydantic import BaseModel, Field class SkillConfigOverrides(BaseModel): """Scoped config overrides applied while a skill is active.""" temperature: float | None = Field(default=None, description="Override sampling temperature") max_tokens: int | None = Field(default=None, description="Override max tokens") tools_enable: list[str] | None = Field( default=None, description="Whitelist — only these tools available when set" ) tools_disable: list[str] | None = Field( default=None, description="Blacklist — disable specific tools" ) class SkillManifest(BaseModel): """Parsed skill.yaml manifest for a skill package directory.""" name: str = Field(description="Unique skill identifier") description: str = Field(description="Human-readable skill description") version: str = Field(default="1.0", description="Skill version") triggers: list[str] = Field( default_factory=list, description="Slash commands that activate this skill" ) config_overrides: SkillConfigOverrides = Field( default_factory=SkillConfigOverrides, description="Scoped config overrides" ) chain: list[str] = Field( default_factory=list, description="Skill names to run first (dependencies)" ) prompts: list[str] = Field( default_factory=lambda: ["prompt.md"], description="Markdown prompt files to load, in order", )