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

# sauce skills

> Install, update or check the package's agent skills in a project, in the directories coding agents read.

`sauce skills` installs, updates or checks the package's agent skills in your project.

## Synopsis

```bash theme={null}
sauce skills <install | update | status> [--agent <agent>,…] [--dir <project>] [--force]
```

## Description

The package ships 13 agent skills as [Agent Skills](https://agentskills.io/specification) directories, each a `SKILL.md` with its examples and references. `sauce skills` copies the skills of the `sauce` command that runs it into a project, where coding agents read them:

| Directory | Read by |
| - | - |
| `.claude/skills/` | Claude Code (`claude`) |
| `.agents/skills/` | OpenAI Codex, Cursor, GitHub Copilot and Gemini CLI (`codex`, `cursor`, `copilot`, `gemini`) |

Those two directories reach all five agents, and they are what the default `--agent all` writes. An agent named alone gets only the directory it reads. `--agent agents-md` is written only when you name it: it writes `.agents/skills/` and an index of the skills into a marked block of `AGENTS.md`, for a tool that reads `AGENTS.md` but no skills directory.

Each skills directory also gets a `tsconfig.json`, the SauceScript project that [`sauce init <dir> --tsconfig`](https://docs.eco.com/sauce-sdk/cli/init) writes, so an editor types the skills' example programs. It is installed, updated and reported like a skill file. Each directory records what it was given in `.sauce-skills.json`: the package, its version and the sha256 of each file as written. That record is how `update` tells a package upgrade (a file still as installed) from your edit (a file that changed). Skills of your own in the same directories are never touched.

The three subcommands:

| Subcommand | What it does |
| - | - |
| `install` | The first install. It never overwrites: on a project already installed it says whether the skills are current, and to run `update` if not. |
| `update` | Adds new skill files, replaces changed ones and removes retired ones. A file edited since it was installed is kept and shown with its difference, unless you pass `--force`. In `AGENTS.md` it rewrites only its own block. |
| `status` | Reports each target as up to date, outdated or modified, with its files. Exits 1 while any target is outdated or not installed. |

`update` and `status` act on the targets already installed. In a project that pins the package, `npx sauce skills install` installs that version's skills, and a global `sauce skills status` there reports skills installed from another version.

## Options

| Option | Description |
| - | - |
| `--agent <agent>` | The agents to install for: `claude`, `codex`, `cursor`, `copilot`, `gemini`, `agents-md` or `all`, comma-separated (default: `all`). |
| `--dir <project>` | The project directory (default: `.`). |
| `--force` | With `update`: overwrite files edited since they were installed. |
| `-h, --help` | Show the help. |
| `--no-update-check` | Print no notice of a newer `sauce`, and do not read the registry for one. |

## Output

`install` and `update` print one line per target and one line per file they wrote, updated, removed or kept. `update` prints a summary per target: `added N, updated N, removed N, kept N modified`. `status` prints one line per target.

| Exit code | Meaning |
| - | - |
| `0` | Done; for `status`, every target is up to date or modified. |
| `1` | `status` found a target outdated or not installed. |
| `2` | The command line was wrong. |

## Examples

### Install the skills in a project

`install` with no `--agent` writes both directories.

```bash theme={null}
sauce skills install --dir proj
```

```text theme={null}
installed claude (.claude/skills)
  wrote      .claude/skills/sauce-actions/SKILL.md
  wrote      .claude/skills/sauce-actions/examples/swap-and-supply.json
  …
  wrote      .claude/skills/tsconfig.json
installed codex, cursor, copilot, gemini (.agents/skills)
  wrote      .agents/skills/sauce-actions/SKILL.md
  …
  wrote      .agents/skills/tsconfig.json
```

### Check the skills

```bash theme={null}
sauce skills status --dir proj
```

```text theme={null}
claude (.claude/skills): up to date (<version>)
codex, cursor, copilot, gemini (.agents/skills): up to date (<version>)
```

Run again, `install` writes nothing and exits 0:

```text theme={null}
skills are up to date (claude (.claude/skills))
skills are up to date (codex, cursor, copilot, gemini (.agents/skills))
```

### Update after an edit

After a line was appended to `.claude/skills/sauce-cli/SKILL.md`, `status` reports the file as modified and `update` keeps it.

```bash theme={null}
sauce skills update --dir proj
```

```text theme={null}
claude (.claude/skills): added 0, updated 0, removed 0, kept 1 modified
  kept       .claude/skills/sauce-cli/SKILL.md, edited here:
      @@ line 666
      + my note
      + 
codex, cursor, copilot, gemini (.agents/skills): added 0, updated 0, removed 0, kept 0 modified
```

`--force` replaces the edited file with the packaged one.

```bash theme={null}
sauce skills update --dir proj --force
```

```text theme={null}
claude (.claude/skills): added 0, updated 1, removed 0, kept 0 modified
  updated    .claude/skills/sauce-cli/SKILL.md
codex, cursor, copilot, gemini (.agents/skills): added 0, updated 0, removed 0, kept 0 modified
```

### Install for one agent

```bash theme={null}
sauce skills install --dir solo --agent codex
```

```text theme={null}
installed codex (.agents/skills)
  wrote      .agents/skills/sauce-actions/SKILL.md
  …
```

### Add the `AGENTS.md` index

In the same project, `agents-md` finds `.agents/skills/` already current and adds the index.

```bash theme={null}
sauce skills install --dir solo --agent agents-md
```

```text theme={null}
skills are up to date (agents-md (.agents/skills))
installed agents-md (AGENTS.md): wrote its sauce-skills block
```

The block lists each skill with the path of its `SKILL.md`. The command owns the block and nothing else in `AGENTS.md`.

### Status in a project with no skills

```bash theme={null}
sauce skills status --dir empty
```

```text theme={null}
sauce skills: no agent skills are installed in empty: run `sauce skills install`
```

The command exits 1.

## Next steps

* [`sauce init`](https://docs.eco.com/sauce-sdk/cli/init), which scaffolds a project and installs the skills in it
* [`sauce mcp`](https://docs.eco.com/sauce-sdk/cli/mcp), whose server serves the same skills with nothing installed
* [Agents](https://docs.eco.com/sauce-sdk/ai-agents.md)
* [`sauce update`](https://docs.eco.com/sauce-sdk/cli/update)


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