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

# gandalf skill

> List, show, add, sync, and remove skills across Claude Code, Codex, and Cursor.

`gandalf skill` manages the skills installed in your agents. `gandalf skills` is an alias. The [skill flags](/cli/overview#skill-flags) apply to every subcommand. Skill commands run on their own and never need `gandalf init` or the background service.

## list

```bash theme={null}
gandalf skill list [--scope user|project|all] [--agent <agent>]
```

Lists every skill with one column per agent and a status. Running `gandalf` with no arguments does the same. `ls` is an alias.

| Cell | Meaning |
| - | - |
| `yes` | The agent has the skill. |
| `-` | The agent does not have the skill. |
| `3f9a1c2` | Short content hash, shown when the skill is `diverged` so you can tell copies apart. |
| `(link)` | The skill directory is a symlink. |

| Status | Meaning |
| - | - |
| `synced` | Every agent has identical content. |
| `partial` | The copies that exist are identical, but some agents lack the skill. |
| `diverged` | At least two agents hold different content. |

## show

```bash theme={null}
gandalf skill show <name> [--scope user|project]
```

Prints the skill's description, the path and short hash of each agent's copy, and the `SKILL.md` of the first copy found. A skill drafted from sessions also shows where it came from and, when its facts were seen in a single session, the date after which to re-check them.

## add

```bash theme={null}
gandalf skill add <path> [--name <name>] [--force] [--dry-run]
```

Copies a local skill directory (one containing `SKILL.md`) into every selected agent.

| Flag | Description |
| - | - |
| `--name <name>` | Install under this name. Defaults to the source directory name. |
| `--force` | Replace copies that differ from the source. The replaced copy moves to `~/.gandalf/trash`. |
| `--dry-run` | Show what would change without writing. |

Without `--force`, an agent that already holds a different copy is left untouched and the command exits with status 1.

## sync

```bash theme={null}
gandalf skill sync [name...] [--from <agent>] [--dry-run]
```

Brings every selected agent to the same skills. With no names, it syncs every skill in the scope.

| Flag | Description |
| - | - |
| `--from <agent>` | The agent whose copy wins when copies differ. Overwritten copies move to `~/.gandalf/trash`. |
| `--dry-run` | Show what would change without writing. |

* Skills whose copies already agree are copied to the agents missing them.
* Skills whose copies differ are skipped, and the command exits with status 1, until you pass `--from`.
* With `--from` and no names, only the skills that agent has are synced.

```bash theme={null}
# Copy everything Claude Code has to Codex and Cursor, overwriting differing copies
gandalf skill sync --from claude-code

# Sync one skill between two agents only
gandalf skill sync code-review --agent claude-code,codex
```

## remove

```bash theme={null}
gandalf skill remove <name> [--agent <agent>] [--dry-run]
```

Removes the skill from every selected agent. `rm` is an alias. Skill directories move to `~/.gandalf/trash`; symlinked skills are only unlinked and their target is left alone.


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