Skip to Content
The formatExtensions

Extensions

The core holds what every organization has. Everything else a system keeps (a CRM’s pipelines and deals, a data platform’s notebooks and wikis, an ERP’s invoices, a BI tool’s dashboards) travels as an extension: a folder under extensions/, named after the system’s namespace.

  • POF.md
      • EXTENSION.md
      • COMMITS.md
      • EXTENSION.md

Anyone can write an extension, for any system, without asking the spec: extensions/tango/ for an ERP, extensions/powerbi/ for dashboards.

EXTENSION.md

Every extension starts with its manifest:

extensions/hub/EXTENSION.md
--- type: Extension name: hub system: nicetry hub format: hub-export/1 spec: https://hub-a29r.onrender.com/llms.txt --- Los datos de hub de Casa Norte, como los exporta el engine.
FieldRequiredNotes
typeYesAlways Extension.
nameYesThe namespace, the same as the folder. It is listed in the bundle’s manifest under extensions.
systemYesThe system that produced it.
formatYesThe format of its contents, as that system names it (hub-export/1).
specNoA link to the documentation of that format.

Inside an extension

An extension follows the same rules as the core: Markdown with YAML frontmatter, type always present, empty fields left out, identity by folder, relations as paths, access state left out. Beyond that, its layout is its system’s.

Its types carry its namespace, so a document says which system it belongs to wherever it ends up:

extensions/data/notebooks/direccion/NOTEBOOK.md
--- type: data.notebook title: Dirección tags: - direccion created_at: 2026-10-15T15:57:21.575Z updated_at: 2026-10-15T15:57:21.575Z --- Las notas de la reunión de dirección de los lunes: riesgo, dato y decisión.

A type without a dot is a core type; a type with one (hub.deal, data.Artifact, loops.Run) belongs to the extension named before the dot. An extension can describe its own types (their fields, what each one means) in documents of its own, so that a reader understands them without knowing the system. An extension can carry binary files too.

References

Inside an extension, paths are relative to its folder. To point outside it, at the core or at another extension, an extension writes a path from the root of the bundle with a leading /: /roles/mayorista/atencion, /extensions/data/artifacts/stock. The core points into an extension through its folder, extensions/<system>/…. A reader resolves a path that starts with / against the root of the bundle. See Paths across the bundle.

History

An extension can keep its own history (its COMMITS.md and HISTORY.md), with the same shape as the core’s.

Readers keep what they do not know. A reader that does not know an extension keeps it intact: it neither drops it nor rewrites it. An importer takes the core and the extensions it knows how to read, and leaves the rest as it found it.