# Workflows

Ordered chains of skills, commands and other workflows, stored with your repository and run from chat, a button, an automation or the Software Factory.

A workflow is a fixed list of steps your repository carries with it: *run the pre-PR checks, then the security audit, then draft the changelog*. It runs top to bottom, stops when a required step fails, and every step goes through your rules.

## Create a workflow

:::steps
1. Open a project's **Workflows** tab and press **New workflow**.
2. Give it a name (it becomes the slash command, `/pre-pr-checks`) and say what it does.
3. Add steps. Each is a **Skill** (search your skills), a **Command** (a shell command) or a **Sub-workflow** (another workflow, nested up to five deep).
4. **Save workflow**. It is written to `.warden/workflows/<name>.yaml` in the repository, so the team gets it with the code.
:::

Per step:

| Option | Means |
|---|---|
| **Step name** | An optional label. |
| **Required** | On by default: if this step fails, the chain stops and the run is marked failed. Off: the chain carries on. |
| **Pass output to next step** | Hands a summary (up to 2,000 characters) to the next step. |
| **Output** | *Inherit*, *Deliverable* (shown word for word), *Check* or *Internal*. |

```yaml title=".warden/workflows/pre-pr-flow.yaml"
name: pre-pr-flow
description: Checks, then a security audit, then the release gate
steps:
  - name: Local checks
    kind: skill
    ref: pre-pr-checks
    pass_output: true
  - kind: command
    ref: "ruff check ."
  - kind: workflow
    ref: release-gate
    required: false
```

Warden reads workflows from `.warden/workflows/` and `.agents/workflows/` in the project, then `~/.warden/workflows/` and `~/.agents/workflows/` for ones you want everywhere. A project workflow wins over a global one with the same name.

## Run a workflow

| From | How it runs |
|---|---|
| **Chat** | Type `/pre-pr-flow`. The agent works through the steps in order and stops if a required step fails. Every tool call it makes is checked by your rules as usual. |
| **The Run button** | On the Workflows tab. A strict runner executes the steps exactly, with live output, using the chat's current model. Every command step is checked by your rules before it runs: a deny skips it and names the rule; an ask shows **Run once** or **Don't run**. |
| **An automation** | The **Run a workflow** action, for example after the agent edits files. It runs unattended, so an ask is held for your review. See [Automations](automations). |
| **Assurance and the Factory** | A workflow can be an [assurance gate](assurance#set-up-your-checks) or a custom Software Factory step. |

> [!NOTE] Workflows and recipes
> Workflows are not the same as **Recipes** (Library → Recipes), which are goose-style agent recipes. Workflows are ordered chains stored with the repository.

> [!LIMIT]
> The editor saves workflows to the project only. For a workflow in every project, put its file in `~/.warden/workflows/` yourself.
