Skip to content

Cursor

LNAI exports unified configuration to Cursor IDE’s native .cursor/ format, transforming rules and settings as needed.

AGENTS.md # Symlink → .ai/AGENTS.md (at project root)
.cursor/
├── rules/<name>.mdc # Transformed from .ai/rules/<name>.md
├── skills/<name>/ # Symlinks → ../../.ai/skills/<name>/
├── mcp.json # Generated
├── cli.json # Generated
└── <overrides> # Symlinks from .ai/.cursor/
SourceOutputType
.ai/AGENTS.mdAGENTS.mdSymlink
.ai/rules/<name>.md.cursor/rules/<name>.mdcTransformed
.ai/skills/<name>/.cursor/skills/<name>/Symlink
.ai/settings.json.cursor/mcp.jsonGenerated
.ai/settings.json.cursor/cli.jsonGenerated
.ai/.cursor/<path>.cursor/<path>Symlink

MCP servers are exported to .cursor/mcp.json with environment variable transformation:

// Input (LNAI format)
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["-y", "@example/db"],
"env": { "DB_URL": "${DB_URL}" }
}
}
}
// Output (Cursor format)
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["-y", "@example/db"],
"env": { "DB_URL": "${env:DB_URL}" }
}
}
}
LNAICursor
${VAR}${env:VAR}
type: "http"url field only
type: "sse"url field only

Permissions are exported to .cursor/cli.json with transformations:

// Input (LNAI format)
{
"permissions": {
"allow": ["Bash(git:*)"],
"ask": ["Bash(npm:*)"],
"deny": ["Read(.env)"]
}
}
// Output (Cursor format)
{
"permissions": {
"allow": ["Shell(git)", "Shell(npm)"],
"deny": ["Read(.env)"]
}
}
LNAICursorNotes
Bash()Shell()Tool name changed
git:*gitPattern simplified to command
permissions.askpermissions.allow⚠️ Cursor has no “ask” level

Warning: Cursor does not support the “ask” permission level. Rules in permissions.ask are automatically mapped to permissions.allow. LNAI will display a warning when this occurs.

Rules are transformed from .md to .mdc format with YAML frontmatter:

.ai/rules/typescript.md
paths:
- "\*_/_.ts"
- "\*_/_.tsx"
---
# TypeScript Guidelines
Use strict TypeScript...
## <!-- Output: .cursor/rules/typescript.mdc -->
description: "TypeScript Guidelines"
globs:
- "\*_/_.ts"
- "\*_/_.tsx"
alwaysApply: false
---
# TypeScript Guidelines
Use strict TypeScript...
LNAI FieldCursor FieldNotes
pathsglobsRenamed
(first H1)descriptionExtracted from content
(empty paths)alwaysApply: trueRules without paths always apply

Place Cursor-specific files in .ai/.cursor/ to have them symlinked directly:

.ai/.cursor/
└── custom-config.json → .cursor/custom-config.json

When an override file exists at the same path as a generated file (e.g., mcp.json), the override takes priority.