# Creating and editing templates

Prompt templates are for storing your favorite prompts that you can quickly use across any agent inside of Solo. Sort of like an agent-agnostic, user-invoked skill.

Templates are created and managed in the prompt template library, which you can open from the [command palette](../command-palette/using.md) or quick jump. This page covers the editor, saving rules, scope changes, and exporting templates to Markdown files.

## Creating a template

Click **New template** in the library header. Solo creates an empty template and opens it in the editor. It uses **Untitled template** when available, then the first available numbered name from **Untitled template 2** through **Untitled template 9999**.

The new template is created in the scope you opened the library from — the current project when you opened a project's templates, or global when you opened the application-level library. You can change the scope before or after saving.

## The editor

Each template has three fields:

- **Name** — shown in the picker and library. Click the title in the header or the large document title to rename it.
- **Description** — optional text used as the preview line in the picker and library when non-empty.
- **Template body** — the prompt text itself. Use `{{placeholder_name}}` for values you want to fill in when using the template; see [Placeholders](./placeholders.md).

Below the body, a **Placeholders** section lists every placeholder found in the draft as chips, updating live as you type. A count also appears in the meta row near the scope control.

## Saving

The editor does not autosave. The **Save** button enables as soon as the draft differs from the saved template, and your pending edits survive switching fields until you save or leave.

Names have a few rules:

- A name is required.
- Names cannot contain `/` or control characters.
- Names must be unique within their scope using ASCII case-insensitive matching — two global templates cannot share such a name, and neither can two templates in the same project. The same name can exist in different scopes. Non-ASCII letters are not case-folded, so names that differ only by non-ASCII letter case can remain distinct.

## Changing scope

The scope control in the meta row switches a template between **Global** and any project. Like other edits, the change applies when you save. If the destination scope already has a template with the same name, the save fails — rename one of them first.

## Duplicate and delete

The **...** actions menu in the editor header offers:

- **Duplicate** — creates a copy in the same scope named `<name> copy` (then `<name> copy 2`, and so on) and opens it.
- **Delete** — permanently deletes the template after a confirmation dialog. This cannot be undone.

## Timestamps

The bottom of the editor shows when the template was **Created** and last **Updated**, each with a relative time. Once a template has been used from the [picker](./using-templates.md), a **Last used** timestamp appears as well — this is what drives the default ordering in the picker and library.

## Exporting to Markdown

Templates can be exported as Markdown files through Solo's [prompt template MCP tools](../mcp-tools/prompt-templates.md). An MCP client can use this to write template backups or repository copies to a destination Solo can write.

Each exported file contains YAML frontmatter followed by the raw template body:

```markdown
---
name: Refactor brief
scope: global
description: Standard multi-file refactor prompt
placeholders:
- goal
---

Please refactor {{goal}}.
```

The frontmatter fields are:

| Field | Notes |
|-------|-------|
| `name` | The template name |
| `scope` | `global` or `project` |
| `description` | Omitted when the template has no description |
| `project` | The project's `id`, `name`, and `path`; only present for project-scoped templates |
| `placeholders` | The template's placeholder names in order of first appearance; omitted when there are none |

Filenames use ASCII-only slugs: ASCII letters are lowercased, ASCII digits are retained, and runs of every other character become hyphens; leading and trailing hyphens are removed. For example, **Deploy — Brief!** becomes **deploy-brief.md**. A name with no ASCII letters or digits falls back to `prompt-template.md`. When two exports would produce the same filename, or a file with that name already exists in the destination, Solo appends a number (`deploy-brief-2.md`) instead of overwriting anything. Line endings in exported files are normalized to Unix newlines.

---

Are you a human? Read this doc on the web: https://soloterm.com/docs/prompt-templates/creating-and-editing
