Skills and Capability
Capability: tool layer
Section titled “Capability: tool layer”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.
Skills: knowledge layer
Section titled “Skills: knowledge layer”A Skill is a Markdown file describing how to use a feature, workflows, or behavioral contracts. claw_skill injects via two context providers:
| Provider | Injected content | Always on |
|---|---|---|
claw_skill_skills_list_provider | All Skill ids, summaries | yes |
claw_skill_active_skill_docs_provider | Full .md for activated Skills | only when active |
Before activation the LLM only sees summaries; activation loads the full doc. Activation is per session and persisted on disk across reboots.
Relationship and differences
Section titled “Relationship and differences”Capabilities expose tool signatures without prose guides; Skills carry guides without executable tools—they complement each other:
| Capability | Skill | |
|---|---|---|
| Nature | Tools (functions) | Knowledge (context) |
| Carrier | C code (cap_*) | Markdown files |
| Role | Lets the LLM do | Teaches the LLM how |
| Lifecycle | Registered at boot; visibility per group | Activate/deactivate on demand; persisted |
They link through cap_groups in skills_list.json:
Activating a Skill does two things:
- Injects the
.mdinto the next request (knowledge). - Makes the listed capability groups visible for the session (tools).
Deactivating removes both to keep context tight.