`, and fenced code all stay literal. If your prompt contains aardvark template
syntax (a literal `{% … %}` or `{{ … }}`), wrap that
part in a **raw block** so the template engine leaves it alone — the same
`{% raw %}` … raw-guard convention used everywhere else in these docs.
## Options
| Attribute | Valid values | Description |
| --- | --- | --- |
| `title` | Any string | Optional heading shown above the prompt. Omit it for a plain **Prompt** label. |
| `actions` | Comma-separated list of `copy`, `chatgpt`, `claude`, `cursor` | Which buttons to show, in order. Default `copy, chatgpt, claude, cursor` (all four). Unknown values are ignored; an empty/all-unknown list falls back to just **Copy**. |
| `attr` | `{…}` | Raw HTML attributes forwarded onto the rendered block root (see below). |
| *(body)* | Verbatim text | The prompt itself, written between `{% prompt %}` and `{% endPrompt %}` (`children=` from Python). Kept exactly as written — never Markdown-rendered. |
## CSS Selectors
Each prompt carries `data-aardvark-island="Prompt"` on its wrapper and renders its own class
names — target the block, the header, the buttons, or the prompt text.
```css
[data-aardvark-island="Prompt"] /* the island wrapper */
[data-aardvark-island="Prompt"] .aardvark-prompt /* the bordered block */
[data-aardvark-island="Prompt"] .aardvark-prompt-head /* the title / buttons row */
[data-aardvark-island="Prompt"] .aardvark-prompt-action /* a copy / open-in button */
[data-aardvark-island="Prompt"] .aardvark-prompt-text /* the verbatim prompt */
```
## Injecting Attributes
`attr={…}` forwards raw HTML attributes — `id`, `data-*`, ARIA, analytics hooks — onto the
rendered block root.
**Explain this error**
```text
Explain the following error message in plain language, then list the two most likely causes and how to check each.
```
Source: Markdown
```aardvark
{% prompt title="Explain this error" attr={'data-analytics': 'ai-prompt', 'aria-label': 'AI prompt: explain error'} %}
Explain the following error message in plain language, then list the two most likely causes and how to check each.
{% endPrompt %}
```
Source: Python
```python
component('aardvark', 'prompt', title='Explain this error',
children='Explain the following error message in plain language, then list the two most likely causes and how to check each.',
attr={'data-analytics': 'ai-prompt', 'aria-label': 'AI prompt: explain error'})
```