Un estándar abierto para la gestión de contexto, memoria y automatización de agentes en equipos de desarrollo multidisciplinarios.
| Campo | Valor |
|---|---|
| Versión | 1.0.2 |
| Estado | RFC — Request for Comments |
| Licencia | MIT |
| Audiencia | Desarrollo, DevOps, Data, diseño y cualquier rol que use agentes de IA |
| Compatibilidad | Agnóstico — cualquier IDE, agente, LLM o proveedor |
| Repositorio | github.com/shellaquiles/KARNITAS |
- ¿Qué es KARNITAS?
- El problema
- Principios de diseño
- Alcance y límites
- Arquitectura
.agents/ - SDD integrado
- Política anti-alucinación
- Protocolo para agentes
- Modelo de madurez
- Adopción gradual
- Compatibilidad
- Usar este repositorio
- Contribuir
KARNITAS define cómo estructurar el contexto operativo dentro de un repositorio para que cualquier agente de IA —independientemente del IDE, LLM o proveedor— colabore de forma coherente, segura y predecible junto a equipos humanos.
La idea central: un directorio .agents/ en la raíz del proyecto como única fuente de verdad (SSOT) compartida entre humanos y agentes. Ahí viven reglas, restricciones, memoria histórica, governance y —con SDD integrado— las especificaciones de cada feature.
KARNITAS no es un framework, no es una librería y no es una plataforma. Es una convención de archivos (Markdown, JSON) y prácticas adoptables de forma incremental con las herramientas que ya usas.
- Equipos con múltiples agentes o IDEs en paralelo (Cursor, Copilot, Claude, Aider, Continue…)
- Equipos multidisciplinarios (producto, diseño, datos, DevOps, ingeniería)
- Proyectos que buscan consistencia entre agentes sin depender del prompting manual de cada persona
- Quienes han visto a un agente proponer algo que el equipo ya había descartado hace meses
| Problema | En la práctica |
|---|---|
| Alucinaciones técnicas | El agente sugiere librerías o patrones que el equipo decidió no usar |
| Pérdida de memoria | Un bug resuelto vuelve a aparecer en otra sesión |
| Inconsistencia entre agentes | Cursor, Copilot y Claude proponen cosas distintas sobre el mismo tema |
| Prompting manual | La calidad depende de cuánto contexto escriba cada persona |
| Stack desviado | Dependencias o servicios no aprobados aparecen en PRs |
| Conocimiento tribal | Solo quien lleva más tiempo sabe por qué se decidió así |
KARNITAS resuelve esto haciendo el contexto explícito, versionado en git y consumible por cualquier agente.
Todo contexto relevante —reglas, restricciones, decisiones, specs— vive en .agents/. Si está en dos sitios, con el tiempo divergen.
Cargar solo lo necesario por tarea. index.json define qué leer siempre (always_load) y qué cargar bajo demanda (context_map). No todo .agents/ en cada consulta.
El agente no adivina stack, arquitectura ni convenciones. Si no está en .agents/, no existe para el agente.
Decisiones (ADRs) y errores resueltos (known_issues.md) sobreviven a rotaciones de equipo y sesiones del agente.
SDD integrado: la especificación es el artefacto primario; el código es su expresión.
Los agentes aceleran; no sustituyen revisión humana ni criterio del equipo.
Funciona con cualquier IDE, agente, LLM, lenguaje y stack. Sin dependencias propietarias.
| KARNITAS sirve para | KARNITAS no es para |
|---|---|
| Contexto estructurado para agentes de IA | Reemplazar documentación técnica completa |
| Persistir decisiones y su justificación (ADRs) | Guardar secretos, credenciales o PII |
| Evitar repetir errores históricos | Sustituir code review o aprobaciones humanas |
| Unificar comportamiento de múltiples agentes | Sistema de logs en tiempo real |
| Escalar hacia automatización multi-agente | Imponer un proveedor o modelo específico |
| Proyectos de cualquier tamaño | La única documentación del proyecto |
Se añade .agents/ a la raíz del repositorio del proyecto (no hace falta implementar todo el primer día; ver adopción gradual).
Incluida en archetype/:
.agents/
├── index.json
├── core/
│ ├── constraints.md # always_load
│ └── directives.md # always_load
├── knowledge/
│ ├── sdd.md
│ └── domain.md
├── governance/
│ ├── architecture.md
│ └── security.md
├── specs/_templates/ # spec.md, plan.md, tasks.md
├── skills/ # sdd_specify … sdd_implement
├── workflows/
│ └── spec_driven.yaml
├── agents/ # specifier → planner → implementer
├── tools/
│ ├── mcp_servers.json
│ └── openapi_specs/
├── memory/
│ ├── ADRs/
│ └── known_issues.md
└── evaluation.md
adapters/ # entrypoints delgados por IDE (no duplicar skills)
├── cursor/rules/karnitas.mdc
├── copilot/copilot-instructions.md
├── claude/CLAUDE.md
├── aider/.aider.conf.yml
└── continue/config.json
Skills y procesos SDD viven solo en .agents/skills/. Los adaptadores enrutan hacia ahí.
| Ruta | Responsabilidad |
|---|---|
skills/ |
Instrucciones por fase SDD (macros del agente) |
workflows/ |
Orquestación multi-paso (spec_driven.yaml) |
agents/ |
Roles, handoffs y skills asignados |
tools/ |
MCP y contratos OpenAPI disponibles |
Todo agente compatible lee este archivo primero. Define:
always_load— Contexto mínimo en cada sesión (en el arquetipo: 2 archivos encore/)context_map— Qué cargar según el tipo de tarea (sdd,governance,memory…)sdd.skills— Skill por fase (especialmentesdd_plan.mden fase Plan)agents.registry— Roles multi-agente
Ejemplo (arquetipo, nivel 5):
{
"schema": "karnitas/1",
"maturity": 5,
"always_load": ["core/constraints.md", "core/directives.md"],
"context_map": {
"sdd": ["knowledge/sdd.md", "workflows/spec_driven.yaml"],
"sdd_plan": ["skills/sdd_plan.md", "governance/architecture.md"],
"multi_agent": ["agents/"],
"tools": ["tools/mcp_servers.json"]
},
"sdd": {
"workflow": "workflows/spec_driven.yaml",
"skills": { "plan": "skills/sdd_plan.md" }
}
}| Ruta | Responsabilidad |
|---|---|
index.json |
Mapa de navegación y carga selectiva |
core/ |
Reglas que siempre aplican |
knowledge/ |
Dominio del proyecto y guía SDD |
governance/ |
Arquitectura, seguridad, estándares |
specs/ |
Especificaciones SDD por feature |
skills/ |
Instrucciones reutilizables por fase |
workflows/ |
Orquestación SDD multi-agente |
agents/ |
Roles y handoffs entre agentes |
tools/ |
MCP y OpenAPI |
memory/ |
ADRs y errores ya resueltos |
evaluation.md |
Validación de cumplimiento |
Spec-Driven Development no es un estándar aparte: es el método de trabajo dentro de KARNITAS. La spec es el artefacto primario; código y tests se derivan de ella. Todo vive en .agents/specs/.
Constitution → Specify → Clarify → Plan → Tasks → Implement → Iterate
| Fase | Output | Skill / Agente | Checkpoint |
|---|---|---|---|
| 0 Constitution | core/ |
— | Equipo alineado |
| 1 Specify | spec.md |
sdd_specify / specifier |
Revisar spec |
| 2 Clarify | spec.md |
sdd_clarify / specifier |
Sin bloqueos |
| 3 Plan | plan.md |
sdd_plan / planner |
Revisar arquitectura |
| 4 Tasks | tasks.md |
sdd_tasks / planner |
Orden lógico |
| 5 Implement | código + tests | sdd_implement / implementer |
EARS OK |
| 6 Iterate | spec actualizada | implementer | Revisión humana |
Fase Plan: traduce spec → arquitectura, decisiones y riesgos. Ver skills/sdd_plan.md.
Patrones para requisitos testeables sin ambigüedad:
- Ubiquitous: El sistema shall [comportamiento permanente].
- Event: WHEN [evento] THE sistema SHALL [respuesta].
- State: WHILE [estado] THE sistema SHALL [comportamiento].
- Unwanted: IF [condición] THEN THE sistema SHALL [respuesta].
- Optional: WHERE [feature] THE sistema SHALL [comportamiento].
Guía operativa completa: archetype/.agents/knowledge/sdd.md
- Instalar dependencias no documentadas en
governance/oconstraints.md - Contradecir
governance/architecture.mdo ADRs enmemory/ADRs/ - Reabrir decisiones ya registradas
- Implementar features significativas sin spec en
specs/
Sin contexto suficiente, detenerse y comunicarlo. No asumir ni inventar.
- Cambio arquitectónico → ADR en
memory/ADRs/ - Bug recurrente resuelto →
memory/known_issues.md - Nueva dependencia →
governance/antes de mergear - Cambio funcional → spec actualizada en el mismo PR
Nunca en .agents/: secretos, tokens, credenciales ni PII.
READ → LOAD → VALIDATE → RECALL → EXECUTE
- READ —
index.jsony, si aplica,specs/<feature>/spec.md - LOAD —
always_load+ entradas decontext_mapsegún la tarea - VALIDATE — Contrastar con
constraints.mdygovernance/ - RECALL — Consultar
memory/known_issues.mdy ADRs - EXECUTE — Respetar spec, plan y tasks
Entrada rápida para herramientas: archetype/AGENTS.md en la raíz del proyecto generado.
Plantillas en archetype/adapters/. Instalar con:
./scripts/init-karnitas.sh . --adapter cursor # o copilot | claude | aider | continue | all | none| Herramienta | Adaptador (destino) |
|---|---|
| Cursor | adapters/cursor/ → .cursor/rules/karnitas.mdc |
| Copilot | adapters/copilot/ → copilot-instructions.md |
| Claude Code / Projects | adapters/claude/ → CLAUDE.md |
| Aider | adapters/aider/ → .aider.conf.yml |
| Continue | adapters/continue/ → .continue/config.json |
Todas las herramientas: AGENTS.md + .agents/index.json como SSOT.
| Nivel | Nombre | Contenido |
|---|---|---|
| 1 | Ad-hoc | Sin .agents/ |
| 2 | Contexto básico | index.json + core/ |
| 3 | Contexto gobernado | + governance/, knowledge/, memory/ |
| 4 | Contexto operativo | + specs/ (SDD), evaluation/ |
| 5 | Multi-agente | + skills/, workflows/, tools/, agents/ |
El arquetipo incluido en este repo cubre nivel 5 (multi-agente).
| Fase | Cuándo | Qué hacer |
|---|---|---|
| 1 Fundación | Día 1 | init-karnitas.sh → completar core/constraints.md |
| 2 Contexto | Semana 1 | governance/, memory/known_issues.md |
| 3 Conocimiento | Semana 2–4 | knowledge/domain.md, primeros ADRs |
| 4 SDD | Cuando haya features | specs/001-…/spec.md → plan.md → tasks.md |
| 5 Multi-agente | Incluido en arquetipo | skills/, workflows/, agents/, tools/ |
KARNITAS usa Markdown y JSON — legible por humanos y máquinas, sin runtime obligatorio.
Compatible con Model Context Protocol (MCP): declarar servidores en tools/mcp_servers.json.
Este repo contiene el estándar (este README) y el arquetipo (plantilla para proyectos).
| Ruta | Propósito |
|---|---|
README.md |
Documentación del estándar KARNITAS |
archetype/ |
Plantilla copiada a tu proyecto |
scripts/init-karnitas.sh |
Bootstrap del arquetipo (guía) |
No clones este repo como base de tu aplicación. Genera tu proyecto con el script:
git clone https://github.com/shellaquiles/KARNITAS.git
./KARNITAS/scripts/init-karnitas.sh /ruta/a/mi-proyecto --adapter all
cd /ruta/a/mi-proyectoSolo un IDE: --adapter cursor | copilot | claude | aider | continue. Sin adaptadores: --adapter none.
- Editar
.agents/core/constraints.md— stack y prohibiciones - Editar
.agents/governance/architecture.md - Crear la primera feature:
mkdir -p .agents/specs/001-mi-feature
cp .agents/specs/_templates/spec-template.md .agents/specs/001-mi-feature/spec.mdKARNITAS es una propuesta abierta. Ver CONTRIBUTING.md.
- Reportar ambigüedades en la especificación
- Proponer extensiones agnósticas (sin acoplar a un vendor)
- Compartir cómo tu equipo adaptó KARNITAS a su contexto
KARNITAS no te dice cómo programar. Te ayuda a que todos en tu equipo — humanos y agentes — trabajen con el mismo contexto.
MIT License · K.A.R.N.I.T.A.S. v1.0.1