Skill Basics
What Is a Skill?
A Skill is a structured AI instruction set designed to solve a specific problem. It's stored as a SKILL.md file containing your methodology, workflow logic, and prompts. Once installed, users trigger it via a slash command or by describing their need — the Skill drives the AI to complete the task following the logic you designed.
Skill File Structure
A Skill is a directory:
~/.clacky/skills/my-skill/
├── SKILL.md # Required: core instruction file
├── scripts/ # Optional: scripts (Ruby preferred)
├── references/ # Optional: reference docs (loaded on demand)
└── assets/ # Optional: templates, icons, static files
SKILL.md Format
Every SKILL.md consists of two parts: YAML frontmatter (metadata) + Markdown body (instructions).
---
name: my-skill
description: 'Solves X problem. Trigger when user mentions X, Y, or Z.'
disable-model-invocation: false
user-invocable: true
---
# My Skill
Instructions for the AI go here...
Frontmatter Fields
| Field | Description | Required |
|---|---|---|
name |
Skill identifier — lowercase letters, numbers, hyphens only (e.g. my-skill) |
Yes |
description |
The trigger mechanism: describe what it does + list trigger scenarios and keywords | Yes |
disable-model-invocation |
Always set to false (allows AI to trigger automatically) |
Yes |
user-invocable |
Always set to true (shows in the WebUI / command list) |
Yes |
argument-hint |
Parameter hint shown after the slash command, e.g. <file path> |
Optional |
allowed-tools |
Restrict which tools this Skill can use | Optional |
model |
Specify an AI model to use (leave blank for default) | Optional |
Key point:
descriptionis the trigger mechanism. The AI reads it to decide whether to invoke the Skill. Be specific — list keywords and scenarios.
Writing the description
description controls when the Skill gets triggered. Two rules:
- State clearly what the Skill does
- List trigger scenarios and keywords — err toward over-triggering, not under-triggering
# ❌ Too vague — will miss triggers
description: 'Helps with writing'
# ✅ Specific and accurate
description: 'Helps write and polish professional emails and business documents.
Use when user wants to draft an email, revise a report, improve tone,
or needs help with any writing task — even if they just say "help me write".'
Wrap the description value in single quotes to avoid YAML parse errors from colons or special characters.
Three-Level Loading
Skills use progressive loading to keep context usage efficient:
- Metadata (
name+description) — always in context, ~100 words - SKILL.md body — loaded when the Skill triggers; keep under 500 lines
- Bundled resources (
references/,scripts/) — loaded on demand, no size limit
When your SKILL.md approaches 500 lines, extract large reference content into references/ files and add pointers in the body for when to read them.
Skill Storage Locations
Clacky loads Skills from three locations, in priority order:
| Location | Path | Scope |
|---|---|---|
| Project-level | .clacky/skills/<name>/ |
Current project only |
| User-level | ~/.clacky/skills/<name>/ |
All sessions (recommended) |
| Built-in | Bundled with gem | Platform defaults, no install needed |
When you publish to OpenClacky, users install your Skills via your branded install link. Skills are distributed encrypted to ~/.clacky/skills/ on the user's machine.
What Makes a Great Skill
- Focused: Solves one specific problem, not a catch-all assistant
- Self-contained: Runs without requiring extra context from the user
- Expert-level: Encodes insights or methodology only you possess
- Easy to trigger: The
descriptionis specific enough that the AI reliably knows when to invoke it
Skill vs. Plain Prompts
| Plain Prompt | OpenClacky Skill | |
|---|---|---|
| Distribution | Manual copy-paste | One-click install |
| Encryption | Not supported | Auto-encrypted on upload |
| Monetization | Not supported | License-based billing |
| Version control | Manual | Platform built-in |
| Invocation | Manual paste | Slash command / AI auto-detect |