From 766684615bd09b26372b966839532117d8e7ba6f Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Mon, 1 Jun 2026 14:05:16 -0600 Subject: [PATCH] feat: added CLI --skill flag for modifying skills easily --- src/cli/mod.rs | 13 +++++++++++++ src/main.rs | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 913d395..eb1f298 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -116,6 +116,12 @@ pub struct Cli { /// List all macros #[arg(long)] pub list_macros: bool, + /// List all installed skills + #[arg(long)] + pub list_skills: bool, + /// Open a skill in $EDITOR (creates with a scaffold if missing) + #[arg(long, value_name = "NAME")] + pub skill: Option, /// Input text #[arg(trailing_var_arg = true)] text: Vec, @@ -298,6 +304,13 @@ mod tests { assert!(parse(&["--list-agents"]).list_agents); assert!(parse(&["--list-rags"]).list_rags); assert!(parse(&["--list-macros"]).list_macros); + assert!(parse(&["--list-skills"]).list_skills); + } + + #[test] + fn parse_skill_flag_takes_name() { + assert_eq!(parse(&["--skill", "git-master"]).skill.as_deref(), Some("git-master")); + assert!(parse(&[]).skill.is_none()); } #[test] diff --git a/src/main.rs b/src/main.rs index f3a7f2f..2eb65e4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -74,6 +74,7 @@ async fn main() -> Result<()> { || cli.list_agents || cli.list_rags || cli.list_macros + || cli.list_skills || cli.list_sessions; let vault_flags = cli.add_secret.is_some() || cli.get_secret.is_some() @@ -191,6 +192,16 @@ async fn run( println!("{macros}"); return Ok(()); } + if cli.list_skills { + let skills = paths::list_skills().join("\n"); + println!("{skills}"); + return Ok(()); + } + if let Some(name) = &cli.skill { + let app = Arc::clone(&ctx.app.config); + ctx.upsert_skill(app.as_ref(), name)?; + return Ok(()); + } if cli.dry_run { update_app_config(&mut ctx, |app| app.dry_run = true);