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}