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

# versuno prompts push

> Push modified local assets to the cloud.

```
versuno prompts push [file] [-m <description>]
```

Finds all modified asset files (via content hash comparison), then for each:

* **Existing asset** (has an `id` in frontmatter) — creates a new version on the API and updates `version` and `updated_at` in the frontmatter.
* **New file** (no `id`) — creates a brand-new asset, inferring the `assetType` from the directory name, and writes back `id`, `type`, `title`, `version`, `created_at`, and `updated_at` into the frontmatter.

## Arguments

| Argument | Required   | Description                                             |
| -------- | ---------- | ------------------------------------------------------- |
| `file`   | Positional | Specific file to push. Omit to push all modified files. |

## Options

| Flag             | Description                                                                                                              |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `-m <text>`      | Version commit description (stored with the version).                                                                    |
| `--type <type>`  | Asset type override (`context`, `prompt`, `persona`, `system-prompt`, `skill`). Defaults to the directory-inferred type. |
| `--title <text>` | Asset title override. Defaults to the filename without extension.                                                        |
| `--dry-run`      | Print what would be pushed without making any API calls.                                                                 |
| `--format json`  | Output a JSON array of push results instead of human-readable output.                                                    |

## Asset type inference

When pushing a new file (no `id`), the type is inferred from its parent directory:

| Directory                 | Inferred type           |
| ------------------------- | ----------------------- |
| `contexts/`               | `context`               |
| `prompts/`                | `prompt`                |
| `personas/`               | `persona`               |
| `system-prompts/`         | `system-prompt`         |
| `skills/`                 | `skill`                 |
| `projects/<slug>/<type>/` | from `<type>` subfolder |

## Examples

```bash theme={null}
# Push all modified files
versuno prompts push

# Push a specific file with a description
versuno prompts push prompts/my-prompt.md -m "Improved tone"

# Preview what would be pushed
versuno prompts push --dry-run

# Push a new file with an explicit type and title
versuno prompts push notes/raw-draft.md --type prompt --title "Draft Intro Prompt"

# JSON output
versuno prompts push -m "Update" --format json
```

## See also

* [versuno prompts pull](/cli/pull) — sync assets from the cloud
* [versuno prompts status](/cli/status) — check which files are modified
* [versuno prompts diff](/cli/diff) — preview changes before pushing
