Desarrollo basado en especificaciones con Claude Code y Cursor
Claude Code es una herramienta de programación agéntica que lee una base de código, edita archivos y ejecuta comandos. Cursor es el editor cuyas reglas de proyecto están en .cursor/rules como archivos .mdc. Desarrollo basado en especificaciones (SDD) es la práctica de escribir la especificación antes del código y tratar la especificación como la fuente de verdad. Un documento de requisitos de producto (PRD) es la prosa que enuncia el problema y el alcance antes de partir el trabajo en tareas. En SpecScore, una especificación de funcionalidad es el archivo de una capacidad del producto, un requisito (REQ) es una regla con nombre dentro de esa funcionalidad, y un criterio de aceptación (AC) es una condición abstracta y opcional que apunta a una o más de esas reglas. La integración continua (CI) es una comprobación automática en cada cambio propuesto. La comprobación es un comando de la interfaz de línea de comandos (CLI), specscore spec lint, de la CLI en specscore/specscore-cli. En esta página, las especificaciones de Cursor son ese archivo de funcionalidad junto con la regla de proyecto de Cursor que le dice al agente que lo lintee.
Última actualización: 6 de noviembre de 2026
Qué va en la funcionalidad y qué va en el archivo del agente
El archivo de la funcionalidad contiene la obligación. Un README de funcionalidad bajo spec/features/ lleva las reglas #### REQ: y los criterios ### AC:. La forma rellena, el plan y la tarea son la plantilla de PRD en Markdown. specscore spec lint comprueba esa forma: encabezados, secciones obligatorias, filas del índice y referencias. No decide si la idea de producto es buena. Lintear especificaciones en CI es la explicación más larga del comando.
El archivo del agente contiene instrucciones para una herramienta. La descripción general de Anthropic dice que CLAUDE.md es un archivo Markdown en la raíz del proyecto que Claude Code lee al inicio de cada sesión. La documentación de reglas de Cursor dice que una regla de proyecto es un archivo .mdc en .cursor/rules, y que un archivo .md simple en ese directorio se ignora porque no tiene frontmatter. Esos archivos le dicen al agente cómo trabajar en el repositorio. No son la especificación que comprueba el linter. Un requisito que existe solo en CLAUDE.md o solo en .cursor/rules/specscore.mdc es invisible para specscore spec lint.
Qué escribe specscore agent setup
El README de la CLI dice que specscore agent setup escribe el archivo de instrucciones de cada agente y, donde ese agente tiene un directorio de skills, copia en él los paquetes de skills de SpecScore. El comando omite un archivo existente salvo que pases --force. El contrato es la funcionalidad agent-setup en specscore/specscore-cli.
Ese contrato asigna el id de caller claude a CLAUDE.md y .claude/skills/, y el id de caller cursor a .cursor/rules/specscore.mdc y .cursor/skills/. Ejecuta el comando dentro de un proyecto que ya tiene specscore.yaml. Si falta ese archivo, el comando termina con 6 y el mensaje sugiere specscore init. Una invocación que nombra a los dos agentes es specscore agent setup claude,cursor. La funcionalidad dice que una lista separada por comas equivale a argumentos separados. Se crean los directorios padre. Cada ruta se informa como añadida, modificada u omitida.
El CLAUDE.md generado incluye el título del proyecto, ejemplos de la CLI que pasan --caller claude y la línea de instalación /plugin install specscore@specscore. El archivo de Cursor es Markdown con frontmatter YAML. El frontmatter contiene description y alwaysApply: true. La tabla de reglas de Cursor dice que alwaysApply: true significa que la regla se incluye en cada chat. --no-skills escribe los archivos de instrucciones y no copia los paquetes de skills. La misma tabla del contrato también nombra codex, copilot, antigravity.google, pi.dev, opencode y deepseek. Esta página sigue a los dos agentes del título.
specscore agent setup claude,cursor
CLAUDE.md
.claude/skills/
.cursor/rules/specscore.mdc
.cursor/skills/
El archivo de instrucciones apunta al árbol de la funcionalidad. No lo sustituye. Después de la configuración, Claude Code todavía tiene que leer spec/features/, y la regla de Cursor todavía tiene que apuntar al mismo árbol. La especificación de funcionalidad sigue siendo el documento que specscore spec lint acepta o rechaza.
Ejecuta specscore spec lint en el bucle
Instala primero la CLI. Los métodos de instalación están en la página de instalación. Después, mantén la funcionalidad y el linter en el mismo bucle que el agente.
Escribe la funcionalidad antes del prompt
Añade el README de la funcionalidad, la fila del índice de funcionalidades y specscore.yaml con la plantilla de PRD. Pon cada obligación bajo ## Behavior como #### REQ: {slug}. Apunta los criterios de aceptación a esos ids con **Requirements:**. Deja CLAUDE.md y .cursor/rules/ para el paso siguiente.
Lintea antes de que el agente edite código
Ejecuta specscore spec lint en el repositorio. Un árbol limpio imprime 0 violations found y termina con 0. El informe de fallo — archivo, línea, severidad, regla, mensaje — está en lintear especificaciones en CI. Corrige la funcionalidad hasta que ese comando quede limpio. Un agente que parte de una funcionalidad que el linter ya rechaza copiará la forma rota.
Apunta Claude Code y Cursor al árbol
Ejecuta specscore agent setup claude,cursor. Lee CLAUDE.md y .cursor/rules/specscore.mdc, ya añadidos, y confirma que nombran el árbol de la especificación y la CLI, incluido --caller. Si alguno de los dos archivos ya existía, el comando lo omite. Pasa --force solo cuando quieres sustituir ese archivo.
Pide una tarea que nombre un criterio
En la sesión del agente, nombra la funcionalidad y el criterio de aceptación que el trabajo tiene que satisfacer. Una tarea del plan lo hace con **Verifies:** y un id de criterio de aceptación. Pide al agente que vuelva a ejecutar specscore spec lint antes de terminar, y que cambie el archivo de la funcionalidad cuando cambie el comportamiento. El archivo de instrucciones le dice al agente que ejecute el comando. El archivo de la funcionalidad es lo que el comando comprueba.
Skills que exponen lint, feature y task
Las líneas de instalación del README de la CLI para el complemento envoltorio son /plugin marketplace add specscore/ai-marketplace y /plugin install specscore@specscore. El repositorio del complemento es specscore/ai-plugin-specscore, bajo la licencia MIT. Su README de skills dice que los usuarios invocan /specscore:<skill-name>. Los envoltorios incluidos traen /specscore:spec, que envuelve specscore spec lint; /specscore:feature, que envuelve specscore feature (list, info, tree, deps, refs, new y change-status); y /specscore:task, que envuelve specscore task. /specscore:change-status cubre los cambios de estado de la funcionalidad y de la idea. La página CLI Skills de este sitio es ese envoltorio. specscore agent setup copia esos paquetes de skills en .claude/skills/ y .cursor/skills/ salvo que pases --no-skills.
El README del complemento dice que Cursor no tiene un comando de instalación remota y carga los skills desde .cursor/skills/ en el proyecto o desde ~/.cursor/skills/. La copia manual que muestra es git clone de ai-plugin-specscore y cp -R de skills/* hacia .cursor/skills/. specscore agent setup cursor es el comando que hace esa copia por ti, desde el marketplace que nombra la especificación de la funcionalidad.
SpecStudio Skills es el flujo guiado. El repositorio es specscore/specstudio-skills, bajo la licencia MIT. La línea de instalación para Claude Code de su README es /plugin install specstudio@specscore, y dice que Claude Code instala el complemento specscore como dependencia. La sección de estado nombra la versión 0.0.7 y dice que los skills ideate, specify, plan, implement, verify y recap están lo bastante activos para usarlos en el propio proyecto (dogfood). La tabla de inventario del mismo README documenta specstudio:ideate y specstudio:specify en detalle. Esos skills escriben artefactos de SpecScore. No sustituyen a specscore spec lint.
El mismo comando en CI
dogfood.yml en specscore/specscore fija SPECSCORE_VERSION en v0.39.1 y ejecuta specscore spec lint en las pull requests y en los pushes a main. El extracto del workflow y el informe de texto están en lintear especificaciones en CI. Una funcionalidad que rompe un encabezado hace fallar ese job tanto si el archivo lo escribió Claude Code como si lo escribió Cursor. El bucle del agente y la CI llaman al mismo comando.
La licencia del formato es CC BY 4.0 en specscore/specscore. La licencia de la CLI es Apache-2.0 en specscore/specscore-cli.
Otras herramientas de desarrollo basado en especificaciones publican comprobaciones distintas. Las frases de abajo usan solo lo que dicen las propias páginas de esos proyectos. La comparativa de herramientas registra las mismas páginas como leídas el 30 de octubre de 2026, salvo la portada de la documentación de Spec Kit, que imprime el 28 de septiembre de 2026.
OpenSpec documenta openspec validate en su referencia de la CLI. Ese comando comprueba la estructura de cambios y especificaciones de OpenSpec. No comprueba un encabezado ### AC: de SpecScore.
El README de Task Master describe partir un PRD en tareas con task-master parse-prd. No describe un linter para ese PRD.
GitHub Spec Kit describe un flujo de agente cuyas fases escriben artefactos Markdown. Esa portada de documentación no describe un comando que lintee un README de funcionalidad de SpecScore en CI.
Preguntas frecuentes
¿Qué es Claude Code spec-driven development?
Es escribir la funcionalidad de SpecScore antes de que Claude Code escriba el código, y después mantener CLAUDE.md como el archivo de instrucciones que apunta a esa funcionalidad. La funcionalidad guarda los requisitos (REQ) y los criterios de aceptación (AC). specscore spec lint comprueba la funcionalidad. specscore agent setup claude escribe CLAUDE.md en un proyecto que ya tiene specscore.yaml.
¿Dónde van las especificaciones de Cursor?
La obligación del producto va en el README de la funcionalidad bajo spec/features/. La regla de proyecto de Cursor va en .cursor/rules/specscore.mdc. Los archivos de skills van en .cursor/skills/. specscore agent setup cursor escribe la regla y, salvo que pases --no-skills, copia los paquetes de skills. La documentación propia de Cursor es la fuente de cómo se aplican las reglas .mdc.
¿CLAUDE.md sustituye a la especificación de la funcionalidad?
No. CLAUDE.md es lo que Claude Code lee como instrucciones. El README de la funcionalidad es lo que specscore spec lint comprueba. La funcionalidad agent-setup dice que el archivo generado enseña al agente el árbol de la especificación y los comandos de la CLI. No dice que el archivo de instrucciones sea la especificación.
¿Qué pasa si CLAUDE.md o la regla de Cursor ya existe?
El comando omite el archivo existente e imprime una línea de omisión que menciona --force. Los bytes existentes permanecen. Pasa --force solo cuando lo que quieres es sustituir. La misma regla de omisión se aplica a un archivo de skill que ya está presente.
¿Qué skill ejecuta el linter?
En el README de skills del complemento, /specscore:spec envuelve specscore spec lint. También puedes ejecutar ese comando de la CLI tú mismo, en la sesión del agente o en CI. /specscore:feature y /specscore:task envuelven los comandos de funcionalidad y de tarea. No lintean por sí solos.
¿El linter califica la prosa?
No. specscore spec lint comprueba la estructura. Lintear especificaciones en CI muestra el informe. Una comprobación estructural limpia no es una revisión de producto.
Fuentes
El comportamiento de agent-setup es el contrato en specscore-cli spec/features/cli/agent/setup/README.md en main, leído el 6 de noviembre de 2026. Los nombres de los skills salen de ai-plugin-specscore skills/README.md en main, leído el mismo día. La línea de instalación de SpecStudio y la lista de estado de la versión 0.0.7 salen de specstudio-skills README.md en main, leído el mismo día. La descripción de Claude Code y la frase sobre CLAUDE.md salen de code.claude.com/docs/en/overview. Las rutas de las reglas de proyecto de Cursor salen de cursor.com/docs/rules. dogfood.yml en este repositorio fija SPECSCORE_VERSION en v0.39.1. Las páginas de la competencia son las enlazadas abajo; la comparativa de herramientas las registra como leídas el 30 de octubre de 2026, salvo la portada de la documentación de Spec Kit, que imprime el 28 de septiembre de 2026.
- Claude Code — descripción general (CLAUDE.md)
- Cursor — Rules (las reglas de proyecto son archivos .mdc)
- specscore-cli — funcionalidad agent-setup
- specscore-cli — README (agent setup e instalación del complemento)
- specscore/specscore-cli
- specscore-cli — licencia Apache-2.0
- specscore/specscore
- specscore/specscore — licencia CC BY 4.0
- specscore/specscore — dogfood.yml (CLI v0.39.1)
- specscore/ai-plugin-specscore
- ai-plugin-specscore — licencia MIT
- ai-plugin-specscore — README de skills
- ai-plugin-specscore — README (copia para Cursor)
- specscore/specstudio-skills
- specstudio-skills — licencia MIT
- specstudio-skills — README (versión 0.0.7)
- CLI Skills
- SpecStudio Skills
- Plantilla de PRD en Markdown para programar con IA
- Lintear especificaciones en CI con un linter de especificaciones
- Especificación de funcionalidad
- Especificación de criterios de aceptación
- Referencia de la CLI de OpenSpec — openspec validate
- Fission-AI/OpenSpec
- eyaltoledano/claude-task-master
- Documentación de GitHub Spec Kit (fecha de página 28 de septiembre de 2026)
- Herramientas de desarrollo basado en especificaciones
Relacionado
- Plantilla de PRD en Markdown para programar con IA
- Lintear especificaciones en CI con un linter de especificaciones
- Cómo escribir criterios de aceptación que un agente de IA pueda verificar
- Sintaxis de requisitos EARS explicada, con ejemplos
- Desarrollo basado en especificaciones
- Herramientas de desarrollo basado en especificaciones
- CLI Skills
- SpecStudio Skills
- CLI
- Especificación de funcionalidad