skillinstaller 0.1.0

Install one .skill payload across multiple AI coding providers with deterministic project/user targets.
Documentation
use std::path::PathBuf;

use thiserror::Error;

pub type Result<T> = std::result::Result<T, InstallerError>;

#[derive(Debug, Error)]
pub enum InstallerError {
    #[error("invalid source: expected .skill/SKILL.md in {path}")]
    InvalidSource { path: PathBuf },

    #[error("invalid frontmatter: {message}")]
    InvalidFrontmatter { message: String },

    #[error("missing required frontmatter field: name")]
    MissingName,

    #[error("invalid skill name: {name}")]
    InvalidName { name: String },

    #[error("project scope requires --project-root")]
    ProjectRootRequired,

    #[error("skill already installed at {path}; use --force to overwrite")]
    AlreadyExists { path: PathBuf },

    #[error("unsupported provider: {provider}")]
    UnsupportedProvider { provider: String },

    #[error("installation cancelled by user")]
    PromptCancelled,

    #[error("interactive prompt error: {message}")]
    PromptError { message: String },

    #[error("io error at {path}: {message}")]
    IoError { path: PathBuf, message: String },
}