A packaging envelope for skills and agent definitions.
A Kit bundles related skills and agents loaded from a single source (directory, database, API). Backends return Kits; the system unpacks them to register skills and discover agent definitions.
use SkillKit.Kit
When a module does use SkillKit.Kit, it becomes both a
SkillKit.Kit.Provider (can load skills from skills/*/SKILL.md) and a
SkillKit.Tool (can execute them). All skill and agent files are read
and parsed at compile time — no runtime filesystem access is needed.
The kit name is inferred from the module's last segment, downcased and
underscored. Override with name: "custom_name".
Options:
:path— the kit root directory. Skills are loaded from<path>/skills/andAGENT.mdfrom<path>/AGENT.md. Defaults to the directory containing the module's source file.:name— override the inferred kit name.
The macro generates default implementations for definition/0, resume/3,
load_kits/1, list_kits/1, get_kit/2, and agent_definition/0. All are
overridable. The using module must define execute/1.
agent_definition/0 returns the parsed %SkillKit.Agent{} from
the kit's AGENT.md, or nil if no agent file exists.
Summary
Types
@type t() :: %SkillKit.Kit{ agent: SkillKit.Agent.t() | nil, metadata: map(), name: String.t(), skills: [SkillKit.Skill.t()], subagents: [SkillKit.Agent.t()] }