Proposed standard · Full text

Directive Shorthand 1.0 — the specification

The complete, canonical text of the standard — grammar, registries, discovery, governance, internationalization, and the conformance test. This is the document agents load; it is published in full so anyone can adopt it, test against it, or build on it.

Authored by Michael Nash · AgentForge · First published 2026-10-18

Provenance. Directives was designed by Michael Nash on 2026-10-18 and first implemented the same day in the AgentForge toolkits, which are its reference implementation. The full design record — the research, the alternatives weighed, and the reasons for every decision in this document — is published alongside it as DIRECTIVES_RESEARCH.md. This specification is published, dated, and attributed so that its authorship is a matter of public record.

This file is the canonical text of Directive Shorthand 1.0 — Lingo, to most people: Lingo is the specification's nickname, the name it goes by in conversation ("learn the Lingo"). The specification defines a small, published vocabulary of shorthand directives — tokens a user drops into an ordinary message to steer how an AI agent replies, what it remembers, and how it works. It is a proposed standard: written to be adopted by any agent, on any platform, in any toolkit — not just AgentForge's.

A directive system for agents has to steer more than text. Legacy command systems steered output or software; an agent is steered in its conduct — how it replies, what it remembers, how carefully it verifies, whether it acts or only drafts. Directives is one unchanged grammar over all of those domains: each new domain arrives as a new family under the same rules, never as new syntax.

The design axiom: the vocabulary is always known

