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
44
45
46
47
48
49
50
51
52
53
54
55
56
//! In-memory skill plus the three LLM-facing tools that drive
//! progressive disclosure.
//!
//! ## Skills
//!
//! - [`InMemorySkill`] — struct holding name, description, version,
//! instructions, and a resource map. Build via
//! [`InMemorySkillBuilder`].
//!
//! Filesystem-backed skills (Anthropic Claude Skills `SKILL.md`
//! layout) live in the `entelix-tools-coding` companion crate
//! because their IO routes through `Sandbox` and they're a
//! coding-agent-vertical concern (invariant 9 boundary).
//!
//! ## LLM-facing tools
//!
//! - [`ListSkillsTool`] — argument-less listing of registered skills
//! (T1 metadata).
//! - [`ActivateSkillTool`] — load a skill's instructions and resource
//! menu (T1 → T2).
//! - [`ReadSkillResourceTool`] — fetch one resource by key (T2 → T3).
//! Binary resources surface as metadata only (`mime_type`,
//! `size_bytes`, `sha256`); the bytes are accessible via the
//! `SkillRegistry` API for out-of-band host-application use.
use Arc;
use Result;
use SkillRegistry;
use ToolRegistry;
pub use ;
pub use ;
/// Register the three LLM-facing skill tools (`list_skills`,
/// `activate_skill`, `read_skill_resource`) into a `ToolRegistry`,
/// each backed by the supplied `SkillRegistry`.
///
/// Recipes that accept both a `ToolRegistry` and a `SkillRegistry`
/// call this helper to surface the skills to the model — the agent
/// runtime itself does not auto-wire ( §"Sub-agent
/// filtering"; the per-recipe call is the explicit opt-in).
///
/// Returns `Error::Config` from the underlying `ToolRegistry::register`
/// if any of the three names already collides — recipes typically
/// build a fresh registry, so the collision path indicates a
/// programmer error.