use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Debug, Parser)]
#[command(
name = "skillpack",
bin_name = "skillpack",
version,
about = "Generate and verify the agent-distribution layer (Claude Code skill packs) for any OSS project."
)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
#[arg(long, global = true)]
pub verbose: bool,
#[arg(long, global = true)]
pub debug: bool,
}
#[derive(Debug, Subcommand)]
pub enum Commands {
Init {
#[arg(long, value_name = "DIR", default_value = ".")]
root: PathBuf,
#[arg(long)]
non_interactive: bool,
#[arg(long)]
accept_warnings: bool,
#[arg(long, value_name = "SPDX")]
license: Option<String>,
#[arg(long, value_enum, num_args = 1.., value_name = "ECOSYSTEM")]
target: Vec<Target>,
},
Verify {
#[arg(long, value_name = "DIR", default_value = ".")]
root: PathBuf,
#[arg(long, value_enum, default_value_t = crate::verify::OutputFormat::Human)]
format: crate::verify::OutputFormat,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, clap::ValueEnum, Default)]
pub enum Target {
#[default]
Claude,
Cursor,
Codex,
}