The directive vocabulary lives here — in the shipped instructions of whatever carries this standard (a toolkit's AGENTS.md carries the doctrine; this file carries the spec). An agent that has loaded the standard knows every directive on first contact, with zero history with the user. Nobody teaches the agent the commands, and no agent memorizes them per-user — there is nothing to learn. If an agent does not know a directive, the standard was not loaded; that is a loading failure, not a memory gap.

Persistence (obligation 3, below) exists for exactly one thing: the user's sticky state — which modes are currently switched on. State is per-user and changes over time; the vocabulary is per-standard and permanent. Never confuse the two, and never describe the commands themselves as something remembered about a user.

Grammar

A directive is a token of the form:

<family>:<name>            bare form
<family>:<name> on         sticky on        (modes only)
<family>:<name> off        sticky off       (modes only)
<family>:<name>/<name>     stacked form     (see Stacking)
mem:                       the mem: family's bare form (see its registry)

Stacking

Several directives can ride in one token, chained with /:

re:voice/brief       a short voice note
re:show/deep         a thorough visual
re:vo/br             the same as the first, shortened (below)
do:check/draft       verified content, never executed
mem:fix/pin          a correction, saved at top priority

Directives sit on axes — each name owns exactly one axis within its family (the registries below name each token's axis). A stack composes across axes — channel + length + register + structure all apply at once. Within one axis, the last mention wins: re:brief/deep is a deep reply. The same rules govern multiple separate tokens in one message (re:voice re:brief = re:voice/brief); stacking is sugar, not a second grammar. Stacks carry bare names only and never change persisted state — set or clear a sticky mode with the plain single form (re:voice on, re:voice off).

Shortening — the type-ahead rule

There is no shorthand list to memorize. A name may be shortened to any prefix that matches exactly one name in its family's registry — start typing the word, stop when it can only be one thing (the tab-completion rule; network engineers have typed Cisco's version of it for decades). Type-ahead resolves within a family: the prefix has already selected the namespace.

Two floors keep the short forms distinct enough to read at a glance: never fewer than two letters, and a name that begins with its own family's prefix letters takes one more (recap → rec, because re is the family prefix itself).

The full name always works; a shorthand is derived, never learned, so knowing the rule for one name is knowing it for all. An ambiguous prefix — one that matches two or more names — is not a directive at all: never guess-fire. If a registry grows into a collision, the shortest forms simply grow with it, and full names are untouched.

Discovery — ask the prefix

A chat surface has no menu chrome, so discovery is an agent behavior, specified here — not a help document the user must find.

An invisible vocabulary is a dead vocabulary; this behavior is what keeps Directives visible at the exact moment of typing.

The agent's three obligations

  1. RECOGNIZE. Scan every user message for directive tokens before replying. Recognition is part of reading the message — it never depends on remembering past conversations.
  2. ACT. Honor the directive in the reply to that message (and in the work behind it, for do:). A bare re:voice makes this reply a voice note; a sticky mode colors every reply until cleared. If the platform genuinely cannot do what a directive asks (e.g. no voice capability), say so plainly in the reply — never silently substitute.
  3. PERSIST. When sticky state changes (on / off, or the plain-language equivalent), write the new state into your own persistent memory as a standing user preference, as part of the same turn, and confirm to the user what was saved ("Saved: voice replies on, until re:voice off."). The write is how the mode survives across sessions; the confirmation is how the user knows it did. Persist state only — never the vocabulary; that is re-read from the standard every time.

Directives shape how you reply and work, never whether you may act: they do not grant, widen, or waive any approval, safety, or credential rule of the host toolkit.

The families

PrefixDomain it steersLevel
re:The reply — form, channel, length, register, structure1 + 2
mem:The agent's memory of the user — save, prioritize, correct, recall2
do:The agent's work method — how the task is done2

Conformance levels. Level 1 is the ratified core: the grammar (families, bare vs on/off, stacking on axes, type-ahead with the ambiguity rule, mention-vs-use, bare-prefix discovery) plus the five core re: tokens. Level 2 is the ratified extensions: the re: structure tokens, the mem: family, and the do: family. An agent may be honestly Level-1 conformant without Level 2.

re: — the reply

Axes: Channel (voice, show) · Length (brief, deep) · Register (plain) · Structure (recap, steps, vs).

Level 1 — the core five:

TokenAxisClassShortestMeaning
re:voiceChannelmodevoReply with a voice note (spoken audio). A short text label may accompany the audio where the platform needs one; the substance is spoken. on = voice replies until cleared; off = back to text (the off reply is text).
re:showChannelactshAnswer visually instead of in prose; the agent picks the medium that fits — diagram (how it works), chart (numbers), map (places), generated image (seeing a thing). Minimal labeling text may accompany; an essay with a picture attached is a failed re:show. If no fitting visual is possible, say so and give the closest visual form (e.g. a structured table) — never silently fall back to prose.
re:briefLengthactbrThe short version: verdict first, essentials only, no background unless asked.
re:deepLengthactdeThe full version: thorough, research-grade, evidence and sources shown.
re:plainRegistermodeplPlain language: short, jargon-free, layman's terms. Bare form colors this reply; on makes it sticky until off.

Level 2 — structure:

TokenAxisClassShortestMeaning
re:recapStructureactrecCatch me up: where we are on this topic or conversation — state, decisions, what's open.
re:stepsStructureactstA numbered procedure, no essay: the how-to shape, one action per step.
re:vsStructureactvsA side-by-side comparison with trade-offs — options in parallel, differences named, no single-option prose.

mem: — the agent's memory of the user (Level 2)

Axes: Operation (save / fix — last wins) × Priority (pin). recall is a standalone read act and does not stack with writes.

TokenAxisClassShortestMeaning
mem: (bare)Operation (save)act—Save what this message designates — the fact, preference, or decision it names — into persistent memory as durable, and confirm exactly what was saved, in this reply. The family's most frequent act costs zero letters: the bare prefix is the command.
mem:pinPrioritymodifierpiSave it and mark it special priority: pinned memories surface first, are never pruned quietly, and are treated as load-bearing. Stacks with an operation (mem:fix/pin = a correction at top priority).
mem:fixOperationactfiThis message corrects an existing memory: replace the old version with this one, and confirm what changed.
mem:recall— (read)actreAnswer from memory first: search what is actually remembered about this, report it with its provenance where known — and say plainly when nothing is saved. (Its shortest form is unique inside mem: — and a free mnemonic: mem:re for re-call.)

mem: persistence is the deliberate counterpart of obligation 3: obligation 3 persists directive state automatically; mem: persists content the user points at, on request. The confirmation rule is the same — the user hears exactly what was saved, in the same turn.

do: — the work method (Level 2)

do: steers how the task is done. It is invisible in the reply's form except as evidence — which is precisely why it is not under re:.

TokenClassShortestMeaning
do:checkactchVerify before answering: check this answer's factual claims against live sources first, and say what was checked. Rigor priced per use — always-on verification taxes casual questions; never-on is negligence.
do:draftactdrProduce the artifact, take no external action: don't send, post, pay, or publish — hand it over for approval.

do:check/draft stacks legally: verified content, never executed.

Where sticky state lives (host-agnostic)

This spec specifies behavior, not format. Every agent platform has some durable memory — a memory file, a preferences store, a profile database. On a state change, write one plain statement of the current state into whatever that mechanism is, e.g.:

Directives state: voice replies ON (set by user via re:voice on, 2026-10-18). Reply with voice notes until re:voice off.

An agent loading the standard in a new session honors a state entry it finds, without being re-asked. Sticky state belongs to the agent's memory of the user — never write it into the standard's own files: the standard is shared by everyone who uses it; a user's state is not.

Mention vs use

A token can appear in a message without being used — quoted text, a code block, a forwarded message, or a conversation about directives ("what does re:voice do?", "add a directive to the spec"). Telling use from mention is the agent's judgment, by these defaults:

International by design

Directives is an international standard, and it stays one by refusing to fork.

The canonical registry is the agnostic core — semantics plus an interchange form. The canonical tokens stay identical in every language, like programming keywords, airport codes, and the ON/OFF printed on every device on earth: they are the form in which directives are interchanged between users, agents, and documents, and they always work, everywhere — one standard, or portability dies: a forked token set per language means a user can no longer carry their vocabulary across agents, platforms, or borders.

But canonical tokens alone would fail the standard's own first principle in most of the world: a name is only guessable cold to a speaker of its language. So languages do not enter by translation. They enter as packs.

Language packs

Each language gets an authored command pack: a full native vocabulary for the same directives, in the same architecture as the standard itself —

The pack files

Packs are files, mirroring how the standard's carriers organize everything else. A carrier of this standard keeps a directives-packs/ directory beside this spec, one file per language, named by its ISO 639-1 code (directives-packs/en.md, directives-packs/es.md, …). Each pack file carries, in order: a header block (pack code, language, author, date, provenance); a completeness line (which conformance levels it covers in full, and its gaps stated honestly); its vocabulary — every covered directive, each entry mapped to its canonical directive ID; and its own type-ahead table.

The authoring rule is part of the format: a pack is authored once, thoughtfully, per language — a one-time designed artifact, written from knowledge of the language, never machine-translated and never derived from another pack by substitution. An agent loads the core (this spec's canonical registry) plus the user's active pack; pack tokens resolve to canonical semantics, and the canonical tokens remain the fallback wherever a pack is partial. English (en) is the reference pack: it is the canonical set itself, written in pack format, and it ships with the standard as the worked example every future pack is modeled on.

The launch set

Packs follow the footprint: a standard's first packs belong to the languages of the places its carriers already serve. For Directives 1.0, the committed launch set is six packs:

PackLanguageFootprint it natively serves
enEnglish (reference — ships with 1.0)United States, Canada, United Kingdom, Australia, New Zealand, South Africa
esSpanishSpain
deGermanGermany, Austria, Switzerland
frFrenchFrance, Belgium, Canada
plPolishPoland
nlDutchNetherlands, Belgium

Six packs natively cover 13 of the 17 countries in the reference implementation's service footprint, and South Africa rides the English pack officially, as it does in that footprint. The named fast-follow tier is Scandinavia — sv (Swedish), no (Norwegian), fi (Finnish) — whose interim bridge is the world's highest English proficiency; that is stated as a bridge, not a dismissal, and the packs remain owed.

The other five packs in the launch set are registered and intended, to be authored by native-grade work — designed per language, never fabricated to fill a table. The selection rule outlives the set: when a carrier's footprint grows into a new country, its language's pack joins the roadmap by the same rule that chose these six.

The grammar itself needs no localization: the family: prefix shape, / stacking, and on/off as universal device symbols are script- and direction-neutral, and tokens — canonical or pack — embed as symbol islands inside any writing system, the way URLs do.

Governance — how the standard grows

The bench — designed, not ratified

These tokens are designed and one promotion away; they are not part of 1.0 conformance. Registry additions are minor versions, so the bench is a pipeline, not a rejection.

A note on what was killed on purpose, so the reasoning survives: re:eli5 (a childish register that misfires at work; plain is the grown-up word), re:draw (folded into show — one command per intent, not per output technology), do:undo (promises reversibility an agent often cannot deliver), do:fast (either always wanted — then it's a doctrine — or it means "skip verification," which no token may say), mem:all (destroys the signal that makes mem: and pin meaningful), and the task: / time: families (actions in the world, not steering — and a side door around approval rules). The full killed list, with evidence, is in DIRECTIVES_RESEARCH.md §8.

Conformance — test a fresh agent against this

A brand-new agent, given only a carrier of this standard and no user history, must behave as follows. This is the standard's test: if any line fails, the implementation — not the user — is wrong.

Worked example — Level 1.

  1. The user's first-ever message: "Book the venue and get me the quotes. re:voice" → The reply is a voice note containing the answer. Nothing is persisted (bare form).
  2. Next message: "re:voice on — and did the venue reply?" → The reply is a voice note; the agent writes "voice replies on" into its persistent memory; and the reply confirms the save.
  3. Next message, next day, new session: "Any news?" → The reply is a voice note — the persisted state was read back. No token was needed.
  4. The user: "re:voice off, thanks" → The reply is text; the agent clears the state in memory and confirms the clearance.
  5. The user: "How do the two providers compare on price? re:show" → The reply's substance is a chart (the medium that fits a price comparison), with at most a one-line takeaway as accompanying text. Nothing is persisted.
  6. The user: "Did the venue confirm? re:vo/br" → A short voice note: vo and br are the shortest unique prefixes of voice and brief. (Had either matched two names, it would not fire at all — ambiguous prefixes never guess.)

Worked example — Level 2.

  1. The user: "My sister's name is Ana. mem:" → The agent saves the fact to persistent memory and confirms exactly what was saved, in this reply.
  2. The user: "Correction — Ana spells it with one n now. mem:fix/pi" (or mem:fix/pin) → The agent replaces the stored fact with the corrected one, marks it pinned, and confirms both the change and the priority.
  3. The user: "What do you have saved about my family? mem:recall" → The agent answers from memory, citing what is actually saved — and would say so plainly if nothing were.
  4. The user: "Write the landlord email about the leak. do:draft" → The agent produces the email text and stops: it does not send it. The artifact is handed over for approval.
  5. The user: "Is that supplement actually safe with my prescription? do:check" → The agent verifies against live sources before answering and states what it checked.
  6. The user: "re:" (nothing else) → The agent replies with the re: registry — one line per token, in the user's language. Discovery is a behavior, not a document.

Checklist — Level 1.

Checklist — Level 2.