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:

  1. Read the new email
  2. Call email.classify → "needs_reply"
  3. Call reply.draft → drafts a reply
  4. 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.