You define a snippet by creating a [[Templates|template]] with a `hooks.snippet` attribute that configures the snippet. The following configuration options are supported:
*`slashCommand`: expose the snippet via the `/my-snippet` notation.
*`matchRegex` (advanced use only): match the _current line_ against a regular expression, and replace the match with the template’s body. If a caret placeholder (`|^|`) appears in the template’s body, the replacement body _before_ the caret will be the replacement of the matchRegex match, and the part _after_ that carret will be appended to the end of the line. This enables text wrapping behavior, see the example below.
*`insertAt`: by default a snippet is inserted at the cursor position, but alternatively it can be inserted at: `line-start`, `line-end`, `page-start` or `page-end`.
A template’s [[Frontmatter]] is interpreted by SilverBullet’s [[Templates|template]] engine and removed when instantiated. However, to inject frontmatter after instantiation, you can use the `frontmatter` attribute.
When the page already contained frontmatter before inserting the snippet, it will be augmented with the additional frontmatter specified by the template.
A minimal example using a caret placeholder (to position the cursor after snippet insertion):
```
---
tags: template
hooks.snippet.slashCommand: meeting-notes
---
## Meeting notes for {{today}}!
|^|
```
A more advanced example using `matchRegex`: a variant of the [[Library/Core/Snippet/Task]] template which adds a `creationDate` [[Attributes|attribute]] at the end:
```
---
tags: template
description: Make this a task with a creation date
A snippet can be _triggered_ via the specified `slashCommand` via `/slashCommand` or via {[Open Command Palette]} and/or its associate key bindings when `command`, `key`/`mac` are specified.