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 owncustomblock - 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}} |
- Parser reads the
each:array from data - Auto-singularizes:
items→item,orders→order - Explicit naming:
each: orders as order - Expands one row per array element
- 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
| Property | Type | Required | Description |
|---|---|---|---|
value | string | yes | The measured value |
unit | string | no | Unit of measurement (USD, %, hours, etc.) |
period | string | no | Reporting period (Q1 2026, March 2026, etc.) |
as-of | string | no | Date the measurement was taken |
target | string | no | Target or goal value |
trend | string | no | up, down, flat |
owner | string | no | Responsible team or person |
source | string | no | Data 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:).
| Extension | Purpose |
|---|---|
x-form: input | Declare a typed input / form-field parameter |
x-form: output | Declare a typed output parameter |
x-exp: assert | Testable assertion — evaluable by CI |
x-exp: secret | Secret or credential reference (always redacted) |
See the extensions overview in Keywords → for full syntax.