Script Reference
The Yapture script — prefix tokens for tags, workspaces, priority, due dates, assignees, questions, and more.
A single line is the API.
Fix login bug #!high #+alice #@backend due:2026-04-01parses into priority, assignee, workspace, tag, and due date. No modals, no multi-step forms.
The script is implemented in @yapture/nlp. It’s a zero-runtime-dependency parser that ships in every Yapture client — web, desktop, Chrome extension, CLI — and on the server. Whatever the client sees, the server sees.
Try it interactively at /script.
Token reference
# — Tag
A free-form tag. Hierarchical via :.
#bug
#bug:auth
#bug:auth:oauth
- Color palette:
standard(slate). - Many per yap. Order does not matter.
- Auto-suggests against the list’s existing tags as you type.
#@ — Workspace
A hierarchical organizational context.
#@work
#@work:design
#@work:design:ui
- Color palette:
workspace(emerald). - Icon depth:
Folder→FolderOpen→FolderTree(1 / 2 / 3+ levels). - A yap can belong to multiple workspaces; rare in practice.
#^ — Goal
A project or objective reference. Supports adjacent metadata.
#^Q4
#^Q4:revenue
#^Q4:revenue:#*{target:1m,currency:USD}
- Color palette:
goal(purple). - Goals nest like workspaces.
- Adjacent
#*{...}metadata attaches to the goal it follows.
#~ — Routine
A canonical recurring marker.
#~daily-standup
#~weekly-review
- Color palette:
routine(teal). - Replaces the older free-form
routinekeyword detection. - Combine with
due:for first occurrence; the recurrence rule is set in the yap detail.
#$ — Action
Trigger an integration or agent action.
#$email
#$slack-notify
#$approve
- Color palette:
action(blue). - Actions are looked up in the workspace’s action registry. Unknown actions are silently treated as tags.
#+ — Assignee
Assign a yap to one or more people.
#+alice
#+alice #+bob
- Color palette:
assignee(sky). - Names resolve against the workspace’s member list. Unknown names attach as plain strings.
- For external assignees, use a full email:
#+alice@example.com.
#? — Question
Mark a task as a question that requires an answer before it can be completed.
#? Who will transport Eleanor to rehab sessions?
Schedule cardiac rehab #? Who handles transport? #+marcus #!high
- Color palette:
question(amber). - When
#?appears, the task type is set to QUESTION. - Questions have a two-step completion flow: someone must provide an answer before the checkbox can be checked.
- Combine with
#+to assign who should answer, and#!for urgency.
#! — Priority
Set urgency. Aliases: p1–p4 map to URGENT–LOW.
#!urgent // or #!p1
#!high // or #!p2
#!medium // or #!p3
#!low // or #!p4
- Color palette:
priority.{urgent|high|medium|low}— red / orange / yellow / green. - Last
#!wins if multiple are present.
#*{...} — Metadata
Adjacent key-value pairs, attached to the preceding goal or action.
#^Q4:#*{target:1m,currency:USD}
#$email:#*{to:team@yapture.com,template:weekly-digest}
- Color palette:
standard, monospace rendering. - Comma-separated. Values are strings; numeric parsing is a UI concern.
due: — Due date
A due date. Natural-language dates are parsed.
due:2026-05-01
due:tomorrow
due:friday
due:next-week
- Color palette:
standardwith calendar icon. - Time of day:
due:2026-05-01T09:00. - Parser is deterministic —
due:tomorrowalways means today + 1 day in the user’s timezone.
Trailing : — Section
A yap that ends with : is auto-rendered as a section header.
Sprint 42 Tasks:
Bugs to triage:
- Renders as a divider, not a checkable item.
- Useful for organizing long lists.
Worked examples
Fix login bug #!high #+alice #@backend due:2026-04-01
→ priority HIGH, assignee alice, workspace backend, due 2026-04-01.
Launch feature #^Q4:revenue:#*{target:1m,currency:USD} #@product:#@features #+team #$email
→ goal Q4:revenue (with metadata target=1m, currency=USD), workspaces product and features, assignee team, action email.
Review budget #@work:finance #+alice #$approve #!p1 due tomorrow
→ workspace work:finance, assignee alice, action approve, priority URGENT (p1), due tomorrow.
SDK access
The same parser is available in JS:
import { YaptureNLP } from '@yapture/nlp';
const parsed = YaptureNLP.parse('Fix login bug #!high #+alice due:tomorrow');
// parsed.priority === 'HIGH'
// parsed.assignees === ['alice']
// parsed.dueDate instanceof Date
See SDK reference for the full API surface.