Profundización y apéndice

La carpeta de datos y el formato de archivo

Contenido

La carpeta de datos (en el mundo de Markdown también llamada “vault”) es la carpeta en la que TandemLoop guarda todos tus datos. Se compone solo de archivos de texto normales, Markdown con encabezados YAML, y está donde la elijas al configurar la app: en local o en iCloud Drive. Así la pueden leer otras herramientas, los agentes de IA y, por supuesto, tú mismo con cualquier editor de texto.

Estructura de carpetas

{carpeta de datos}/
  AGENTS.md                  ← Instrucciones para agentes de IA
  _inbox/                    ← Tareas de la captura rápida (Bandeja de entrada GTD)
  bereiche/                  ← Tus áreas (una subcarpeta cada una)
    {área}/
      area_{slug}.md         ← Metadatos del área
      _projects/             ← Proyectos del área
      _singles/              ← Tareas independientes directamente en el área
      _folders/              ← Carpetas opcionales
        {carpeta}/
          fld_{slug}.md      ← Metadatos de la carpeta
          _projects/
          _singles/
  _config/                   ← Configuración (etiquetas, atributos, temas, presentación, idioma)
    tags.yaml
    attributes/              ← Atributos propios (un archivo por atributo)
      {clave}.yaml
    themes/                  ← Temas (un archivo por tema)
      {clave}.yaml
    agent.yaml               ← Último ciclo de tu agente de IA (lo escribe el agente)
    language.yaml            ← Idioma de la carpeta de datos
  _views/                    ← Vistas guardadas (también en subcarpetas)
    vw_{slug}.yaml
  _proposals/                ← Propuestas de la IA
    prop_{slug}.md
  _archive/                  ← Entidades archivadas (no editar a mano)
  _conflicts/                ← Copias de conflictos de iCloud guardadas
  _system/                   ← Esquema y documentos de referencia generados

Los directorios con el prefijo _ son carpetas del sistema y los gestiona la app.

ID de entidades y prefijos de archivo

Cada entidad lleva en el campo id de su frontmatter un ID estable basado en UUID. El nombre del archivo es independiente de él y sigue un slug legible. Solo las vistas, las carpetas de vistas (vf_…) y las propuestas llevan su slug en el ID. Los archivos antiguos pueden tener todavía ID de tipo slug (por ejemplo, area_arbeit).

Entidad Prefijo ID de ejemplo Nombre de archivo de ejemplo
Tarea tsk_ tsk_f66f123ebac0402f… tsk_logo-entwerfen.md
Proyecto prj_ prj_03ebb2b6286f4a9f… prj_website-relaunch.md
Área area_ area_4f8e2d1c0b9a4e… area_arbeit.md
Carpeta fld_ fld_a1b2c3d4e5f647… fld_clientes.md
Hito ms_ ms_9fd12a6f440a4c… ms_sprint-1.md
Etiqueta tag_ tag_a1b2c3d4e5f647… (en _config/tags.yaml)
Vista vw_ vw_signal-tasks vw_signal-tasks.yaml
Propuesta prop_ prop_inbox-aufraeumen prop_inbox-aufraeumen.md
Atributo attr_ attr_3f2e9a0b4c5d… _config/attributes/cliente.yaml
Tema thm_ thm_7c1d0e9f2a4b… _config/themes/nordlicht.yaml

El contrato de datos

El formato de archivo sigue tres principios:

Lectura tolerante: La app lee los archivos aunque falten campos, contengan valores de estado desconocidos o procedan de versiones anteriores. Así, un elemento editado a mano o creado por un agente de IA no bloquea toda la app.

Escritura estable: Al actualizar un archivo, la app conserva el orden de los campos existentes y la información que ya contiene. Los campos desconocidos que haya añadido un editor externo se mantienen. Los campos incorporados más tarde, como un aviso (remind_at), la app los añade al final del frontmatter; los campos vacíos aparecen como null, y solo algunos, como remind_at y repeat:, faltan por completo mientras no tengan valor.

Legible por máquinas: Como se trata de archivos Markdown en texto plano, los agentes de IA y otras herramientas pueden leer la carpeta de datos directamente. Qué cambios pueden hacer directamente lo explica el capítulo Colaborar con agentes de IA.

Atributos propios

Los atributos propios (en los ajustes, en Atributos) amplían las tareas, proyectos e hitos con campos adicionales. Cada atributo es un pequeño archivo YAML en _config/attributes/; el nombre del archivo es la clave del atributo:

key: cliente
name: Cliente
type: select
applies_to:
  - task
  - project
options:
  - ACME
  - Contoso
description: Para qué cliente se realiza el trabajo.

Los valores se guardan en el frontmatter del archivo correspondiente, en attributes::

attributes:
  cliente: ACME
  presupuesto: 12000
  entrega: '2026-11-30'
  • Tipos: text, number (número), date ('AAAA-MM-DD'), boolean (Sí/No), select (una de las opciones), url (enlace).
  • Las claves constan de minúsculas, dígitos y guiones bajos, y no pueden coincidir con un campo integrado como status o due_date. Una clave no se puede cambiar después.
  • Los campos vacíos no se guardan. Eliminar un atributo no borra sus valores: se quedan en los archivos y aparecen en el Inspector como una fila de solo lectura.
  • En las vistas, los atributos están disponibles como campos attributes.clave para filtrar, ordenar y agrupar.

