Skip to main content

Skills

A skill is a named, reusable competency an agent can call for a narrow task. A tool does one mechanical thing. A skill does one cognitive thing.

Skills are the right unit when you want a reusable agent behavior without creating a whole new agent.

In This Section​

When to reach for a skill​

  • You keep repeating the same prompt pattern across agents.
  • One task recurs across projects and needs consistent behavior.
  • You want agents composed from named competencies instead of one large prompt.
  • You want something lighter than a subagent, but richer than a tool.

Consuming from an agent​

Agents call skills through the @codebolt/codeboltjs capability module:

import codebolt from '@codebolt/codeboltjs';

// Start a skill by name
const response = await codebolt.capability.startSkill("refactor-to-pattern", {
file: "src/handler.ts",
pattern: "adapter",
});

// response.success — whether execution succeeded
// response.result — the skill's output
// response.executionId — unique ID for tracking

Other available methods:

// List all skills
const skills = await codebolt.capability.listSkills();

// Start any capability by type
const res = await codebolt.capability.startCapability(
"refactor-to-pattern", // name
"skill", // type
{ file: "src/handler.ts", pattern: "adapter" }, // params
30000 // timeout in ms (optional)
);

// Check execution status
const status = await codebolt.capability.getExecutionStatus(res.executionId);

// Stop a running capability
await codebolt.capability.stopCapability(res.executionId);

Skill vs. tool vs. subagent​

AxisToolSkillSubagent
GranularityAtomic operationCognitive taskFull task
LLM involvedNoMaybeYes
Own reasoning loopNoNo unless implemented that wayYes
CostLowLow-moderateHigh

When in doubt, start with a skill. Promote to a subagent only when separate reasoning state is worth the cost.

How skills are loaded​

Codebolt discovers skills automatically from the filesystem at multiple locations, checked in priority order (highest priority wins when names collide):

PriorityLocationScope
1 (highest)<project>/.codebolt/capabilities/skill/Project
2~/.codebolt/capabilities/skill/Global (all projects)
3 (lowest){appRoot}/.codebolt/capabilities/skill/Built-in

Additionally, skills are discovered from these special directories (added if no name conflict exists):

  • <project>/.claude/skills/ — uses SKILL.md format
  • <project>/.agents/skills/ — uses SKILL.md format
  • ~/.gemini/antigravity/skills/ — uses SKILL.md format

Resolution rules​

  • Skills are keyed by type:name. A project-level skill with the same name replaces a global one.
  • The capability registry is lazy-initialized on first API call, then can be refreshed on demand via POST /capability/refresh.
  • Invalid skills (missing directory, unparseable config) are logged as warnings and excluded.

Configuration formats​

Skills support two configuration formats depending on where they live:

  • capability.yaml — full config with inputs, outputs, author, tags. Used in .codebolt/capabilities/ paths.
  • SKILL.md — YAML frontmatter with optional markdown body. Used in .claude/skills/ and .agents/skills/ paths.

See Creating a skill for details on both formats.

See also​