use clap::{Args, Subcommand, ValueEnum};
#[derive(Debug, Args)]
pub struct SkillArgs {
#[command(subcommand)]
pub action: SkillAction,
}
#[derive(Debug, Subcommand)]
pub enum SkillAction {
List,
Show {
name: String,
},
Install {
#[arg(long, value_enum, default_value_t = Agent::All)]
agent: Agent,
#[arg(long, value_enum, default_value_t = Scope::User)]
scope: Scope,
#[arg(long)]
apply: bool,
#[arg(long, requires = "apply")]
force: bool,
#[arg(long)]
json: bool,
},
Uninstall {
#[arg(long, value_enum, default_value_t = Agent::All)]
agent: Agent,
#[arg(long, value_enum, default_value_t = Scope::User)]
scope: Scope,
#[arg(long)]
apply: bool,
#[arg(long)]
json: 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,
}