Skip to main content

SkillRegistry

Struct SkillRegistry 

Source
pub struct SkillRegistry { /* private fields */ }
Expand description

Skill registry for managing available skills

Provides skill registration, loading from directories, and lookup by name. Optionally validates skills before registration and filters disabled skills from the system prompt based on feedback scores.

Implementations§

Source§

impl SkillRegistry

Source

pub fn new() -> Self

Create a new empty skill registry

Source

pub fn with_builtins() -> Self

Create a registry with built-in skills

Source

pub fn set_validator(&self, validator: Arc<dyn SkillValidator>)

Set the skill validator (safety gate)

Source

pub fn set_scorer(&self, scorer: Arc<dyn SkillScorer>)

Set the skill scorer (feedback loop)

Source

pub fn scorer(&self) -> Option<Arc<dyn SkillScorer>>

Get the scorer (for external use, e.g., ManageSkillTool)

Source

pub fn register(&self, skill: Arc<Skill>) -> Result<(), SkillValidationError>

Register a skill with validation

If a validator is set, the skill must pass validation before registration. Returns an error if validation fails.

Source

pub fn register_unchecked(&self, skill: Arc<Skill>)

Register a skill without validation (for built-in skills)

Source

pub fn get(&self, name: &str) -> Option<Arc<Skill>>

Get a skill by name

Source

pub fn list(&self) -> Vec<String>

List all registered skill names

Source

pub fn all(&self) -> Vec<Arc<Skill>>

Get all registered skills

Source

pub fn load_from_dir(&self, dir: impl AsRef<Path>) -> Result<usize>

Load skills from a directory

Scans the directory for .md files and attempts to parse them as skills. Silently skips files that fail to parse.

Source

pub fn load_from_file(&self, path: impl AsRef<Path>) -> Result<Arc<Skill>>

Load a single skill from a file

Source

pub fn remove(&self, name: &str) -> Option<Arc<Skill>>

Remove a skill by name

Source

pub fn clear(&self)

Clear all skills

Source

pub fn len(&self) -> usize

Get the number of registered skills

Source

pub fn is_empty(&self) -> bool

Check if the registry is empty

Source

pub fn by_kind(&self, kind: SkillKind) -> Vec<Arc<Skill>>

Get all skills of a specific kind

Source

pub fn by_tag(&self, tag: &str) -> Vec<Arc<Skill>>

Get all skills with a specific tag

Source

pub fn personas(&self) -> Vec<Arc<Skill>>

Get all persona-kind skills

Personas are session-level system prompts bound at session creation. They are NOT injected into the global system prompt via to_system_prompt().

Source

pub fn to_system_prompt(&self) -> String

Generate system prompt content from all instruction skills

Concatenates the content of all instruction-type skills for injection into the system prompt. Skills disabled by the scorer are excluded. Persona-kind skills are excluded — they are bound per-session, not globally. Generate the system prompt fragment for this registry.

Only emits a skill directory (name + description) — NOT the full skill content. Full content is injected on-demand via match_skills when a user request matches.

Source

pub fn match_skills(&self, user_input: &str) -> String

Return the full content of skills relevant to the given user input.

Matches by checking if any skill name or tag appears in the input (case-insensitive). Returns an empty string if no skills match — caller should not inject anything.

Trait Implementations§

Source§

impl Default for SkillRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more