Skip to main content

SkillTriggersHook

Struct SkillTriggersHook 

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

On before_ingest, automatically activate relevant skills based on the user prompt. When a match is found, insert a L1 hint (e.g. “Detected skill X relevance; use the skill tool if needed”) before the prompt, rather than injecting the full skill body. This follows progressive disclosure: the model decides whether to actually load the skill.

Trigger conditions (any one triggers):

  • keyword: any of the skill’s triggers.keywords is a case-insensitive substring of the prompt text.
  • glob: any “path-like token” extracted from the prompt text matches one of the skill’s triggers.globs.

Skills with always trigger are already injected in full at session start, so they are skipped here to avoid duplicate hints.

Like SkillManifestHook, this hook holds a skill index and is registered via a closure that captures the index (see defect_cli::hooks).

Implementations§

Source§

impl SkillTriggersHook

Source

pub fn new(skills: Arc<BTreeMap<String, SkillEntry>>) -> Self

Constructs from the already-loaded skill index. The caller must not register this hook when skills is empty.

Trait Implementations§

Source§

impl StepHandler for SkillTriggersHook

Source§

fn handle_step<'a>( &'a self, envelope: &'a Value, _ctx: HookCtx<'a>, ) -> BoxFuture<'a, Result<Option<Value>, HookError>>

In the before_ingest step, read the prompt text and, for each matched skill, prepend an L1 hint (a prepend_input verdict). Return None if no skill matches.

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> 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> IntoMaybeUndefined<T> for T

Source§

impl<T> IntoOption<T> for T

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