diff options
Diffstat (limited to 'src/Agent.App/Configuration/SkillLoader.cs')
| -rw-r--r-- | src/Agent.App/Configuration/SkillLoader.cs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/Agent.App/Configuration/SkillLoader.cs b/src/Agent.App/Configuration/SkillLoader.cs new file mode 100644 index 0000000..6923c12 --- /dev/null +++ b/src/Agent.App/Configuration/SkillLoader.cs @@ -0,0 +1,24 @@ +namespace Agent.App.Configuration; + +public static class SkillLoader +{ + public static string[] Load(string directory) + { + var paths = new List<string>(); + paths.AddRange(Directory.EnumerateFiles(directory, "*.md", SearchOption.TopDirectoryOnly)); + + foreach (string child in Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly)) + { + var info = new DirectoryInfo(child); + if ((info.Attributes & FileAttributes.ReparsePoint) != 0) continue; + string standardSkill = Path.Combine(info.FullName, "SKILL.md"); + if (File.Exists(standardSkill)) paths.Add(standardSkill); + } + + return paths + .Distinct(StringComparer.OrdinalIgnoreCase) + .Order(StringComparer.OrdinalIgnoreCase) + .Select(File.ReadAllText) + .ToArray(); + } +} |
