1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use HashMap;
/// A skill registered for retrieval — the on-demand analog of a [`crate::Tool`].
///
/// `name`, the effective searchable description, and `tags` drive ranking.
/// The description component defaults to [`Self::description`] and can be
/// replaced by [`Self::experimental_searchable_description`]. `tags` are author-declared
/// labels and task phrases ("frontend", "login form") folded into the BM25
/// text so a terse intent prompt matches the skill. `tools` are the ids of tools the body's
/// instructions call — an explicit dependency edge, **not** indexed;
/// `search_capabilities` pulls them into its tools bucket so the agent gets a
/// skill and the tools it needs in one turn instead of a second search.
/// `metadata` is free-form, non-indexed context for higher layers — e.g.
/// `{"stacks": ["react"]}` for the push-path ranker to boost/filter by project
/// context, deliberately *not* matched as query terms. `body` is the dispatch
/// payload and is also not indexed, so a long body never skews relevance.