What a skill actually is
A skill is a short instructional document, usually a markdown file with a YAML header, that an agent reads alongside its tool catalog. The MCP server tells the agent what tools exist; the skill tells it when and how to use them. For Lavendly, the skill captures four things:- The canonical call sequence. Probe capabilities → check budget → create the workflow → wire audio → render → poll. Skip steps and you waste money or produce bad output.
- The decision rules. When to use
mixvsnativeaudio, when to add captions, when to render single-shot vs multi-clip. - The idempotency discipline. Which calls cost money, which need keys, how to construct keys that survive retries.
- The taste. What “a good Lavendly video” looks like, pacing, voice tone, music mood, when subtitles help vs hurt.
How skills compose with the MCP
~/.claude/skills/, Cursor’s project rules,
your own SDK harness). The MCP is action-side, it actually moves
bits.
Ready-made skills
Storyteller
Narrated shorts from a one-line idea. Voice + music + captions.
Multi-clip
Consistent characters and palette across a sequence.
Cost-aware
Budget guardrails for autonomous loops.
Author your own
Write a custom skill for your use case.
Installing a skill
Skills are platform-specific. The same skill text gets loaded in slightly different ways:- Claude Code
- Claude Desktop
- Cursor
- Custom runtime
~/.claude/skills/lavendly/. Claude
Code auto-loads them in any project that has the Lavendly MCP
server registered.Skill precedence, when skills disagree
You can load more than one skill at a time. When their rules conflict, Lavendly uses a deterministic resolution order:`priority: high` wins over `priority: normal`
Skills declare priority in their YAML frontmatter.
cost-aware
ships as priority: high because its budget rules must override
domain choices that would otherwise overspend. Domain skills
(storyteller, multi-clip) default to priority: normal.Within the same priority, later wins over earlier
Skills are read in the order they’re loaded. If two
priority: normal skills both pick a music mood, the later
skill’s rule wins. Order your loader explicitly.cost-aware first (its budget rules apply everywhere),
then the domain skill that fits the current task. The resulting prompt
looks like:
Conflict resolution at a glance
| Disagreement | Winner |
|---|---|
cost-aware: refuse render if available < 20. storyteller: render anyway. | cost-aware (high priority) |
multi-clip: cap at 30 s. User brief asks for 60 s. | multi-clip (skill rule beats user nicety) |
| Two normal-priority skills pick different music moods | Last loaded wins |
| Skill says “use tool X.” MCP catalog doesn’t include X. | Tool catalog (skill cannot invent tools) |
What’s not in a skill
A skill is not:- A second tool catalog. The MCP is the only source of truth for what tools exist and what they accept.
- A cache of API responses. Tool calls always hit the live API.
- A place for your API key. Keys come from the MCP server’s env.