use clap::{Subcommand, ValueEnum};
#[derive(Debug, clap::Args)]
pub struct SkillArgs {
#[command(subcommand)]
pub command: SkillCommand,
}
#[derive(Debug, Subcommand)]
pub enum SkillCommand {
List,
Show(ShowArgs),
Install(InstallArgs),
Uninstall(UninstallArgs),
}
#[derive(Debug, clap::Args)]
pub struct ShowArgs {
pub name: String,
}
#[derive(Debug, clap::Args)]
pub struct InstallArgs {
#[arg(long, value_enum, default_value_t = Agent::All)]
pub agent: Agent,
#[arg(long, value_enum, default_value_t = Scope::User)]
pub scope: Scope,
#[arg(long)]
pub apply: bool,
#[arg(long, requires = "apply")]
pub force: bool,
}
#[derive(Debug, clap::Args)]
pub struct UninstallArgs {
#[arg(long, value_enum, default_value_t = Agent::All)]
pub agent: Agent,
#[arg(long, value_enum, default_value_t = Scope::User)]
pub scope: Scope,
#[arg(long)]
pub apply: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum Agent {
Claude,
Codex,
All,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum Scope {
User,
}