Skip to main content

abu_agent/toolbox/tools/
skill.rs

1use std::sync::Arc;
2use abu_skill::SkillLoader;
3
4pub struct SkillTool {
5    pub skill_loader: Arc<SkillLoader>,
6}
7
8impl SkillTool {
9    pub fn new(skill_loader: Arc<SkillLoader>) -> Self {
10        Self { skill_loader }
11    }
12}
13
14#[abu_macros::tool(
15    struct_name = SkillTool,
16    description = "Load specialized skill by name.",
17    name = "load_skill",
18)]
19pub fn load(&self, name: &str) -> String {
20    self.skill_loader.get_content(name)
21        .map(|c| c.to_string())
22        .unwrap_or(format!("no skill {name}"))
23}