summaryrefslogtreecommitdiff
path: root/src/Agent.App/Configuration
diff options
context:
space:
mode:
Diffstat (limited to 'src/Agent.App/Configuration')
-rw-r--r--src/Agent.App/Configuration/SkillLoader.cs24
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();
+ }
+}