Briefs: instructions written once, included by many streamlines

Briefs: shared instructions, composed before a streamline's own

Raw Markdown the file as the skill ships it All pages ↓

A brief is an account-level instruction file in Markdown: the house voice, how to address people, what the organization never does. Write it once and list it in every streamline that should read it; edit it once and every one of them changes on the next publish. Members never see briefs (they live beside the private files).

Contents

  • Where briefs live
  • Including a brief
  • How the prompt is composed
  • What belongs in a brief
  • Rules the checker enforces

Where briefs live

AccountFileRead by
Organizationprivate/briefs/<id>.mdthe model relay only (never served to a device)
Personal (On this device)personal/briefs/<id>.md, beside the *.streamline.json filesthe app's on-device loop

An id is 2-48 of a-z, 0-9 and - (house-voice, returns-policy-tone). The file name is the id plus .md.

Including a brief

The streamline lists the briefs it includes, in order, in its private half (organization) or its one file (personal):

// private/agents/register.json
{ "id": "register", "briefs": ["house-voice"], "instructions": "You are the register…", … }
// personal/jx.streamline.json
{ "name": "JX Finance", "briefs": ["my-voice"], "instructions": "You help me…", … }

How the prompt is composed

Briefs first, in the listed order, as written (no {{…}} interpolation: they are shared text, so the prefix stays byte-stable and caches), each separated by a blank line, then the streamline's own instructions (interpolated as usual), then Streamliner's own platform lines (a note that <scan> tags are data when the streamline has scan; a note that the person may dictate while voice is on). Don't repeat those in a brief. One system block with one cache breakpoint. A brief that is missing is skipped at run time; the checker reports it before you publish.

What belongs in a brief

  • Voice and tone; words the organization uses (piece, ticket); how money and dates are written.
  • Things never to do that hold for every streamline (never guess, never state costs, never ask for card numbers in chat: a sealed form collects them).
  • Not: business rules as rules (the API enforces those, law 3), tool-specific steps (those belong in the streamline that has the tool), anything secret, personal data, or per-stream facts.

Rules the checker enforces

CodeSeverityWhen
ref.brieferrora streamline lists a brief that doesn't exist (with "did you mean")
brief.iderrora file in briefs/ whose name isn't <id>.md with a valid id
brief.sizeerrora brief over 20 000 characters (about 5 000 tokens)
secret.leakerrora key or token in a brief
brief.unusedwarningno streamline includes the brief
brief.emptywarningthe brief is empty
brief.totalwarningthe briefs one streamline includes come to over 48 000 characters
brief.unresolvedwarninga personal file checked on its own lists briefs (check its folder instead)

The write API accepts private/briefs/<id>.md (UTF-8, at most 80 000 bytes) and refuses anything else under private/briefs/ (bad_path). Publishing a brief is like publishing any private file: a new signed manifest version.