Skip to content

Skills

Skills are reusable instruction packs. They are different from tools, agents, and project memory:

SurfaceBest forLoaded when
AgentRole and authority for the whole turnYou select the agent
SkillReusable workflow guidance for a specific kind of taskYou mention it or the agent discovers it
Project memorySmall durable facts about this workspaceRuntime injects saved memory
ToolRuntime action such as read, patch, search, or MCP callThe model calls it and runtime approves it

Use skills when a workflow is useful across projects but should not apply to every turn.

Global skills:

~/.config/kodacode/skills/<skill-id>/SKILL.md

Project skills:

<workspace>/.kodacode/skills/<skill-id>/SKILL.md

Each skill directory needs a SKILL.md file. Keep the description short and specific, because KodaCode lists available skill metadata in the prompt without loading every full skill body.

---
name: migration
description: Plan and implement small database migrations with tests.
---
Use this skill when a task changes schema, migrations, seed data, or persisted
records.
Workflow:
1. Inspect the existing migration framework and test setup.
2. Identify backward-compatibility constraints before editing.
3. Add the migration and the smallest useful test coverage.
4. Run the relevant migration or persistence tests before finishing.

Then mention it in the composer:

$migration add a nullable billing_status column and update the tests

Or use it from the one-shot CLI path:

Terminal window
kodacode --skill migration "add a nullable billing_status column and update the tests"

Use either form:

  • $migration
  • ${migration}

The mention selects that skill for the turn. This is the most predictable way to use skills because the full skill content is loaded only when requested.

KodaCode also has search_skills and skill tools. Agents can use those tools to discover and load a relevant skill during a turn.

That is useful when you have a large catalog and do not know the exact skill name. It is less predictable than an explicit $skill mention because it gives the agent discretion to search and load guidance.

Good skills are compact and operational:

  • one clear trigger
  • a short workflow
  • repo-agnostic guidance
  • references to scripts or templates when needed
  • explicit stop conditions for risky work

Avoid skills that duplicate your always-on repo instructions. Put permanent project policy in AGENTS.md instead.

Use a project-local skill for a release checklist:

$release prepare the 1.8.0 release notes from the current branch

Use a global skill for a repeated debugging workflow:

$perf-debug investigate why the dashboard query regressed after this branch

Let the agent discover a skill when you only know the domain:

Find the right skill for accessibility review, then audit the changed React components.

Available skill metadata is cheap compared with loading full skill content. Explicit $skill mentions load the full SKILL.md for that turn, so long skills still have input-token cost.

Keep large reference material in normal files inside the skill directory and point to it from SKILL.md. The agent can read those files only when they are actually needed.