# CLI

Every skilless command and option.

Run `skilless <command> --help` for the same information in your terminal. Every command also takes `--cwd <path>` to run as if from another directory.

Commands only read what is on this machine, so they finish right away and work offline. Anything they change is sent to skilless cloud in the background. Commands that read your library also take `-s, --sync` to check skilless cloud for changes made elsewhere first. See [sync](/docs/cloud/sync).

skilless tells you when a new version is out. Set `NO_UPDATE_NOTIFIER=1` to turn that off.

## init

Create your library at `~/.skilless`.

```bash
skilless init
```

## create

Create a skill in your library, add it to this project and print the path to its `SKILL.md`.

```bash
skilless create [name]
```

| Option                       | Description                                                                 |
| ---------------------------- | --------------------------------------------------------------------------- |
| `-d, --description <text>`   | What the skill does, for the frontmatter.                                   |
| `-g, --global`               | Make it [global](/docs/global-skills) instead of adding it to this project. |
| `--disable-model-invocation` | Only run the skill when you invoke it, never on the agent's own.            |
| `--no-open`                  | Don't open `SKILL.md` in your editor.                                       |
| `--project <key>`            | Use this project key instead of the one from the git remote.                |

You're asked for a name if you leave it out.

## add

Add skills to this project from your library, a git repository, a skill on skilless, or a [pack](/docs/packs).

```bash
skilless add [skills...]
skilless add <repo> [skills...]
skilless add <address>
```

A repository is `owner/repo` or any git URL. Leave out the skills to pick from a list. An address is a skill on skilless (`@user/skill`, or `skilless.dev/skills/<user>/<skill>`) or a pack (`@user/pack/<pack>`, `skilless.dev/packs/<user>/<pack>`, any URL serving one, or a pack file), and is added whole.

| Option            | Description                                                               |
| ----------------- | ------------------------------------------------------------------------- |
| `-g, --global`    | Make these skills global, so every project has them.                      |
| `--not-global`    | Stop treating these skills as global and unlink them from the user level. |
| `--copy`          | Write real files instead of linking to your library.                      |
| `--overwrite`     | From elsewhere: replace library skills with the same name.                |
| `-y, --yes`       | Skip confirmation prompts.                                                |
| `--project <key>` | Use this project key instead of the one from the git remote.              |

## update

Update skills added from a repository, a skilless address or a pack to what is there now.

```bash
skilless update [skills...]
```

With no skills, updates every skill added from elsewhere, and checks every [pack](/docs/packs) you follow for skills it has gained or dropped.

| Option        | Description                                                |
| ------------- | ---------------------------------------------------------- |
| `-f, --force` | Replace skills you've edited too. Your copy is kept first. |
| `-y, --yes`   | Skip confirmation prompts.                                 |

## remove

Remove skills from this project. They stay in your library.

```bash
skilless remove <skills...>
```

| Option            | Description                                                  |
| ----------------- | ------------------------------------------------------------ |
| `--copy`          | Write real files instead of linking to your library.         |
| `--project <key>` | Use this project key instead of the one from the git remote. |

## delete

Delete skills from your library, which removes them from every project on every machine.

```bash
skilless delete <skills...>
```

| Option      | Description                |
| ----------- | -------------------------- |
| `-y, --yes` | Skip confirmation prompts. |

## list

List every skill this project's agents get, and how each one reaches them: ⊕ for a global skill, ⌂ for one that sits in the project's own skill folders. Outside a project, it lists your library.

```bash
skilless list
```

| Option                | Description                            |
| --------------------- | -------------------------------------- |
| `-l, --lib`           | List every skill in your library.      |
| `-d, --details`       | Show what each skill does.             |
| `-p, --project [key]` | List another project's skills instead. |

## install

Install every skill added to this project, and your global skills at the user level. This is the command to run in [cloud agents](/docs/cloud/cloud-agents).

```bash
skilless install
```

| Option            | Description                                                  |
| ----------------- | ------------------------------------------------------------ |
| `--copy`          | Write real files instead of linking to your library.         |
| `--project <key>` | Use this project key instead of the one from the git remote. |

## vendor

Copy skills into this repo as real files to commit, instead of linking them. See [committing a skill](/docs/vendoring).

```bash
skilless vendor [skills...]
```

| Option            | Description                                                  |
| ----------------- | ------------------------------------------------------------ |
| `-y, --yes`       | Skip confirmation prompts.                                   |
| `--project <key>` | Use this project key instead of the one from the git remote. |

## import

Import a directory of existing skills into your library. Each subdirectory needs a `SKILL.md`.

```bash
skilless import <dir>
```

| Option        | Description                        |
| ------------- | ---------------------------------- |
| `--overwrite` | Replace skills that already exist. |
| `-y, --yes`   | Skip confirmation prompts.         |

## migrate

Move this project's skills into your library and link them back. Also offers your user-level skills, as global skills. See [moving existing skills in](/docs/migrating).

```bash
skilless migrate [skills...]
```

| Option                | Description                                                                      |
| --------------------- | -------------------------------------------------------------------------------- |
| `--user`              | Migrate your user-level skills too, without asking.                              |
| `--include-committed` | Move skills committed to this repo too, without asking. Their removal is staged. |
| `-y, --yes`           | Skip confirmation prompts.                                                       |

## auth

Sign in to skilless cloud, or sign out.

```bash
skilless auth
```

| Option            | Description                                                  |
| ----------------- | ------------------------------------------------------------ |
| `--token <token>` | Save a token directly, for when the browser can't reach you. |
| `--logout`        | Sign out on this machine.                                    |

## sync

Sync your library with skilless cloud in both directions, then update this project's skills and your global ones. See [sync](/docs/cloud/sync).

```bash
skilless sync
```

| Option      | Description                          |
| ----------- | ------------------------------------ |
| `--push`    | On a conflict, keep the local copy.  |
| `--pull`    | On a conflict, keep the remote copy. |
| `-y, --yes` | Skip confirmation prompts.           |

## packs

Make and manage your [packs](/docs/packs) on skilless.dev. Adding one is `skilless add <pack url>`.

```bash
skilless packs list
skilless packs create <name> [skills...]
skilless packs delete [packs...]
```

`create` takes library skills by name, repositories (`github.com/owner/repo[/path][#ref]`) and skill addresses. `delete` takes a pack's name, id or URL, or leave it out to pick from a list.

| Option                     | Description                                   |
| -------------------------- | --------------------------------------------- |
| `-d, --description <text>` | `create`: what the pack is for.               |
| `--public`                 | `create`: let anyone with the address add it. |
| `-y, --yes`                | `delete`: skip the confirmation prompt.       |

## config editor

Choose the editor `skilless create` opens new skills in.

```bash
skilless config editor [editor]
```

Leave out the editor to pick from the ones installed. The editors skilless knows are `cursor`, `vscode`, `windsurf`, `zed`, `sublime`, `neovim` and `vim`.

| Option    | Description                           |
| --------- | ------------------------------------- |
| `--unset` | Stop opening new skills in an editor. |

## Environment variables

| Variable         | Description                                                        |
| ---------------- | ------------------------------------------------------------------ |
| `SKILLESS_TOKEN` | A token to authenticate with. Takes priority over `skilless auth`. |
| `SKILLESS_HOME`  | Where your library lives. Defaults to `~/.skilless`.               |
| `SKILLESS_TRACE` | Set to `1` to print a full stack trace when a command fails.       |
