Skip to main content

Command Palette

Search for a command to run...

Comenzar

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:

FormatoUbicación del manifiestoComponentes
Agent Plugins (estándar abierto)plugin.json en la raíz del pluginSkills, servidores MCP
Plugins de Cursor.cursor-plugin/plugin.jsonSkills, 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 MCP

El 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

CampoTipoDescripción
namestringIdentificador 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

CampoTipoDescripción
descriptionstringBreve descripción del plugin
versionstringVersión semántica (p. ej., 1.0.0)
authorobjectInformación del autor: name (obligatorio), email (opcional)
homepagestringURL de la página principal del plugin
repositorystringURL del repositorio del plugin
licensestringIdentificador de licencia (p. ej., MIT)
keywordsarrayEtiquetas para su descubrimiento y categorización
logostringRuta 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.
rulesstring or arrayRuta(s) a archivos o directorios de reglas
agentsstring or arrayRuta(s) a archivos o directorios de agentes de programación
skillsstring or arrayRuta(s) a directorios de skills
commandsstring or arrayRuta(s) a archivos o directorios de comandos
hooksstring or objectRuta al archivo de configuración de hooks o configuración de hooks en línea
mcpServersstring, object, or arrayRuta 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.
variablesobjectJSON 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 (Pluginsconfigurar). 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.

.cursor-plugin/plugin.json
{  "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"]  }}
mcp.json
{  "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:

ComponenteUbicación predeterminadaCómo se detecta
Skillsskills/Cada subdirectorio que contiene un archivo SKILL.md
Reglasrules/Todos los archivos .md, .mdc o .markdown
Agentes de programaciónagents/Todos los archivos .md, .mdc o .markdown
Comandoscommands/Todos los archivos .md, .mdc, .markdown o .txt
Hookshooks/hooks.jsonSe analiza para obtener los nombres de eventos de hook
Servidores MCPmcp.jsonSe analiza para obtener las entradas de servidor
Skill raízSKILL.md en la raíz del pluginSe 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:

rules/prefer-const.mdc
---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

CampoTipoDescripción
descriptionstringBreve descripción de lo que hace la regla
alwaysApplybooleanSi es true, la regla se aplica a todos los archivos. Si es false, la regla está disponible previa solicitud.
globsstring o arrayPatrones de archivos a los que se aplica la regla (p. ej., "**/*.ts")

Para consultar la documentación completa, consulta Reglas.

Formato de skills