AGENTS.md para TMF

Sistema de context files para estandarizar como trabajamos con agentes AI en todos nuestros repos

Pendiente de aprobacion 25 Marzo 2026

📋 Votacion del equipo

💡 En 30 segundos

AGENTS.md son archivos markdown que viven en nuestros repos y le dicen a los agentes AI como escribir codigo que siga nuestros patrones. Es como un README, pero para agentes.

Ponemos las reglas una vez, y cualquier agente que toque el repo las sigue automaticamente. No mas "olvidaste el tenant_id" o "eso no va en localStorage".

El problema con Claude Code

Casi todo el equipo usa Claude Code, que tiene su propio formato (CLAUDE.md) y no carga AGENTS.md automaticamente. La solucion: cada repo tiene un CLAUDE.md minimo que dice See @AGENTS.md, y Claude lo lee. Asi el contenido real vive en AGENTS.md (compatible con todas las herramientas) y Claude lo carga via referencia.

🌍 Soporte por herramienta

HerramientaArchivo nativoAGENTS.md?
Claude CodeCLAUDE.mdVia @AGENTS.md
Codex (OpenAI)AGENTS.mdNativo
OpenCodeAGENTS.mdNativo
Gemini CLIGEMINI.mdSi
Cursor.cursorrulesSi
GitHub Copilotcopilot-instructions.mdSi
Windsurf / Amp / Devin-Si

AGENTS.md es estandar de la Linux Foundation (AAIF) desde dic 2025. +60.000 repos en GitHub.

🏗️ Nuestra estrategia

AGENTS.md = Fuente de verdad

Todo el contenido de patrones y arquitectura vive aqui. Compatible con todas las herramientas.

CLAUDE.md = Puente

Minimo: solo See @AGENTS.md para que Claude Code cargue las reglas.

🌳 Estructura por niveles

Cada repositorio es su propia raiz. El AGENTS.md de la raiz define las reglas globales de ese repo, y los subdirectorios especializan:

RAIZ Raiz del repositorio

Reglas globales del repo: stack, naming, arquitectura, seguridad. Se carga SIEMPRE. Max ~100 lineas.

SUB Subdirectorio

Reglas concretas de esa parte del codigo. Solo se carga cuando tocas archivos ahi.

📝 Que poner (y que no)

Decisiones de arquitectura que no se ven leyendo un solo archivo
Como crear cosas nuevas paso a paso (nuevo servicio, nuevo hook, nuevo componente)
Reglas criticas tipo NEVER (no localStorage, no queries sin tenant_id)
Convenciones no obvias (naming de hooks, return shape, response format)
Lo que se ve en el codigo ("usamos Express" si ya hay package.json)
Archivos generados por AI (pueden ser contraproducentes)
Mas de 100 lineas por archivo (dividir en sub-directorios)

🎯 Ejemplo real: tmf-services

📁tmf-services/
├── 📄AGENTS.mdRAIZ
├── 📄CLAUDE.mdSee @AGENTS.md
├── 📁services/
│ └── 📄AGENTS.mdSUBComo crear un servicio nuevo
└── 📁shared/
└── 📄AGENTS.mdSUBReglas de utilidades compartidas

tmf-services/AGENTS.md RAIZ

# tmf-services

## Architecture
- Multi-tenant: EVERY query MUST .eq("tenant_id", tenantId)
- Tenant context from x-tenant-id header, extracted by middleware
- Services communicate via internal HTTP, propagating x-tenant-id
- If called service fails, log but don't fail the request (graceful degradation)

## Service structure
- src/index.ts Express app | src/config.ts Zod env | src/routes/ public + internal
- Config: always Zod parsing process.env. No dotenv, vars come from Docker
- Public routes: /api/{resource} | Internal: /internal/{resource}
- Every service MUST have openapi.yaml. Run generate:skills after API changes

## Rules
- NEVER query without tenant_id filter
- NEVER use Supabase anon key -- service role only
- /health always excluded from auth middleware
- CREATE: always { ...req.body, tenant_id: req.tenantId }
- Response format: { data, count, limit, offset }

tmf-services/services/AGENTS.md SUB

# Creating a new service

1. Copy patients-svc/ as template to tmf-{domain}-svc/
2. Update config.ts with PORT + dependent service URLs
3. Create routes/{resource}.ts with CRUD + tenant filtering
4. Create routes/internal.ts for service-to-service endpoints
5. Write openapi.yaml
6. Add to docker-compose
7. Run npm run generate:skills

Validation: Zod schemas on POST/PATCH, return error.flatten() on 400
Pagination: query params limit (default 20) + offset (default 0)

🔗 Referencias

agents.md -- Estandar oficial (Linux Foundation / AAIF)

Claude Code docs -- Documentacion de CLAUDE.md y memory

ETH Zurich paper -- Estudio sobre efectividad de context files

OpenAgentsControl -- Inspiracion original para este ADR

ADR completo en Notion -- Version detallada con todos los ejemplos