Skip to main content

stynx_code_tui/dialogs/
skill_picker.rs

1use 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}