pub struct SkillWriter { /* private fields */ }Expand description
Writes skills into a root’s .skills directory.
The destination is the directory load_skill_index already
discovers, so a skill written here is picked up by the next index load.
§Example
use adk_skill::{SkillDraft, SkillWriter, load_skill_index};
let root = tempfile::tempdir().unwrap();
let writer = SkillWriter::new(root.path());
writer.write(&SkillDraft::new("disk-triage", "Diagnose low disk space.")
.with_body("Check the largest directories first."))?;
let index = load_skill_index(root.path())?;
assert!(index.find_by_name("disk-triage").is_some());Implementations§
Source§impl SkillWriter
impl SkillWriter
Sourcepub fn new(root: impl Into<PathBuf>) -> Self
pub fn new(root: impl Into<PathBuf>) -> Self
Creates a writer targeting <root>/.skills.
Pass the same root given to load_skill_index.
Sourcepub fn skills_dir(&self) -> PathBuf
pub fn skills_dir(&self) -> PathBuf
The directory skills are written into.
Sourcepub fn path_for(&self, name: &str) -> SkillResult<PathBuf>
pub fn path_for(&self, name: &str) -> SkillResult<PathBuf>
The path a skill of this name occupies.
§Errors
Returns SkillError::Validation if the name is not a valid identifier.
Sourcepub fn write(&self, draft: &SkillDraft) -> SkillResult<PathBuf>
pub fn write(&self, draft: &SkillDraft) -> SkillResult<PathBuf>
Writes draft, replacing any existing skill of the same name, and returns its path.
The write goes to a temporary file in the same directory and is then renamed, so a crash mid-write cannot leave a half-written skill that fails to parse and breaks the whole index load. Missing directories are created.
§Errors
Returns SkillError::Validation if the draft is invalid, or an IO error if the write
fails.
Sourcepub fn remove(&self, name: &str) -> SkillResult<bool>
pub fn remove(&self, name: &str) -> SkillResult<bool>
Removes the skill of this name, returning whether a file was present.
§Errors
Returns SkillError::Validation if the name is invalid, or an IO error if removal fails
for a reason other than the file being absent.
Sourcepub fn exists(&self, name: &str) -> SkillResult<bool>
pub fn exists(&self, name: &str) -> SkillResult<bool>
Trait Implementations§
Source§impl Clone for SkillWriter
impl Clone for SkillWriter
Source§fn clone(&self) -> SkillWriter
fn clone(&self) -> SkillWriter
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more