# Placeholders

Placeholders turn a template into a fill-in-the-blank prompt. Use an unnested **{{name}}** token in the template body, and Solo asks for a value each time you use the template. Avoid nested double-brace sequences and unmatched opening **{{** delimiters, which can prevent a later token from being recognized.

## Syntax

A placeholder is a name wrapped in double braces:

```text
Please review {{ticket_id}} and summarize the changes for {{audience}}.
```

The rules:

- Names can contain ASCII letters, ASCII digits, and underscores, and must start with an ASCII letter or underscore. **{{ticket_id}}**, **{{Goal}}**, and **{{_draft}}** are all valid.
- Spaces inside the braces are fine — `{{ ticket_id }}` works the same as `{{ticket_id}}`.
- Names are case-insensitive. `{{Goal}}` and `{{goal}}` are the same placeholder, and Solo normalizes the name to lowercase.
- Invalid non-nested forms such as **{{not-valid}}** and **{{two words}}** remain exactly as written and are not placeholders. Avoid nested double-brace sequences: a valid inner token can still be replaced at render time once that name has a value.

A placeholder can appear as many times as you like. You fill it in once, and every occurrence is replaced with the same value.

## Placeholder chips in the editor

While editing a template, the **Placeholders** section below the body lists each placeholder as a chip, in order of first appearance, updating live as you type. The count and chips show exactly which parsed placeholder names Solo recognized.

## Filling placeholders at insert time

When you pick a template with placeholders from the template picker, Solo steps through each one before inserting. The current **Use prompt template** binding is shown in **Settings > Hotkeys**; its default is **Cmd+Shift+P** on macOS and **Ctrl+Shift+P** on Windows and Linux, and it can be rebound or disabled. The picker input becomes the value field for the current placeholder, and a live preview of the full prompt shows your values dropping into place as you type.

Once every placeholder has a value, the rendered prompt — with all occurrences replaced — is inserted into the active agent or terminal input. Placeholders you leave empty are replaced with nothing.

See [Using templates](./using-templates.md) for the fill wizard's keyboard controls, including moving between placeholders and copying a partially filled prompt.

---

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