feat: integrate open-skills library and cleanup clippy warnings
- Add open-skills auto-clone/pull/sync support in skills loader - Clone https://github.com/besoeasy/open-skills to ~/open-skills - Weekly sync via .zeroclaw-open-skills-sync marker - Env controls: ZEROCLAW_OPEN_SKILLS_ENABLED, ZEROCLAW_OPEN_SKILLS_DIR - Load open-skills markdown files before workspace skills - Track Skill.location for accurate prompt rendering - Update system prompt to render skill.location with fallback - Use actual file path when available - Maintain backward compatibility with workspace SKILL.md path - Fix clippy warnings across tests and supporting files - Readable timestamp literals - Remove underscore bindings in tests - Use struct update syntax for Config::default() patterns - Fix module inception, duplicate attributes, manual strip - Clean raw string hashes and empty string construction Resolves: #77
This commit is contained in:
commit
04a35144e8
11 changed files with 390 additions and 103 deletions
|
|
@ -123,10 +123,12 @@ pub fn build_system_prompt(
|
|||
" <description>{}</description>",
|
||||
skill.description
|
||||
);
|
||||
let location = workspace_dir
|
||||
.join("skills")
|
||||
.join(&skill.name)
|
||||
.join("SKILL.md");
|
||||
let location = skill.location.clone().unwrap_or_else(|| {
|
||||
workspace_dir
|
||||
.join("skills")
|
||||
.join(&skill.name)
|
||||
.join("SKILL.md")
|
||||
});
|
||||
let _ = writeln!(prompt, " <location>{}</location>", location.display());
|
||||
let _ = writeln!(prompt, " </skill>");
|
||||
}
|
||||
|
|
@ -825,6 +827,7 @@ mod tests {
|
|||
tags: vec![],
|
||||
tools: vec![],
|
||||
prompts: vec!["Long prompt content that should NOT appear in system prompt".into()],
|
||||
location: None,
|
||||
}];
|
||||
|
||||
let prompt = build_system_prompt(ws.path(), "model", &[], &skills);
|
||||
|
|
@ -937,8 +940,8 @@ mod tests {
|
|||
calls: Arc::clone(&calls),
|
||||
});
|
||||
|
||||
let (_tx, rx) = tokio::sync::mpsc::channel::<traits::ChannelMessage>(1);
|
||||
let handle = spawn_supervised_listener(channel, _tx, 1, 1);
|
||||
let (tx, rx) = tokio::sync::mpsc::channel::<traits::ChannelMessage>(1);
|
||||
let handle = spawn_supervised_listener(channel, tx, 1, 1);
|
||||
|
||||
tokio::time::sleep(Duration::from_millis(80)).await;
|
||||
drop(rx);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue