Skip to content

Syntax Reference ​

Fractalic syntax = Standard Markdown (structure, prose) + Lightweight YAML operation blocks (actions). The interpreter walks the file linearly, builds an AST (headings, operations, generated nodes), and applies operations in order.

Markdown + YAML Hybrid Structure ​

  • Headings (#, ##, ###, …) define knowledge blocks.
  • Paragraphs, lists, code fences belong to the nearest preceding heading.
  • An operation block: a line starting with @operationName followed by YAML.
  • Content up to next heading OR next @operation lines belongs to the current block.
markdown
# Research Plan {id=plan}
We will investigate three competitors.

@llm
prompt: "List the competitors in a table."
use-header: "# Competitor Table"

Operation Block Anatomy ​

markdown
@llm                                 # 1) Operation identifier
prompt: |                            # 2) Literal prompt (multi-line YAML scalar)
  Produce a structured outline.
block:                               # 3) Block references
  block_uri: context/*
model: claude-3-5-sonnet             # 4) Logical model alias (provider inferred)
mode: append                         # 5) Merge strategy
use-header: "# Outline"             # 6) Wrapper heading (or 'none')
header-auto-align: true              # 7) Re-level headings
save-to-file: outputs/outline.md     # 8) Persist raw output

Headers, Auto-Alignment, and use-header Strategies ​

Default wrapper headings:

OperationDefault Wrapper
@llm# LLM Response block
@shell# OS Shell Tool response block
@return# Return block
@importnone
@runnone

Rules & patterns:

  • Quote any header starting with # (YAML comment otherwise).
  • use-header: none → raw content only.
  • header-auto-align: true shifts top-level heading depth relative to current structural depth.
markdown
## Section
@llm
prompt: "Generate a 2-level outline."
header-auto-align: true

Raw insertion (no extra heading):

markdown
@llm
prompt: "Return ONLY a JSON object."
use-header: none

Block Reference Syntax ​

Forms:

  • Direct id: vision
  • Hierarchical path: research/findings
  • Wildcard branch: research/* (parent + descendants)
  • Multiple via array:
yaml
block:
  - research/*
  - decisions

Notes: Order preserved; forward references allowed; missing block → error.

Special Values & Merge Modes ​

use-header: none suppresses wrapper. Merge mode:

  • append (default) add after target / op
  • prepend insert before target
  • replace swap target content atomically If to: absent → anchor is operation position.

Prompt Assembly Order (@llm) ​

  1. Referenced block contents (ordered)
  2. Literal prompt
  3. Media attachments (provider-handled)
  4. System prompts (implicit) Missing both prompt & block → error.

Parameter Normalization & Model Inference ​

model ​

Alias looked up in [settings] of settings.toml. Dots/hyphens/underscores normalized.

stop-sequences ​

Substrings that terminate generation early (prevent spill‑over / unwanted sections).

yaml
stop-sequences:
  - "\n```"
  - "\n# "

tools-turns-max ​

Upper bound on model ↔ tool reasoning iterations.

use-header ​

Default per table above; set to none for structured outputs (JSON, code).

header-auto-align ​

Re-level generated heading hierarchy under current depth.

save-to-file ​

Store raw model output outside context to reduce tree bloat.

media ​

Attach files for multimodal models (images, pages, etc.).

context ​

auto (default) may include ambient prior headings when only prompt provided. none ensures isolation (only prompt + system). (If block used, ambient context is never auto-attached.)

provider ​

Optional explicit override; normally inferred from model.

Unrecognized fields ​

Ignored safely (future-proofing).

Beginner checklist:

  • Need raw JSON? use-header: none + consider stop-sequences.
  • Tools enabled? Set tools-turns-max.
  • Large output? Use save-to-file.
  • Deep nesting? header-auto-align: true.

Arrays & Multi-Line Scalars ​

markdown
@shell
prompt: |
  set -e
  echo "Building"
  ls -1

Multiple blocks:

markdown
@llm
prompt: "Compare the two sections."
block:
  - old-version/*
  - new-version/*

Common Pitfalls ​

IssueCauseFix
Block not foundTypo / missing idVerify kebab-case or add explicit {id=...}
Duplicate IDsAuto-generated collisionsAdd explicit IDs
Wrong heading depthForgot header-auto-alignEnable or edit prompt
Unexpected wrapperDefault header applieduse-header: none
Empty responseProvider/tool errorCheck logs, keys, tool outputs

Style Recommendations ​

  • Put large reference material in earlier knowledge blocks, keep prompts terse.
  • Prefer explicit IDs for frequently reused anchors.
  • Use wildcards sparingly—token cost scales.
  • Early iteration: append for provenance; later: replace for cleanliness.
  • Label important generated sections with stable headings for downstream reuse.

Supplemental Clarifications (Added, Not Altering Original Text Above) ​

  • Clarified that when block is provided, ambient context auto-inclusion does not occur regardless of context value.
  • Reinforced quoting rule for use-header values beginning with #.
  • Added beginner checklist grouping advanced parameters.

Released under the MIT License.