stynx_code_tui/dialogs/
skill_picker.rs1use crate::state::{AppState, DialogOption, SelectKind};
2
3pub fn open_skill_picker(state: &mut AppState, skills: &[(String, String)]) {
4 let options: Vec<DialogOption> = if skills.is_empty() {
5 vec![DialogOption::new("__empty__", "No skills available")
6 .with_description("Define skills under .claude/skills to populate this list.")]
7 } else {
8 skills
9 .iter()
10 .map(|(name, desc)| {
11 DialogOption::new(format!("skill:{name}"), format!("/{name}"))
12 .with_description(desc.clone())
13 .with_category("Skills")
14 })
15 .collect()
16 };
17 state.modal.open_select(
18 SelectKind::SkillPicker,
19 "Skills",
20 options,
21 None,
22 Some("↵ insert into input".to_string()),
23 );
24}