# Desarrollo basado en especificaciones con Claude Code y Cursor

Canonical: https://specscore.md/es/articles/claude-code-specs/

Última actualización: 6 de noviembre de 2026

[Claude Code](https://code.claude.com/docs/en/overview) es una herramienta de programación agéntica que lee una base de código, edita archivos y ejecuta comandos. [Cursor](https://cursor.com/docs/rules) es el editor cuyas reglas de proyecto están en `.cursor/rules` como archivos `.mdc`. [Desarrollo basado en especificaciones](https://specscore.md/es/spec-driven-development/) (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](https://specscore.md/), una [especificación de funcionalidad](https://specscore.md/feature-specification) es el archivo de una capacidad del producto, un [requisito](https://specscore.md/requirement-specification) (REQ) es una regla con nombre dentro de esa funcionalidad, y un [criterio de aceptación](https://specscore.md/acceptance-criteria-specification) (AC) es una condición abstracta y opcional que apunta a una o más de esas reglas. La [integración continua](https://specscore.md/es/validators/) (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](https://specscore.md/es/cli/) (CLI), `specscore spec lint`, de la CLI en [specscore/specscore-cli](https://github.com/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.

## 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](https://specscore.md/es/articles/feature-spec-template/). `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](https://specscore.md/es/articles/lint-specs-in-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](https://github.com/specscore/specscore-cli/blob/main/README.md) 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](https://github.com/specscore/specscore-cli/blob/main/spec/features/cli/agent/setup/README.md) en [specscore/specscore-cli](https://github.com/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.

### Escribe los archivos de Claude Code y de Cursor. Ejecútalo desde un proyecto que tenga specscore.yaml.

```text
specscore agent setup claude,cursor
```

### Rutas que el contrato asigna a claude y a cursor. Los directorios de skills no se crean cuando pasas --no-skills. Un archivo existente se queda como está salvo que pases --force.

```text
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](https://specscore.md/feature-specification) 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](https://specscore.md/es/cli/install/). 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](https://specscore.md/es/articles/feature-spec-template/). 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](https://specscore.md/es/articles/lint-specs-in-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](https://github.com/specscore/ai-plugin-specscore), bajo la [licencia MIT](https://github.com/specscore/ai-plugin-specscore/blob/main/LICENSE). Su [README de skills](https://github.com/specscore/ai-plugin-specscore/blob/main/skills/README.md) 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](https://specscore.md/es/ai/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](https://github.com/specscore/ai-plugin-specscore/blob/main/README.md) 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](https://specscore.md/es/ai/specstudio-skills/) es el flujo guiado. El repositorio es [specscore/specstudio-skills](https://github.com/specscore/specstudio-skills), bajo la [licencia MIT](https://github.com/specscore/specstudio-skills/blob/main/LICENSE). 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](https://github.com/specscore/specscore/blob/main/.github/workflows/dogfood.yml) en [specscore/specscore](https://github.com/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](https://specscore.md/es/articles/lint-specs-in-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](https://github.com/specscore/specscore/blob/main/LICENSE) en [specscore/specscore](https://github.com/specscore/specscore). La licencia de la CLI es [Apache-2.0](https://github.com/specscore/specscore-cli/blob/main/LICENSE) en [specscore/specscore-cli](https://github.com/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](https://specscore.md/es/spec-driven-development/tools/) 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](https://github.com/Fission-AI/OpenSpec) documenta `openspec validate` en su [referencia de la CLI](https://openspec.dev/docs/cli). Ese comando comprueba la estructura de cambios y especificaciones de OpenSpec. No comprueba un encabezado `### AC:` de SpecScore.

El README de [Task Master](https://github.com/eyaltoledano/claude-task-master) describe partir un PRD en tareas con `task-master parse-prd`. No describe un linter para ese PRD.

[GitHub Spec Kit](https://github.github.io/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](https://github.com/specscore/specscore-cli/blob/main/spec/features/cli/agent/setup/README.md) 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](https://specscore.md/es/articles/lint-specs-in-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)](https://code.claude.com/docs/en/overview)
- [Cursor — Rules (las reglas de proyecto son archivos .mdc)](https://cursor.com/docs/rules)
- [specscore-cli — funcionalidad agent-setup](https://github.com/specscore/specscore-cli/blob/main/spec/features/cli/agent/setup/README.md)
- [specscore-cli — README (agent setup e instalación del complemento)](https://github.com/specscore/specscore-cli/blob/main/README.md)
- [specscore/specscore-cli](https://github.com/specscore/specscore-cli)
- [specscore-cli — licencia Apache-2.0](https://github.com/specscore/specscore-cli/blob/main/LICENSE)
- [specscore/specscore](https://github.com/specscore/specscore)
- [specscore/specscore — licencia CC BY 4.0](https://github.com/specscore/specscore/blob/main/LICENSE)
- [specscore/specscore — dogfood.yml (CLI v0.39.1)](https://github.com/specscore/specscore/blob/main/.github/workflows/dogfood.yml)
- [specscore/ai-plugin-specscore](https://github.com/specscore/ai-plugin-specscore)
- [ai-plugin-specscore — licencia MIT](https://github.com/specscore/ai-plugin-specscore/blob/main/LICENSE)
- [ai-plugin-specscore — README de skills](https://github.com/specscore/ai-plugin-specscore/blob/main/skills/README.md)
- [ai-plugin-specscore — README (copia para Cursor)](https://github.com/specscore/ai-plugin-specscore/blob/main/README.md)
- [specscore/specstudio-skills](https://github.com/specscore/specstudio-skills)
- [specstudio-skills — licencia MIT](https://github.com/specscore/specstudio-skills/blob/main/LICENSE)
- [specstudio-skills — README (versión 0.0.7)](https://github.com/specscore/specstudio-skills/blob/main/README.md)
- [CLI Skills](https://specscore.md/es/ai/cli-skills/)
- [SpecStudio Skills](https://specscore.md/es/ai/specstudio-skills/)
- [Plantilla de PRD en Markdown para programar con IA](https://specscore.md/es/articles/feature-spec-template/)
- [Lintear especificaciones en CI con un linter de especificaciones](https://specscore.md/es/articles/lint-specs-in-ci/)
- [Especificación de funcionalidad](https://specscore.md/feature-specification)
- [Especificación de criterios de aceptación](https://specscore.md/acceptance-criteria-specification)
- [Referencia de la CLI de OpenSpec — openspec validate](https://openspec.dev/docs/cli)
- [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec)
- [eyaltoledano/claude-task-master](https://github.com/eyaltoledano/claude-task-master)
- [Documentación de GitHub Spec Kit (fecha de página 28 de septiembre de 2026)](https://github.github.io/spec-kit/)
- [Herramientas de desarrollo basado en especificaciones](https://specscore.md/es/spec-driven-development/tools/)

## Relacionado

- [Plantilla de PRD en Markdown para programar con IA](https://specscore.md/es/articles/feature-spec-template/)
- [Lintear especificaciones en CI con un linter de especificaciones](https://specscore.md/es/articles/lint-specs-in-ci/)
- [Cómo escribir criterios de aceptación que un agente de IA pueda verificar](https://specscore.md/es/articles/acceptance-criteria/)
- [Sintaxis de requisitos EARS explicada, con ejemplos](https://specscore.md/es/articles/ears-requirements/)
- [Desarrollo basado en especificaciones](https://specscore.md/es/spec-driven-development/)
- [Herramientas de desarrollo basado en especificaciones](https://specscore.md/es/spec-driven-development/tools/)
- [CLI Skills](https://specscore.md/es/ai/cli-skills/)
- [SpecStudio Skills](https://specscore.md/es/ai/specstudio-skills/)
- [CLI](https://specscore.md/es/cli/)
- [Especificación de funcionalidad](https://specscore.md/feature-specification)
