001package com.agentsflex.skill;
002
003import java.util.Map;
004import java.util.stream.Collectors;
005
006/**
007 * Represents a SKILL.md file with its location and parsed content.
008 */
009public class Skill {
010
011    private String basePath;
012    private Map<String, Object> frontMatter;
013    private String content;
014
015    public Skill() {
016    }
017
018    public Skill(String basePath, Map<String, Object> frontMatter, String content) {
019        this.basePath = basePath;
020        this.frontMatter = frontMatter;
021        this.content = content;
022    }
023
024    public String getBasePath() {
025        return basePath;
026    }
027
028    public void setBasePath(String basePath) {
029        this.basePath = basePath;
030    }
031
032    public Map<String, Object> getFrontMatter() {
033        return frontMatter;
034    }
035
036    public void setFrontMatter(Map<String, Object> frontMatter) {
037        this.frontMatter = frontMatter;
038    }
039
040    public String getContent() {
041        return content;
042    }
043
044    public void setContent(String content) {
045        this.content = content;
046    }
047
048    public String name() {
049        return this.frontMatter.get("name").toString();
050    }
051
052    public String toXml() {
053        String frontMatterXml = this.frontMatter
054            .entrySet()
055            .stream()
056            .map(e -> String.format("  <%s>%s</%s>", e.getKey(), e.getValue(), e.getKey()))
057            .collect(Collectors.joining("\n"));
058
059        return String.format("<skill>\n%s\n</skill>", frontMatterXml);
060    }
061}