use thiserror::Error;
pub type Result<T> = std::result::Result<T, SkillFileError>;
#[derive(Debug, Error)]
pub enum SkillFileError {
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("YAML parsing error: {0}")]
Yaml(#[from] serde_yaml::Error),
#[error("Parse error: {0}")]
Parse(String),
#[error("Invalid path: {0}")]
InvalidPath(String),
#[error("Command execution error: {0}")]
CommandExecution(String),
#[error("Variable not found: {0}")]
VariableNotFound(String),
#[error("Skill not found: {0}")]
SkillNotFound(String),
#[error("Tool not allowed: {0}")]
ToolNotAllowed(String),
#[error("Approval required for skill: {0}")]
ApprovalRequired(String),
#[error("Regex error: {0}")]
Regex(#[from] regex::Error),
}