A CUE.md file defines one cue source: one domain of word suggestions or tips. It lives at cues/<name>/CUE.md inside a .cues/ folder (every cue is folder-shaped; the folder name is its id), and it's plain YAML frontmatter plus a markdown body. No code, no registration, hot-reloaded on edit.
The frontmatter
| Field | Meaning |
|---|---|
name (required) | The source's unique id |
match: or keywords: (one required) | The trigger: an ECMAScript regex, or a case-insensitive word list. A source with neither is unreachable and validators error. |
description | Documentation only, shown by opencues list. It never controls invocation; that's the deliberate difference from SKILL.md, where an LLM routes by description. |
priority | Default 50; when several sources match a word, the highest priority claims it |
scope | words (default) or sentence (whole-sentence rewrites; needs no trigger, gated by sentence-cues-mode) |
provider / model | Optional per-cue LLM override |
enabled | false keeps the file on disk but off |
on-host / not-on-host | Host allow/deny lists (a browser-only cue, a Claude Code tips pack) |
spec | The spec version pin; runtimes refuse files newer than they support |
The body: two modes, combinable
Static mode is a fenced JSON block of tip groups mapping words to a tip, an alts list, and an optional speak flag: zero-latency dictionary lookups, no LLM involved (the shipped per-host tips packs are pure static packs). LLM mode is a markdown prompt; the runtime appends the wire-format instruction and dispatches matched words to your model. A combined file serves static words instantly and falls through to the prompt for the rest.
A complete example
The shipped spelling cue is a whole spell-checker in one small file: match: .* at priority 10 claims every word no more specific cue wanted, and the body is a short prompt asking for corrections. That's the anatomy demonstrating itself: trigger, priority, prompt, nothing else.
Writing your own
Copy a shipped folder, change the trigger and the body, save; it's live on your next keystroke in every host at once. opencues validate lints the frontmatter, and the write-your-own guide walks the details, including how per-word routing keeps your source isolated from the others.
Related: Write your own cue · The spelling cue · CUES.md (the master file) · GitHub repo