Skip to main content

Core Concepts

Eight ideas that explain everything in IntentText.

1. One line, one intent

Every block in a .it file follows one pattern:

keyword: value | property: x | property: y
text: This is a text block
task: Review the contract | owner: Ahmed | due: 2026-04-15

No nesting. No indentation rules. No closing tags. The keyword tells you what the line is. The value after the colon is the content. Properties follow pipes.

Even code follows this rule. Triple backticks delimit the value — think of it like a stringified JSON object placed as the keyword's value:

code: ```const total = items.reduce((s, i) => s + i.price, 0);``` | lang: js

Multi-line code is the same pattern — the backticks wrap the value across lines:

code: ```
SELECT *
FROM users
WHERE active = true
``` | lang: sql

The code: keyword isn't special. Every block is keyword: value | properties. The backticks are just value delimiters — like quotes around a string.

2. Keywords

IntentText has a stable 37-keyword canonical core, plus aliases and extension keywords for specialized domains.

Keywords are grouped into 7 categories:

CategoryKeywordsPurpose
Identitytitle:, summary:, meta:, context:, track:, agent:, model:What the document is
Contenttext:, quote:, cite:, warning:, danger:, tip:, info:, success:, code:, image:, link:, def:, figure:, contact:, byline:, epigraph:, caption:, footnote:, dedication:What the document says
Structuresection:, sub:, break:, ref:, deadline:, embed:, toc:How the document is organized
Datacolumns:, row:, input:, output:, metric:Typed data blocks
Agentstep:, gate:, trigger:, signal:, decision:, memory:, prompt:, tool:, audit:, done:, error:, result:, handoff:, wait:, parallel:, retry:, call:, loop:, checkpoint:, import:, export:, progress:, task:, ask:, assert:, secret:Workflow for AI agents
Trustapprove:, sign:, freeze:, revision:, policy:, amendment:, history:Document integrity
Layoutpage:, font:, header:, footer:, watermark:, signline:, divider:Print and PDF rendering

Every keyword has a purpose. Use text: for text, task: for trackable work, metric: for measurable values, deadline: for dates with consequences.

3. Pipe properties

Properties follow the content, separated by pipes:

task: Review the contract | owner: Ahmed | due: 2026-04-15 | status: pending

The first value after the colon is always the content. Everything after a | is a property. Properties are key: value pairs.

Some keywords have specific properties — task: understands owner:, due:, status:. Others have general properties — any keyword can use style properties like color:, weight:, align:.

4. Sections

Sections organize blocks into groups:

section: Scope
text: The project covers phases 1 through 3.

section: Timeline
deadline: Phase 1 complete | date: 2026-06-01
deadline: Phase 2 complete | date: 2026-09-01

section: renders as H2. sub: renders as H3. Blocks belong to the section above them.

5. The history boundary

The history: keyword separates the document from its history:

title: Consulting Agreement
text: Terms and conditions...

approve: Reviewed | by: Sarah Chen | role: Legal
sign: Ahmed Al-Rashid | role: CEO
freeze: | status: locked

history:
revision: | version: 1.0 | at: 2026-03-06 | by: Ahmed | change: Initial draft

Everything above history: is the document. Everything below is machine-managed history. You read history. You don't edit it.

6. Templates vs documents

Same format, different intent.

A document has real data:

title: Invoice INV-2026-042
contact: Acme Corp | role: Client | email: billing@acme.com

A template has placeholders:

title: Invoice {{invoice.number}}
meta: | type: template
contact: {{client.name}} | role: {{client.role}} | email: {{client.email}}

Merge a template with data:

intenttext invoice-template.it --data client-data.json --html

The same parser handles both. Templates are just documents with {{variables}}.

7. The trust chain

Documents follow a lifecycle: draft → tracked → approved → signed → frozen → amended.

track: | version: 1.0 | by: Ahmed          // activate history
approve: Legal review | by: Sarah Chen // named approval
sign: Ahmed Al-Rashid | role: CEO // integrity hash seal
freeze: | status: locked // seal — no more edits
amendment: Payment terms | section: Payment | was: 30 days | now: 15 days

Once frozen, a document can only change through formal amendment: blocks. The original seal is preserved. The amendment carries its own approval chain.

8. The .it file is yours

IntentText is an open format. Your .it files are plain text — readable in any editor, storable in any VCS, parseable with any language.

No proprietary format. No vendor lock-in. No binary blobs. The file is yours.


Next: Build your first real document →