use clap::{Args, Subcommand, ValueEnum};
#[derive(Subcommand, Debug, Clone)]
pub enum SkillAction {
Status(SkillTargetArgs),
Install(SkillWriteArgs),
Uninstall(SkillWriteArgs),
}
#[derive(Args, Debug, Clone)]
pub struct SkillTargetArgs {
#[arg(long = "agent", value_enum, default_value_t = SkillAgentSelection::All)]
pub agent: SkillAgentSelection,
#[arg(long = "scope", value_enum, default_value_t = SkillScope::Personal)]
pub scope: SkillScope,
#[arg(long = "skills-dir")]
pub skills_dir: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct SkillWriteArgs {
#[command(flatten)]
pub target: SkillTargetArgs,
#[arg(long)]
pub force: bool,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, ValueEnum)]
pub enum SkillAgentSelection {
All,
Codex,
#[value(name = "claude-code", alias = "claude")]
ClaudeCode,
Opencode,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, ValueEnum)]
pub enum SkillScope {
Personal,
Project,
}