> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Save a workflow as a skill

> Turn something Ari did well once into a skill your whole team can reuse, so it runs the same way every time.

export const AiPrompt = ({children, label = "Prompt"}) => {
  const body = useRef(null);
  const [copied, setCopied] = useState(false);
  const copy = () => {
    const text = body.current ? body.current.innerText.trim() : "";
    if (!navigator.clipboard) return;
    navigator.clipboard.writeText(text).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 1600);
    }).catch(() => {});
  };
  return <div className="sf-prompt not-prose">
      <div className="sf-prompt-head">
        <span className="sf-prompt-label">
          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
            <path d="M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9z" />
          </svg>
          {label}
        </span>
        <button type="button" className="sf-prompt-copy" onClick={copy} aria-label={copied ? "Copied" : "Copy prompt"}>
          {copied ? <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
              <path d="M20 6L9 17l-5-5" />
            </svg> : <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
              <rect x="9" y="9" width="12" height="12" rx="2" />
              <path d="M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1" />
            </svg>}
          <span>{copied ? "Copied" : "Copy"}</span>
        </button>
      </div>
      <div className="sf-prompt-body" ref={body}>
        {children}
      </div>
    </div>;
};

A skill is a saved set of steps Ari follows when your request matches. Save a workflow once, and
anyone on your team gets the same result every time they ask.

"Monday pipeline review", "pre-call brief for enterprise accounts" and "log a referral the way we
do it" are all good skills. Each one is plain text: a name, a one-line description, and the steps.

## Four ways to make a skill

| You want to | Do this |
| - | - |
| Save something Ari just did for you | Say "save this as a skill" in the chat. |
| Build a skill for a workflow you can describe | Ask Ari to help you, or choose **New skill** › **Create with agent**. |
| Write it yourself | Choose **New skill** › **Create manually**. |
| Reuse one someone else wrote | [Import it](/ari/import-skills) from GitHub or a file. |

### Save what you just did

You've just had Ari build a great pre-call brief. Keep it:

<AiPrompt>
  Save this as a skill called "Pre-call brief". Use it whenever I ask to prep for a call.
</AiPrompt>

### Build one with Ari

<AiPrompt>
  Help me create a skill for our Monday pipeline review. It should list open deals by stage, with each deal's calls from the last week.
</AiPrompt>

## What Ari asks while it builds a skill

Ari works out most of the skill from your chat, then asks only what's missing.

<Steps>
  <Step title="It fills in what it can">
    From your request and the chat so far, Ari works out when the skill should be used, what
    changes each time you run it, and what a good result looks like.
  </Step>

  <Step title="It asks a few short questions">
    At most three or four, in one go, each with a suggested answer. It always checks when to use
    the skill and what it should deliver.
  </Step>

  <Step title="It shows you a preview">
    You see the name, the description and every step. Nothing is saved until you choose
    **Yes, create it**.
  </Step>

  <Step title="It offers a test run">
    Ari offers to try the skill on a real example right away. If it's a job you do every week, it
    also offers to run it on a schedule.
  </Step>
</Steps>

## How Ari uses a skill

Ari sees the name and description of every skill your team has turned on. When your request
matches a description, Ari opens that skill and follows its steps. It still asks before it changes
anything.

You can also run a skill by name:

<AiPrompt>
  Run the Monday pipeline review.
</AiPrompt>

The description is what Ari matches on, so write it the way people actually ask.

## Write a skill that works

A skill is instructions for a future chat that knows nothing about today. Write it so that chat gets
it right the first time.

* **Name:** say what it does. "Monday pipeline review", not "HubSpot query v2".
* **Description:** say when to use it and what it gives back, in the words your team uses.
* **Steps:** use this shape.

```markdown Skill template theme={null}
## Goal
One or two sentences: what a good run delivers.

## Inputs
What to ask for (or work out) each time, with a default.
- time range: default last 7 days

## Steps
Numbered, in order. Say what to do when something is missing
("if no deals match, say so and stop").

## Output
Exactly what to deliver: format, columns, links.

## Guardrails
What this skill must never do, and when to stop and ask.
```

### Example

```markdown Monday pipeline review theme={null}
---
name: Monday pipeline review
description: Weekly table of open HubSpot deals by stage, with each
  deal's dials and connects from the last 7 days. Use for "pipeline
  review", "Monday check-in" or "what moved this week".
---

## Goal
A table of open deals with stage, amount, owner, days in stage, and
dials and connects to the deal's contacts in the last 7 days.

## Inputs
- time range: default last 7 days
- owner: default the whole team

## Steps
1. Get open deals from HubSpot with stage, amount, owner and the
   date the stage last changed.
2. For each deal, get its contacts.
3. Count dials and connects to those contacts in the time range.
4. If there are no open deals, say so and stop.

## Output
One table sorted by amount, largest first. Columns: Deal, Stage,
Amount, Owner, Days in stage, Dials, Connects. Link each deal.
End with the deals that had zero dials this week.

## Guardrails
Read only. Never change a deal stage or amount.
```

### Check before you save

<Check>The description uses the words your team would actually say.</Check>
<Check>Every step uses an app your team has connected. A skill that says "check Salesloft" fails on a team without Salesloft.</Check>
<Check>Anything that changes from run to run is an input, not a fixed value.</Check>
<Check>The output says exactly what to deliver.</Check>
<Check>Anything the skill must never do is under guardrails.</Check>

## Manage your team's skills

<Steps>
  <Step title="Open the Ari panel">
    Click the **Ari** button in the corner of any page.
  </Step>

  <Step title="Switch to Skills">
    Open the views menu at the top of the panel and choose **Skills**.
  </Step>

  <Step title="Add, edit or turn off">
    Use **New skill** to add one. Edit any skill, switch it off, or delete it. A skill that is
    switched off is kept, but Ari won't use it.
  </Step>
</Steps>

Skills belong to your team. Everyone on the team can see, edit, switch off or delete them.

| Badge | Where the skill came from |
| - | - |
| None | Written by a teammate with **Create manually** |
| **Agent** | Built by Ari from a chat |
| **Imported** | Brought in from GitHub or a file |
| **Built-in** | A starter skill from Salesfinity, which you can edit |

### Limits

| Field | Limit |
| - | - |
| Name | 200 characters |
| Description | 500 characters |
| Steps | 50,000 characters |

A skill that gets close to the limit is usually two skills. About 1,500 words is plenty.

## Run a skill on a schedule

A skill says how. A routine says when. To run a skill every Monday at 9am, ask Ari to set it up as
a standing job. See [Give Ari a standing job](/ari/responsibilities-and-routines).

## Next steps

<CardGroup cols={2}>
  <Card title="Import a skill" icon="file-import" href="/ari/import-skills">
    Bring in a skill from GitHub or a file.
  </Card>

  <Card title="Copy ready-made skills" icon="trophy" href="/tutorials/winning-skills">
    Complete skills for list-building plays, with the prompt that runs each one.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.