Automation
Skills
A Skill is a focused, reusable AI capability. "Classify this email." "Extract companies from this text." "Draft a reply in my voice." "Score this lead."
When River AI needs to do something specific during a larger task, it invokes a Skill to handle that subtask, then continues with the structured result.
Skills are the specialized moves in the AI's repertoire — individually small, collectively powerful.
What makes a Skill different#
| Skill | Agent | Workflow | |
|---|---|---|---|
| Scope | Single, focused subtask | A whole repeatable role | A whole repeatable process |
| Runs as | A single LLM call | A multi-step Job | A graph of nodes (Job) |
| Output | A structured result | Entities, drafts, decisions | Whatever the graph produces |
| Trigger | Called by other code | Triggers, schedules, manual | Triggers, schedules, manual |
| When to use | A reusable AI move | A persistent worker | A deterministic process |
A Skill is the building block. Agents and Workflows compose Skills to do bigger things.
Examples#
A few Skills River ships with:
| Skill | Returns |
|---|---|
email.classify |
A label and confidence score for an email |
entity.extract |
A structured object from unstructured text |
summarize.short |
A 3-sentence summary of any content |
reply.draft |
A reply draft in the user's voice |
pdf.extract_fields |
Named fields from a PDF (contract, invoice, statement) |
lead.score |
A 0–100 score with reasoning |
Apps register their own Skills too. The Mail app has Skills for triage and reply. The PDF app has Skills for extraction and citation. The Contacts app has Skills for relationship scoring.
When to build your own#
Build a Skill when:
- You catch yourself writing the same prompt fragment in multiple Agents
- A task always returns the same shape (a label, a score, a list of names)
- You want fast, consistent behavior across many runs
Skills are versioned, named, and tested. Once you've got a great lead.score Skill, every Agent that needs to score a lead uses the same one — no copy-pasted prompts.
How Skills are used inside Agents#
When an Agent runs, it can call Skills as tools. For example, an Inbox Triage Agent might:
- Read the new email
- Call
email.classify→ "needs_reply" - Call
reply.draft→ drafts a reply - Save the draft as an entity
Each Skill call is a single LLM round-trip. The Agent stitches them together. That's why Skills are fast: they don't need the full agent loop.
Tips#
- Keep Skills narrow. A Skill that does five things is really five Skills.
- Always return structured output (a JSON schema is best). That's what makes them composable.
- Look at your Agents — patterns that show up in three or more are candidates to extract into Skills.