ADR-0009 — Adaptador nativo para Cursor
- Estado: propuesto
- Fecha: 2026-07-07
- Decide: lead / arquitecto de la metodología
Contexto
ADR-0002 consolidó la estrategia agnóstica por asistente con tres capas: contenido portable, CLI determinista y adaptadores delgados/generados por asistente. La implementación actual cubre Claude y Copilot, pero no Cursor de forma nativa.
En la práctica, equipos que usan Cursor quedan con una experiencia incompleta: no hay scaffolding en .cursor/skills/, no existe constitución always-on en rules, y dai doctor / dai install no diagnostican ni instalan superficies de Cursor.
Cursor soporta skills (.cursor/skills/<name>/SKILL.md) y rules (.cursor/rules/*.mdc) de forma nativa, y OpenSpec soporta cursor en --tools. Eso permite agregar soporte sin romper el contrato existente ni duplicar lógica.
Decisión
Incorporamos Cursor como tercer adaptador generado en la capa 3:
dai init --foraceptacursoryall, además declaude,copilot,both.- El default de
dai initpasa aall(Claude + Copilot + Cursor). bothmantiene su significado histórico (Claude + Copilot), para compatibilidad semántica.- Las skills de Cursor se generan en
.cursor/skills/desde la misma fuente (skills/*/SKILL.md) conskillToCursor(). - El transformador de Cursor conserva
name,descriptiony cuerpo, y no agregadisable-model-invocation(se permite auto-invocación por descripción). - La constitución de Cursor se genera como rule
.mdcen.cursor/rules/dai-constitution.mdcconalwaysApply: true. dai doctorreporta skills y constitución en rutas locales/globales de Cursor.dai installsoporta Cursor vía--for claude|cursor|all(defaultall).- OpenSpec mapea
--for allaclaude,github-copilot,cursor.
Consecuencias
- ✅ La metodología mantiene su principio agnóstico también para Cursor, sin bifurcar contenido de skills.
- ✅ Equipos mixtos pueden coexistir en un repo con Claude, Copilot y Cursor sin pisarse (carpetas separadas).
- ✅ El runtime mecánico sigue centralizado en CLI (
dai), sin mover lógica determinista a prompts. - ✅ Cursor recibe constitución always-on alineada a Claude/Copilot.
- ⚠️ Cambia el comportamiento por defecto de
dai init(debothaall); requiere documentación clara para evitar sorpresa. - ⚠️
dai installahora maneja más de un target de asistente y aumenta la superficie de mantenimiento.
Alternativas consideradas
- Depender de
.claude/skills/por compatibilidad de Cursor — descartado: no da soporte profesional de rules/doctor/install y contradice la idea de adaptador nativo generado. - Redefinir
bothpara incluir Cursor — descartado: rompe semántica histórica del valor; se prefiere agregarall. - Forzar
disable-model-invocation: trueen Cursor — descartado para este repo: se busca paridad de auto-invocación con Claude. - Constitución de Cursor en
AGENTS.md— descartado: la superficie nativa always-on de Cursor son.cursor/rules/*.mdc.