# app/utils/skill_registry.py from dataclasses import dataclass from pathlib import Path from typing import Dict, List, Optional import yaml @dataclass class Skill: id: str name: str description: str tags: List[str] max_rank: int = 1 class SkillRegistry: def __init__(self) -> None: self.by_id: Dict[str, Skill] = {} def load_file(self, path: Path) -> None: data = yaml.safe_load(path.read_text()) or [] for raw in data: skill = Skill(**raw) self.by_id[skill.id] = skill def load_dir(self, root: Path) -> None: for p in sorted(root.glob("*.y*ml")): self.load_file(p) def get(self, skill_id: str) -> Optional[Skill]: return self.by_id.get(skill_id)