abu_agent/toolbox/tools/
skill.rs1use 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}