pub struct LoadedSkill {
pub name: String,
pub description: String,
pub plugin: Option<String>,
pub base_dir: PathBuf,
pub source_path: PathBuf,
/* private fields */
}Expand description
A skill discovered during loading. Boot discovery holds ONLY bounded
metadata — the body stays on disk behind an immutable fingerprint and
is read, verified, substituted, and returned exclusively by
LoadedSkill::load_body at exact selection time.
Fields§
§name: String§description: String§plugin: Option<String>§base_dir: PathBuf§source_path: PathBufImplementations§
Source§impl LoadedSkill
impl LoadedSkill
Sourcepub fn load_body(&self) -> Result<String, &'static str>
pub fn load_body(&self) -> Result<String, &'static str>
Read, VERIFY, substitute, and return the body of this exact skill.
Called only at selection (load_skill tool or slash command) —
never during boot, search, or diagnostics.
Verification: reopen (regular file only, O_NOFOLLOW|O_NONBLOCK), fstat must equal the recorded fingerprint, the re-scanned frontmatter bytes must digest to the recorded SHA-256, and a second fstat AFTER the body read must still match — any drift fails closed with a static, path-free reason.
Trait Implementations§
Source§impl Clone for LoadedSkill
impl Clone for LoadedSkill
Source§impl Debug for LoadedSkill
Redacted Debug (Task 21 security review): bounded identity only — no
source paths, no base dir, no body, no fingerprint material — so a
stray debug/log rendering of boot metadata can never leak filesystem
layout or content.
impl Debug for LoadedSkill
Redacted Debug (Task 21 security review): bounded identity only — no source paths, no base dir, no body, no fingerprint material — so a stray debug/log rendering of boot metadata can never leak filesystem layout or content.
Auto Trait Implementations§
impl Freeze for LoadedSkill
impl RefUnwindSafe for LoadedSkill
impl Send for LoadedSkill
impl Sync for LoadedSkill
impl Unpin for LoadedSkill
impl UnsafeUnpin for LoadedSkill
impl UnwindSafe for LoadedSkill
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.