Skip to content

Skills

Installable capabilities — from the hub or hand-crafted. Lazy-loaded on demand.

Skills are on-demand capability packages. Drop a SKILL.md in .soma/skills/my-skill/ or ~/.agents/skills/. Only descriptions load at boot — full instructions load when the task matches. Use /skill:name to force-load. Compatible with the Agent Skills standard.

What Skills Are

A skill is a directory with a SKILL.md file that teaches Soma how to do something specific. Skills are progressive: only the name and description are always in context. The full instructions load on-demand when the agent detects a relevant task.

brave-search/
├── SKILL.md          ← instructions (required)
├── search.js         ← helper scripts
└── content.js

Locations

LocationScope
.soma/skills/Project — available in this project
~/.soma/agent/skills/Global Soma skills
~/.agents/skills/Cross-agent skills (shared with other agents)

Skills are also discovered from ancestor directories (up to git root), making monorepo setups work naturally.

Using Skills

Automatic

When a task matches a skill’s description, Soma loads and follows it automatically.

Manual

Force-load a skill with the /skill: command:

/skill:brave-search            # Load the skill
/skill:pdf-tools extract       # Load with arguments

Creating a Skill

1. Create the directory

mkdir -p .soma/skills/my-skill

2. Write SKILL.md

---
name: my-skill
description: What this skill does. Be specific — this determines when the agent loads it.
---

# My Skill

## Setup

Run once before first use:
\`\`\`bash
npm install
\`\`\`

## Usage

\`\`\`bash
./scripts/process.sh <input>
\`\`\`

3. Add helper files

Scripts, references, templates — whatever the skill needs. Use relative paths from the skill directory:

See [the API reference](references/api.md) for details.
Run `./scripts/build.sh` to compile.

SKILL.md Format

Required Frontmatter

FieldDescription
nameLowercase, hyphens, max 64 chars. Must match directory name.
descriptionWhat the skill does and when to use it. Max 1024 chars. Be specific.

Optional Frontmatter

FieldDescription
licenseLicense name or reference
compatibilityEnvironment requirements
disable-model-invocationWhen true, only loadable via /skill:name

Name Rules

  • Lowercase letters, numbers, hyphens only
  • No leading/trailing hyphens, no consecutive hyphens
  • Must match parent directory name

Description Best Practices

The description is what the agent uses to decide when to load the skill. Be specific:

# Good — agent knows exactly when to load this
description: Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents.

# Bad — too vague to match
description: Helps with PDFs.

Cross-Agent Compatibility

Skills follow the Agent Skills standard. Skills in ~/.agents/skills/ work across different coding agents. To use skills from other agents:

{
  "skills": [
    "~/.claude/skills",
    "~/.codex/skills"
  ]
}

Add this to ~/.soma/agent/settings.json.

Skill Repositories

  • Anthropic Skills — Document processing (docx, pdf, pptx, xlsx), web dev
  • Pi Skills — Web search, browser automation, Google APIs, transcription

Install via:

{
  "packages": ["pi-skills"]
}