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:
---
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 namespaceThe 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
typeis always present, capitalized in the core (Role,Policy) and namespaced in an extension (hub.deal).- A field with no value is left out, never written empty.
- A piece’s identity is its folder:
roles/mayorista/atencionis that role, wherever the bundle goes. - Relations are paths inside the bundle, never ids.
- Access state (keys, credentials, sessions, who is allowed to connect) stays out. A Connection says what to connect to, never with which secret.