Skip to main content

Data Keywords

Three keywords for structured data — tables, rows, and quantitative metrics.

headers:​

Category: Data Arabic: أعمدة:

Table header row — declares the column labels for the following row: blocks.

Syntax​

headers: Col1 | Col2 | Col3

Examples​

headers: Department | Budget | Spent | Remaining
row: Engineering | USD 500,000 | USD 320,000 | USD 180,000
row: Marketing | USD 200,000 | USD 175,000 | USD 25,000
row: Operations | USD 150,000 | USD 98,000 | USD 52,000

Notes​

  • headers: declares the column labels; row: provides the data
  • Write headers: — columns: is not reserved; it parses as your own custom block
  • Tables can also be written using Markdown pipe syntax (see below)

row:​

Category: Data Arabic: صف:

Table data row — pipe-separated cell values. Must follow a headers: declaration.

Syntax​

row: Cell1 | Cell2 | Cell3

Examples​

headers: Name | Role | Email
row: Ahmed Al-Rashid | CEO | ahmed@acme.com
row: Sarah Chen | General Counsel | sarah@acme.com

Markdown pipe tables​

Tables can also be written using standard Markdown pipe syntax. The parser produces the same internal table structure.

| Header 1 | Header 2 | Header 3 |
| Cell 1 | Cell 2 | Cell 3 |
| Cell 4 | Cell 5 | Cell 6 |

Column alignment​

A separator row under the headers aligns its columns, as in GitHub Markdown: :--- left, :---: center, ---: right, --- the default (the document's start side). It works under a headers: line too:

headers: # | Description | Qty | Total
|---|---|---:|---:|
| 1 | Office chair | 12 | 3,000.00 |
| 2 | Meeting table | 3 | 11,245.00 |

The alignment is physical, as in GFM, and the header cell follows its column. A right-aligned column also uses tabular figures, so money lines up on its decimal point in Arabic and English alike. The separator row is kept on serialization (one with no colon carries nothing and is dropped, as before).

Dynamic table (templates)​

The each: property on the header row enables dynamic row expansion:

| Description | Qty | Rate | Total | each: items |
| {{item.description}} | {{item.qty}} | {{item.rate}} | {{item.total}} |
  1. Parser reads the each: array from data
  2. Auto-singularizes: items → item, orders → order
  3. Explicit naming: each: orders as order
  4. Expands one row per array element
  5. Zero items = zero rows; header always present

metric:​

Category: Data Arabic: مؤشر:

Quantitative measurement or KPI. Queryable, renderable as cards or grids, with optional target comparison and trend indicators.

Syntax​

metric: label | value: number | unit: string | period: timeframe | as-of: date | target: number | trend: direction | owner: team | source: origin

Properties​

PropertyTypeRequiredDescription
valuestringyesThe measured value
unitstringnoUnit of measurement (USD, %, hours, etc.)
periodstringnoReporting period (Q1 2026, March 2026, etc.)
as-ofstringnoDate the measurement was taken
targetstringnoTarget or goal value
trendstringnoup, down, flat
ownerstringnoResponsible team or person
sourcestringnoData source

Examples​

metric: Revenue | value: 1200000 | unit: USD | period: Q1 2026 | target: 1000000 | trend: up
metric: Customer Satisfaction | value: 4.6 | unit: /5 | period: March 2026 | target: 4.5
metric: Sprint Velocity | value: 42 | unit: points | period: Sprint 14 | target: 40 | trend: flat
metric: Subtotal | value: 24000 | unit: USD

Extension keywords​

Typed I/O parameter blocks live in the stable x-form: namespace; assert / secret remain experimental (x-exp:).

ExtensionPurpose
x-form: inputDeclare a typed input / form-field parameter
x-form: outputDeclare a typed output parameter
x-exp: assertTestable assertion — evaluable by CI
x-exp: secretSecret or credential reference (always redacted)

See the extensions overview in Keywords → for full syntax.