Variables: Reusable Placeholders
Variables turn a single prompt or skill into a reusable template. You write {{placeholders}} in the content, fill in the values when you copy, and Prompt2Love interpolates them for you. Variable support runs through the whole product - the editor, the detail view, a copy modal, the Chrome extension, and the MCP /prompt command - so one well-written prompt works everywhere you do.
Defining Variables & Syntax
Variables use double-curly-brace syntax: {{variableName}}. As you write, the editor automatically extracts every {{...}} pattern and adds it to your variable list, and you can also add variables manually in the Variables tab. In the web editor a variable name must match the pattern [a-zA-Z_][a-zA-Z0-9_]* - letters, numbers and underscores, starting with a letter or underscore - and any spaces you type into a name are converted to underscores, so 'my var' becomes 'my_var'. Note that variables are plain text, not encrypted, and there is no rename or reorder tooling: renaming a variable means editing every {{oldName}} reference in the content by hand.
- Syntax: {{variableName}}; web name rule: [a-zA-Z_][a-zA-Z0-9_]* (must start with a letter or underscore)
- Spaces in a name auto-convert to underscores ('my var' becomes 'my_var')
- Variables in your content are auto-detected as you type and merged with any you add manually
- Validation messages (German): 'Name darf nur Buchstaben, Zahlen und _ enthalten...' and 'Variable existiert bereits.'
- No rename or reorder: renaming means editing every {{oldName}} reference by hand
- Variables are plain text, not encrypted
Managing & Inserting Variables in the Editor
In the Variables tab you add a variable by typing a name and pressing Enter (or 'Hinzufügen'), and remove one with the X on its pill. Removing a variable does not strip its {{syntax}} from the content - you delete those references yourself. As soon as at least one variable exists, a VariableToolbar appears above the content text area with one quick-insert button per variable; clicking a button inserts {{name}} at the cursor and restores your cursor position afterwards. Variables you type directly into the content are merged with the ones you added manually, so both lists stay in sync.
- Add a variable with input + Enter; remove it via the X on its pill
- Removing a variable does not remove its {{references}} from the content
- VariableToolbar shows quick-insert buttons whenever at least one variable exists
- Quick-insert places {{name}} at the cursor and restores cursor position after re-render
- Empty state: 'Noch keine Variablen. Erstelle eine Variable und verwende sie im Prompt-Inhalt.'
- Content-detected variables are merged with manually-added ones
Filling Variables & Copying
The prompt or skill detail view toggles between two modes: 'Variablen' shows the raw {{name}} placeholders, while 'Gefüllt' / 'Filled' shows your values substituted in. A fill section gives you one input per variable ('Wert für {variable}'). The 'Kopieren' button is enabled only once every variable has a non-empty value, and an always-available 'Ohne Werte kopieren' fallback copies the text with placeholders intact. When you copy a prompt that has variables straight from a card or list, a standalone VariableModal titled 'Variablen ausfüllen' opens instead of copying directly - it shows the inputs, a live 'Vorschau' preview of the filled content, copies on 'Kopieren', shows a 'Kopiert!' toast, and auto-closes after about one second. Copy actions log a promptCopied analytics event. One thing to know: the web app's substitution does not parse default values - defaults are a Chrome-extension-only feature.
- Two view modes: 'Variablen' (raw placeholders) vs 'Gefüllt' / 'Filled' (substituted)
- 'Kopieren' enabled only when all variables are filled; 'Ohne Werte kopieren' fallback always available
- Standalone VariableModal 'Variablen ausfüllen' with a live 'Vorschau' preview; auto-closes ~1 second after copy
- Copy shows a 'Kopiert!' toast and logs a promptCopied analytics event
- The web app does not parse default values - defaults are Chrome-extension-only
Variables in the Chrome Extension
The Chrome extension understands three placeholder styles: {{var}}, {{var:default}} with a built-in default value, and the legacy uppercase [VAR_NAME] form. Its VariableEditor renders one input per variable and pre-fills any defaults declared with {{var:default}} syntax. The values you enter persist per prompt in chrome.storage.local under savedVarValues with case-insensitive key lookup, so they are reused the next time you use that prompt. A COMMON_WORDS filter and a two-character minimum key length keep ordinary words from being mistaken for variables. On copy or insert, an interpolate() function replaces all placeholders, and a PROMPT_COPIED message carries the promptId, the resolved body and the variable values for usage analytics, while INSERT_PROMPT carries the resolved text.
- Recognizes {{var}}, {{var:default}} (with defaults) and the legacy uppercase [VAR_NAME]
- Defaults from {{var:default}} pre-fill the inputs in the VariableEditor
- Values persist per prompt in chrome.storage.local under savedVarValues (case-insensitive lookup)
- COMMON_WORDS filter plus a 2-character minimum key length guard against false detection
- Copy/insert tracked via PROMPT_COPIED (promptId, resolvedBody, variableValues) and INSERT_PROMPT
Variables in the MCP /prompt Command
When a prompt is fetched for insertion via the /prompt command, the system scans its content for {{variables}}. If it finds any, it appends a short German note instructing the agent to request the values before using the prompt: '(Dieser Prompt enthält Variablen: {{var1}}, {{var2}} - frag mich nach den Werten, bevor du ihn verwendest.)'. The note only appears when the prompt actually contains variables, and it is currently German-only - there is no localized English variant, so it will read in German even for English-language prompts.
- The note is appended only when the prompt content contains {{variables}}
- The note (German) asks the agent for the variable values before using the prompt
- Currently German-only - no localized English variant, even for English prompts
Variable Limits by Tier
A 'variable-prompt' is any prompt or skill that has at least one variable. The free tier allows 5 of these (maxVariablePrompts = 5), while Pro and Business are unlimited (-1). The limit is checked only at the moment an item goes from zero to one or more variables - in other words, only when you start a brand-new variable-prompt. Editing prompts that already have variables never increments the quota. When you hit the cap, the add control turns into an 'Upgrade' button with a lock icon and a banner reading 'Variablen-Limit erreicht (5/5)' / 'Upgrade auf Standard für unbegrenzte Variablen-Prompts'. The same quota is also enforced server-side when a prompt is created with {{variable}} content.
- Free: maxVariablePrompts = 5; Pro and Business: -1 (unlimited)
- A 'variable-prompt' is any prompt or skill with at least one variable
- The limit applies only when adding the first variable to an item - editing existing variable-prompts is free
- At the cap: the add button becomes 'Upgrade' (lock icon) with banner 'Variablen-Limit erreicht ({usage}/{limit})'
- Quota also enforced server-side when a prompt is created with {{variable}} content