Skip to Content
Overview

POF

Portable Organization Format: a whole organization as one bundle of Markdown files with YAML frontmatter. Its roles, skills, policies, routines, objectives, channels and connections, with the links between them and, optionally, the history of every change. A person reads it in a text editor, a script parses it, an agent reads it as plain documents, and another system imports it.

This site describes revision 2026-10-16 of the format.

Here is one file of a real bundle, a Role:

roles/mayorista/atencion/ROLE.md
--- type: Role title: Atención mayorista name: atencion team: mayorista created_at: 2026-10-15T15:47:24.633Z updated_at: 2026-10-15T16:24:19.653Z --- # Identidad Atendés el canal mayorista de Casa Norte por WhatsApp: dueños de franquicias y clientes mayoristas del interior. # Marco operativo - Cada consulta se califica (skill `calificar-consulta-mayorista`): pedido, stock, reclamo u otro. - Los reclamos se escalan a Verónica con una nota en la conversación. # Propósito Que ninguna consulta mayorista quede sin respuesta más de 30 minutos. # Reglas - No das descuentos: la lista mayorista la define dirección.

The folder says which team the role belongs to and what it is called. The frontmatter says what kind of document it is. The body is what the role is told to do. Nothing in it needs a particular app to read.

A bundle, end to end

POF.md the manifest: type Bundle, format pof, revision COMMITS.md the commits (optional) roles/<team>/<slug>/ROLE.md skills/<slug>/SKILL.md policies/<slug>/POLICY.md objectives/<slug>/OBJECTIVE.md routines/<slug>/ROUTINE.md channels/<slug>/CHANNEL.md connections/<slug>/CONNECTION.md extensions/<system>/ what other systems add, under their own namespace

The core is the seven types every organization has, whatever system it runs on: Role, Skill, Policy, Objective, Routine, Channel and Connection. Everything else (a CRM’s deals, a data platform’s notebooks and wikis, an ERP’s invoices, a BI tool’s dashboards) travels as an extension, in its own folder, with its types prefixed by its namespace (hub.deal, data.Artifact). A reader keeps the extensions it does not know, intact.

Five rules that hold everywhere

  1. type is always present, capitalized in the core (Role, Policy) and namespaced in an extension (hub.deal).
  2. A field with no value is left out, never written empty.
  3. A piece’s identity is its folder: roles/mayorista/atencion is that role, wherever the bundle goes.
  4. Relations are paths inside the bundle, never ids.
  5. Access state (keys, credentials, sessions, who is allowed to connect) stays out. A Connection says what to connect to, never with which secret.