// Package skillpackage provides filesystem-backed Agent Skills layout (SKILL.md + package files) // for HTTP admin APIs. Runtime discovery and progressive loading for agents use Eino ADK skill middleware. package skillpackage // SkillManifest is parsed from SKILL.md front matter (https://agentskills.io/specification.md). type SkillManifest struct { Name string `yaml:"name"` Description string `yaml:"description"` License string `yaml:"license,omitempty"` Compatibility string `yaml:"compatibility,omitempty"` Metadata map[string]any `yaml:"metadata,omitempty"` AllowedTools string `yaml:"allowed-tools,omitempty"` } // SkillSummary is API metadata for one skill directory. type SkillSummary struct { ID string `json:"id"` DirName string `json:"dir_name"` Name string `json:"name"` Description string `json:"description"` Version string `json:"version"` Path string `json:"path"` Tags []string `json:"tags"` Triggers []string `json:"triggers,omitempty"` ScriptCount int `json:"script_count"` FileCount int `json:"file_count"` FileSize int64 `json:"file_size"` ModTime string `json:"mod_time"` Progressive bool `json:"progressive"` } // SkillScriptInfo describes a file under scripts/. type SkillScriptInfo struct { Name string `json:"name"` RelPath string `json:"rel_path"` Description string `json:"description,omitempty"` Size int64 `json:"size"` } // SkillSection is derived from ## headings in SKILL.md. type SkillSection struct { ID string `json:"id"` Title string `json:"title"` Heading string `json:"heading"` Level int `json:"level"` } // PackageFileInfo describes one file inside a package. type PackageFileInfo struct { Path string `json:"path"` Size int64 `json:"size"` IsDir bool `json:"is_dir,omitempty"` } // SkillView is a loaded package for admin / API. type SkillView struct { DirName string `json:"dir_name"` Name string `json:"name"` Description string `json:"description"` Content string `json:"content"` Path string `json:"path"` Version string `json:"version"` Tags []string `json:"tags"` Scripts []SkillScriptInfo `json:"scripts,omitempty"` Sections []SkillSection `json:"sections,omitempty"` PackageFiles []PackageFileInfo `json:"package_files,omitempty"` }