# ReadUserTemplate

Loads a template file from the caller's `templates/` subdir (`data/users/{userId}/templates/`).

## Overview

Templates are plain Markdown files the user stores in their `templates/` folder via the UI.
Unlike `memory/` entries, frontmatter is **optional** — a template can be pure Markdown prose
with no YAML header at all.

Use this tool when the user says "use the weekly-report template" or "follow the api-error-email
boilerplate" — call `ReadUserTemplate`, read the shape, then adapt it to the task at hand.

---

## Usage

```json
{ "name": "weekly-report" }
```

Or with the `.md` extension (both forms work):

```json
{ "name": "weekly-report.md" }
```

**Response example (no frontmatter):**

```
# Template: weekly-report

## Body
# Weekly Report

Fill in this week's highlights here.
```

**Response example (with frontmatter):**

```
# Template: api-error-email

## Frontmatter
title: "API Error Email"
audience: "external"

## Body
Dear customer,

We apologize for the inconvenience.
```

---

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Template filename, with or without `.md` extension (max 128 chars) |

---

## Error cases

- Returns an error if the template does not exist in `templates/`.
- Returns an error if no user is authenticated.
- Returns an error if `name` contains path traversal characters or slashes.

---

## Use cases

- Weekly / monthly report boilerplate: `ReadUserTemplate({ name: "weekly-report" })` → fill in stats.
- Email canned responses: `ReadUserTemplate({ name: "api-error-email" })` → personalise and send.
- Code boilerplate: `ReadUserTemplate({ name: "react-component" })` → generate a new component.

---

## Related tools

- `ListUserAssets({ kind: "templates" })` — see what templates exist before reading one.
- `ReadUserMemory` — for structured facts/preferences (requires frontmatter).
- `RunUserScript` — for executable Node/Playwright scripts stored in `scripts/` / `browser-macros/`.
- This tool is a META_TOOL — no need to add it to `allowed_tools` in piece YAML.
