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

# Managing Files, Skills, and Plugins

> Move documents in and out of your team's file library, create and manage Skills, and browse Plugins from the Duvo CLI.

The CLI lets you move documents in and out of your team's shared file library, create and manage the Skills your Agents use, and browse the Plugins available to reference in a Setup.

## Files

Files are documents stored in your team's shared file library. Agents can read, write, and update them as part of their work.

```bash theme={"dark"}
duvo files list                                 # list all team Files
duvo files content <path>                       # print the text content of a file to stdout
duvo files content-set <path> \
  --content "updated text"                      # update the text content of a file
duvo files content-set <path> \
  --content-file ./updated.txt                  # replace content from a local file
duvo files rename \
  --path <current-path> \
  --new-name new-name.csv                       # rename a file
duvo files delete <path>                        # delete a file (prompts for confirmation)
duvo files delete <path> --yes                  # delete without prompting
```

### Uploading and downloading large files

For files larger than a few megabytes, use presigned URLs to upload or download directly via HTTP:

```bash theme={"dark"}
# Upload: get a presigned URL, then PUT the file to it
duvo files upload-url \
  --file-name data.csv \
  --content-type text/csv

# Download: get a presigned URL, then GET the file from it
duvo files download-url <path>
```

The CLI prints the presigned URL plus the HTTP method and headers to use. Pipe to `jq` and `curl` to script the actual upload or download.

### Scripting examples

<CodeGroup>
  ```bash Sync a local directory to the Duvo Files library theme={"dark"}
  for FILE in ./reports/*.pdf; do
    URL=$(duvo files upload-url \
      --file-name "$(basename "$FILE")" \
      --content-type application/pdf \
      --json | jq -r '.upload_url')

    curl -X PUT --data-binary "@$FILE" "$URL"
  done
  ```

  ```bash Backfill a text file from local content theme={"dark"}
  duvo files content-set reports/notes.md \
    --content-file ./local-notes.md
  ```
</CodeGroup>

## Skills

Skills are reusable capabilities your Agents can call (for example, PDF parsing or Google Sheets editing). The CLI lets you browse, install, create, and manage your team's Skills.

### Browse and install

```bash theme={"dark"}
duvo skills list                                # list Skills available to your team
duvo skills list --system                       # restrict the list to system Skills
duvo skills system                              # list global system Skills available to all teams
duvo skills install <skill-id>                  # copy a system (or any accessible) Skill into your team's library
duvo skills agents <skill-id>              # list Agents whose live Setup references a Skill
```

### Create and edit custom Skills

```bash theme={"dark"}
duvo skills create \
  --name "Invoice Parser" \
  --description "Extract totals and line items from invoice PDFs" \
  --content-file ./SKILL.md                     # create a Skill from a Markdown SKILL.md body

duvo skills upload ./my-skill.zip               # create or update a Skill from a SKILL.md file or ZIP archive
duvo skills download <skill-id>                 # download a custom Skill as a ZIP archive
duvo skills delete <skill-id>                   # delete a custom Skill (prompts unless -y)
```

`create` reads the SKILL.md body from `--content-file` (use `-` for stdin) or inline with `--content`. A ZIP passed to `upload` must contain `SKILL.md` at its root.

<Warning>
  If a Skill with the same name already exists, `upload` replaces its **active**
  content in place — a ZIP upload also removes the existing files first. No new
  version is created, so the previous content is not recoverable. Use the draft
  workflow below when you need to keep the version history.
</Warning>

### Manage Skill files

```bash theme={"dark"}
duvo skills files <skill-id>                    # list the files in a Skill
duvo skills file-get <skill-id> <path>          # print one file's contents
duvo skills file-update <skill-id> <path> \
  --content "updated text"                      # update a file in a Skill
```

<Warning>
  `skills file-update` edits the **active** version of a Skill in place — the
  change takes effect immediately and the previous content is gone. To keep a
  version history, edit a draft instead (see below).
</Warning>

### Work with Skill versions

Every Skill keeps a version history. Open a draft, edit the draft's files, then
activate it. The version that was active stays intact and can be re-activated at
any time.

```bash theme={"dark"}
duvo skills revisions list <skill-id>                 # version history (active, drafts, past versions)
duvo skills revisions create <skill-id>               # open (or resume) a draft copied from the active version
duvo skills revisions create <skill-id> \
  --from <revision-id>                                # start the draft from a specific past version

duvo skills revisions files <revision-id>             # list the files in a version
duvo skills revisions file-get <revision-id> <path>   # print one file's contents
duvo skills revisions file-update <revision-id> <path> \
  --content-file ./SKILL.md                           # write a file into the draft
duvo skills revisions file-delete <revision-id> <path> # remove a file from the draft (prompts unless -y)

duvo skills revisions promote <revision-id> \
  --name "Tighter prompts"                            # make the version active (and name it)
duvo skills revisions update <revision-id> --name "…" # rename a version afterwards
duvo skills revisions delete <revision-id>            # delete a draft or past version (prompts unless -y)
```

To roll back, run `duvo skills revisions promote` on an older version — no draft
needed.

<Tip>
  To draft a `SKILL.md` from a plain-English description without saving it, use `duvo skills generate --prompt "..."`.
</Tip>

For details on individual Skills and what they do, see [Available Skills](/user-guide/skills/available-skills).

## Plugins

Plugins are capability packs (browsing, default Skills, and the knowledge-work packs) that you can reference in an Agent's Setup.

```bash theme={"dark"}
duvo plugins list                               # browse every plugin you can reference in a Setup
duvo plugins list --json
```


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