Referencia de plugins
Documentación de referencia para crear, estructurar y enviar plugins de Cursor. Los plugins agrupan reglas, skills, agentes de programación, comandos, servidores MCP y hooks en paquetes distribuibles compatibles con el IDE de Cursor.
Si empiezas desde cero, usa el repositorio de plantilla de plugins.
Formatos de plugin compatibles
Cursor carga plugins en dos formatos, identificados por la ubicación de su manifiesto:
| Formato | Ubicación del manifiesto | Componentes |
|---|---|---|
| Agent Plugins (estándar abierto) | plugin.json en la raíz del plugin | Skills, servidores MCP |
| Plugins de Cursor | .cursor-plugin/plugin.json | Skills, servidores MCP, reglas, agentes de programación, comandos, hooks, variables |
Un plugin que cumple con la especificación de Agent Plugins se carga en Cursor. Cursor no expande las variables ${PLUGIN_ROOT} y ${PLUGIN_DATA} del estándar en mcp.json; consulta Servidores MCP. El resto de esta referencia documenta el formato de plugin de Cursor, que se desarrolla en paralelo con el estándar y admite el conjunto completo de componentes de Cursor.
Estructura del plugin
Un plugin es un directorio que contiene un archivo de manifiesto y los recursos del plugin:
my-plugin/├── plugin.json # Obligatorio: manifiesto de Agent Plugins├── skills/ # Agent Skills│ └── code-reviewer/│ └── SKILL.md└── mcp.json # Definiciones de servidores MCPEl estándar Agent Plugins define skills y servidores MCP portables. Consulta la guía para crear Agent Plugins para ver la referencia completa del paquete y el esquema.
Manifiesto del plugin de Cursor
Todo plugin de Cursor requiere un archivo de manifiesto .cursor-plugin/plugin.json. Las
siguientes secciones documentan los campos, componentes y funciones del marketplace de los plugins de Cursor. Para consultar el manifiesto raíz de Agent Plugins, usa la
referencia del manifiesto del estándar.
Campos obligatorios
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Identificador del plugin. En minúsculas y formato kebab-case (caracteres alfanuméricos, guiones y puntos). Debe comenzar y terminar con un carácter alfanumérico. Ejemplos: my-plugin, prompts.chat |
Campos opcionales
| Campo | Tipo | Descripción |
|---|---|---|
description | string | Breve descripción del plugin |
version | string | Versión semántica (p. ej., 1.0.0) |
author | object | Información del autor: name (obligatorio), email (opcional) |
homepage | string | URL de la página principal del plugin |
repository | string | URL del repositorio del plugin |
license | string | Identificador de licencia (p. ej., MIT) |
keywords | array | Etiquetas para su descubrimiento y categorización |
logo | string | Ruta relativa a un archivo de logotipo en el repositorio (p. ej., assets/logo.svg) o una URL absoluta. Las rutas relativas se resuelven como URL de raw.githubusercontent.com. Se recomienda incluir el logotipo en el repositorio y usar una ruta relativa. |
rules | string or array | Ruta(s) a archivos o directorios de reglas |
agents | string or array | Ruta(s) a archivos o directorios de agentes de programación |
skills | string or array | Ruta(s) a directorios de skills |
commands | string or array | Ruta(s) a archivos o directorios de comandos |
hooks | string or object | Ruta al archivo de configuración de hooks o configuración de hooks en línea |
mcpServers | string, object, or array | Ruta al archivo de configuración de MCP, configuración de servidor MCP en línea o un array de cualquiera de las dos. Anula el descubrimiento predeterminado de mcp.json. |
variables | object | JSON Schema que declara los nombres de las variables (tokens, cadenas de conexión). El plugin no almacena valores secretos; los usuarios los establecen en el panel de control (Plugins → configurar). Se sustituyen en los marcadores de posición ${VAR}. Consulta Variables. |
Ejemplo de manifiesto
{ "name": "enterprise-plugin", "version": "1.2.0", "description": "Enterprise development tools with security scanning and compliance checks", "author": { "name": "ACME DevTools", "email": "devtools@acme.com" }, "keywords": ["enterprise", "security", "compliance"], "logo": "assets/logo.svg"}Variables
Usa variables para declarar los nombres (y tipos/descripciones) de la configuración proporcionada por el usuario; por ejemplo, un token de API para un servidor MCP HTTP. El plugin solo define el esquema; no incluye los valores secretos.
Los administradores de equipo establecen los valores reales en el panel de control, en Plugins (durante la instalación o posteriormente mediante Configurar en el plugin).
No incluyas valores secretos en el repo del plugin. En mcp.json y otra configuración del plugin, incluye solo marcadores de posición ${VAR} que coincidan con los nombres de las propiedades del esquema.
{ "name": "example-plugin", "variables": { "type": "object", "properties": { "API_TOKEN": { "type": "string", "title": "API token", "description": "Bearer token for the example HTTP MCP" } }, "required": ["API_TOKEN"] }}{ "mcpServers": { "example-api": { "url": "https://mcp.example.com/mcp", "headers": { "Authorization": "Bearer ${API_TOKEN}" } } }}El nivel superior debe ser { "type": "object", "properties": { ... } }. Solo se acepta un conjunto fijo de palabras clave de JSON Schema (type, title, description, default, enum, const, properties, required, items y restricciones habituales de longitud y valores numéricos).
Descubrimiento de componentes del plugin de Cursor
Cuando el manifiesto no especifica rutas explícitas para un tipo de componente, el analizador utiliza el descubrimiento automático basado en carpetas:
| Componente | Ubicación predeterminada | Cómo se detecta |
|---|---|---|
| Skills | skills/ | Cada subdirectorio que contiene un archivo SKILL.md |
| Reglas | rules/ | Todos los archivos .md, .mdc o .markdown |
| Agentes de programación | agents/ | Todos los archivos .md, .mdc o .markdown |
| Comandos | commands/ | Todos los archivos .md, .mdc, .markdown o .txt |
| Hooks | hooks/hooks.json | Se analiza para obtener los nombres de eventos de hook |
| Servidores MCP | mcp.json | Se analiza para obtener las entradas de servidor |
| Skill raíz | SKILL.md en la raíz del plugin | Se trata como un plugin con una sola skill (solo si no existe el directorio skills/ ni el campo skills en el manifiesto) |
Si se especifica un campo en el manifiesto (p. ej., "skills": "./my-skills/"), este reemplaza el descubrimiento basado en carpetas para ese componente. La carpeta predeterminada no se analiza adicionalmente.
Formato de las reglas
Las reglas son archivos .mdc que proporcionan instrucciones persistentes a la IA. Colócalas en el directorio rules/.
Las reglas requieren frontmatter YAML con metadatos:
---description: Prefer const over let for variables that are never reassignedalwaysApply: true---prefer-const: Always use `const` for variables that are never reassigned.Only use `let` when the variable needs to be reassigned. Never use `var`.Campos del frontmatter de las reglas
| Campo | Tipo | Descripción |
|---|---|---|
description | string | Breve descripción de lo que hace la regla |
alwaysApply | boolean | Si es true, la regla se aplica a todos los archivos. Si es false, la regla está disponible previa solicitud. |
globs | string o array | Patrones de archivos a los que se aplica la regla (p. ej., "**/*.ts") |
Para consultar la documentación completa, consulta Reglas.