use serde::{Deserialize, Serialize};
#[derive(Debug, Clone)]
pub struct Skill {
pub name: String,
pub description: String,
pub path: String,
pub source: String,
pub metadata: SkillMetadata,
pub content: String,
}
#[derive(Debug, Clone)]
pub struct SkillInfo {
pub name: String,
pub path: String,
pub source: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct SkillMetadata {
pub name: String,
pub description: String,
pub homepage: Option<String>,
pub metadata: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ZeptoMetadata {
pub emoji: Option<String>,
pub requires: SkillRequirements,
pub install: Vec<InstallOption>,
pub always: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct SkillRequirements {
pub bins: Vec<String>,
pub env: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InstallOption {
pub id: String,
pub kind: String,
pub formula: Option<String>,
pub package: Option<String>,
#[serde(default)]
pub bins: Vec<String>,
pub label: String,
}