Skip to content

Skills System

Snowy edited this page Feb 15, 2026 · 1 revision

Skills System

Skills are discoverable instruction sets that enhance the agent's capabilities for specific tasks. They provide domain-specific knowledge, workflows, and best practices.

What Is a Skill?

A skill is a directory containing:

my-skill/
├── SKILL.md        # (Required) Instructions and content
└── skill.json      # (Optional) Metadata override

SKILL.md

The main content file. It can contain any Markdown — instructions, code templates, workflows, checklists, etc. The agent receives this content as context when the skill is loaded.

skill.json (Optional)

Override the auto-detected name and description:

{
  "name": "My Custom Skill",
  "description": "A skill for doing specific tasks"
}

If skill.json is not present, the name and description are parsed from SKILL.md:

  • Name: First # Heading line, or the humanized directory name
  • Description: First non-empty, non-heading paragraph (max 200 characters)

Skill Sources

Skills are discovered from three locations, in priority order:

1. SnCode Skills Directory (User-Installed)

Platform Path
Windows %APPDATA%/sncode/skills/
macOS ~/Library/Application Support/sncode/skills/
Linux ~/.config/sncode/skills/

Skills installed here have IDs prefixed with sncode: (e.g., sncode:my-skill).

2. External Tool Directories

SnCode also discovers skills from Claude Code and OpenCode directories:

Path Platform
~/.config/opencode/skills/ All
~/.agents/skills/ All
~/AppData/Roaming/opencode/skills/ Windows
~/.config/claude-code/skills/ Windows

3. Project-Local Skills

Skills placed in {projectRoot}/.sncode/skills/ are specific to that project. These have IDs prefixed with project:.

Skill Lifecycle

Discovery

When you open the Skills tab in Settings, SnCode scans all three source directories for valid skills (directories containing a SKILL.md file). Skills are deduplicated by ID.

Enabling/Disabling

Skills can be toggled per-project:

  • Enabled skills are pre-loaded into the agent's system prompt as <skill_content> XML blocks
  • Disabled skills are listed in the system prompt under <available_skills> so the agent can load them on demand

Dynamic Loading

The agent has access to a load_skill tool. When the agent encounters a task that matches an available (but not pre-loaded) skill, it can call load_skill to load the content mid-conversation.

Installing

To install a skill:

  1. Open Settings > Skills tab
  2. Click "Install Skill"
  3. Select a directory containing a SKILL.md file
  4. The skill is copied to SnCode's skills directory

Deleting

Only skills installed in SnCode's own directory (sncode: prefix) can be deleted. Project-local and external skills must be removed manually from their source directories.

Creating Your Own Skills

  1. Create a new directory (the name becomes part of the skill ID)
  2. Add a SKILL.md file with your instructions
  3. Optionally add a skill.json for custom name/description
  4. Place it in any of the skill source directories, or in your project's .sncode/skills/ folder

Example Skill

# Deploy Checklist

When deploying to production, always follow these steps:

1. Run the full test suite: `npm test`
2. Check for TypeScript errors: `npx tsc --noEmit`
3. Build the production bundle: `npm run build`
4. Verify the build output in `dist/`
5. Tag the release: `git tag v{version}`
6. Push with tags: `git push --tags`

Tips for Good Skills

  • Be specific and actionable
  • Include exact commands, file paths, and code patterns
  • Structure with clear headings and steps
  • Keep it focused on one domain or workflow
  • Use code blocks for commands and templates

Clone this wiki locally