Los agentes de IA pueden crear atributos ellos mismos: Si le pides a un agente, por ejemplo, “Crea un atributo Presupuesto para proyectos”, escribe un archivo en _config/attributes/. La app lo detecta al instante y muestra el campo nuevo.

Tareas recurrentes

La regla de repetición está en el frontmatter de la tarea, en repeat:; por ejemplo, cada lunes:

repeat:
  unit: week
  days: [mon]

unit es day, weekday, week, month o year; además, de forma opcional, every (intervalo), day o bien nth + weekday (reglas mensuales), from: completion (a partir de completarla) y until o count como final. Las claves series, occurrence y next las gestiona la propia app. La referencia completa para agentes está en _system/docs/data-model.md.

Temas

Cada tema es un archivo YAML en _config/themes/; el nombre del archivo sin extensión es su clave (nordlicht.yaml → nordlicht). Un tema solo indica los colores que difieren de los estándar:

name: Nordlicht
description: Petróleo frío con superficies oscuras.
appearance: system        # system, light o dark
font_design: rounded      # default, rounded, serif o monospaced
colors:
  primary:
    light: "#0F766E"
    dark: "#2DD4BF"
  danger: "#E5484D"       # un valor vale para claro y oscuro

Los colores se escriben como valor hexadecimal entre comillas, y con opacidad como #RRGGBBAA. Qué claves de color existen, cuáles se derivan de otras y qué valores predeterminados se aplican está en _system/docs/themes.md; TandemLoop mantiene esta referencia para que los agentes de IA puedan diseñar temas adecuados. Cada dispositivo guarda por su cuenta qué tema está activo; los archivos de tema se sincronizan con la carpeta de datos.

El bloque de relaciones

Cada archivo de tarea, proyecto, hito y carpeta (salvo las tareas de la Bandeja de entrada) contiene al final del cuerpo una breve sección legible por máquinas que guarda los vínculos con los elementos padre como enlaces Markdown relativos; aquí, para una tarea del proyecto “Website Relaunch”:

<!-- tandemloop:relations:start -->
[Bereich: Arbeit](../../../area_arbeit.md) · [Projekt: Website Relaunch](../prj_website-relaunch.md)
<!-- tandemloop:relations:end -->

La app mantiene este bloque actualizado automáticamente y no hace falta editarlo a mano; los agentes de IA lo omiten en los archivos nuevos y lo quitan al mover un elemento. Permite que las herramientas y los agentes entiendan la jerarquía también sin el índice en memoria de la app.

Idioma de la carpeta de datos

Los pocos textos que TandemLoop escribe por sí mismo en los archivos (los rótulos del bloque de relaciones (Bereich: / Area:…), los encabezados del historial de una tarea (## Du — 21.3.2026 / ## You — 2026-03-21), las secciones de una propuesta (## Diskussion / ## Discussion) y las instrucciones para agentes de IA (AGENTS.md, _system/docs/)) siguen el idioma de la carpeta de datos. Se indica en _config/language.yaml:

language: en

Las carpetas de datos nuevas están en inglés; las carpetas sin este archivo (de versiones anteriores) siguen en alemán. El idioma de la carpeta de datos no depende del idioma del dispositivo: así todos los dispositivos escriben los mismos archivos. Al leer, TandemLoop reconoce ambas variantes.

Editar directamente en la carpeta de datos, con cuidado. Puedes abrir los archivos con cualquier editor de texto. Ten en cuenta lo siguiente: los ID no se deben cambiar nunca; las fechas van entre comillas simples en el frontmatter de los archivos Markdown ('2026-03-14T09:30:00') y sin comillas en los archivos de vistas y de configuración (_views/, _config/); la carpeta _archive/ no debe editarse a mano. Para los cambios de estructura (mover proyectos, renombrar etiquetas), es mejor usar la app o el mecanismo de propuestas; si no, el índice interno puede quedar incoherente.

Varios dispositivos: sincronización mediante iCloud Drive

TandemLoop no tiene servidor propio y no envía datos a internet por su cuenta. Como tu carpeta de datos es una carpeta normal, la usas en varios dispositivos poniéndola en iCloud Drive. iCloud mantiene los archivos al día entre el Mac, el iPad y el iPhone; TandemLoop lee la misma carpeta en cada dispositivo y descarga de iCloud los archivos que falten cuando los necesita.

Ajustes › Carpeta de datos › Cambiar carpeta de datos… › elige un directorio en iCloud Drive

No escribas en dos dispositivos a la vez. Los servicios en la nube sincronizan archivo por archivo y no conocen la estructura interna de tu carpeta de datos. Por eso, edita tus datos en un solo dispositivo a la vez siempre que puedas y espera a que termine la sincronización antes de usar el siguiente; si no, pueden surgir copias en conflicto de algunos archivos. Lo mismo ocurre si una herramienta de IA accede a la vez a la misma carpeta de datos en la nube.

La sincronización no sustituye a una copia de seguridad. Una sincronización en la nube también replica las eliminaciones en todos los dispositivos. Para tener copias de seguridad de verdad, usa además, por ejemplo, Time Machine o el historial de versiones de tu servicio en la nube.