namespace Toak.Core.Skills; public static class SkillRegistry { public static readonly ISkill[] AllSkills = new ISkill[] { new TerminalSkill(), new TranslateSkill() }; public static ISkill? DetectSkill(string transcript, IEnumerable activeSkillNames) { var activeSkills = AllSkills.Where(s => activeSkillNames.Contains(s.Name, StringComparer.OrdinalIgnoreCase)).ToList(); string normalizedTranscript = transcript.Trim(); foreach (var skill in activeSkills) { foreach (var hotword in skill.Hotwords) { if (normalizedTranscript.StartsWith(hotword, StringComparison.OrdinalIgnoreCase)) { return skill; } } } return null; } }