Skip to content

Skills and Capability

A Capability is a tool bundle the LLM can call. Each cap_* module implements a feature (Lua, IM, files, …) and registers a Capability Group with claw_cap.

On every LLM request, claw_cap_tools_provider injects only tools from groups that are visible for the session—hidden groups do not exist in context. That avoids dumping unrelated tools.

A Skill is a Markdown file describing how to use a feature, workflows, or behavioral contracts. claw_skill injects via two context providers:

ProviderInjected contentAlways on
claw_skill_skills_list_providerAll Skill ids, summariesyes
claw_skill_active_skill_docs_providerFull .md for activated Skillsonly when active

Before activation the LLM only sees summaries; activation loads the full doc. Activation is per session and persisted on disk across reboots.

Capabilities expose tool signatures without prose guides; Skills carry guides without executable tools—they complement each other:

CapabilitySkill
NatureTools (functions)Knowledge (context)
CarrierC code (cap_*)Markdown files
RoleLets the LLM doTeaches the LLM how
LifecycleRegistered at boot; visibility per groupActivate/deactivate on demand; persisted

They link through cap_groups in skills_list.json:

{
  "id": "cap_lua_run",
  "cap_groups": ["cap_lua"]   // opening this Skill also opens the cap_lua tool group
}

Activating a Skill does two things:

  1. Injects the .md into the next request (knowledge).
  2. Makes the listed capability groups visible for the session (tools).

Deactivating removes both to keep context tight.