Skip to content

PromptScript API


Class: CursorFormatter

Defined in: formatters/src/formatters/cursor.ts:78

Formatter for Cursor rules.

Supports two versions: - modern (default): .cursor/rules/project.mdc with YAML frontmatter - legacy: .cursorrules plain text (deprecated)

Example

# Modern format (default)
targets:
  - cursor

# Legacy format for older Cursor versions
targets:
  - cursor:
      version: legacy

See

https://cursor.com/docs/context/rules

Extends

Constructors

Constructor

new CursorFormatter(): CursorFormatter

Returns

CursorFormatter

Inherited from

BaseFormatter.constructor

Properties

defaultConvention

readonly defaultConvention: "markdown" = 'markdown'

Defined in: formatters/src/formatters/cursor.ts:82

Default convention for this formatter

Overrides

BaseFormatter.defaultConvention


description

readonly description: "Cursor rules (MDC with frontmatter)" = 'Cursor rules (MDC with frontmatter)'

Defined in: formatters/src/formatters/cursor.ts:81

Human-readable description

Overrides

BaseFormatter.description


name

readonly name: "cursor" = 'cursor'

Defined in: formatters/src/formatters/cursor.ts:79

Unique formatter identifier

Overrides

BaseFormatter.name


outputPath

readonly outputPath: ".cursor/rules/project.mdc" = CURSOR_VERSIONS.modern.outputPath

Defined in: formatters/src/formatters/cursor.ts:80

Default output file path

Overrides

BaseFormatter.outputPath

Methods

createRenderer()

protected createRenderer(options?): ConventionRenderer

Defined in: formatters/src/base-formatter.ts:20

Create a convention renderer for this formatter. Uses the provided convention from options or falls back to the default.

Parameters

options?

FormatOptions

Returns

ConventionRenderer

Inherited from

BaseFormatter.createRenderer


extractSectionWithCodeBlock()

protected extractSectionWithCodeBlock(text, header): string | null

Defined in: formatters/src/base-formatter.ts:140

Safe extraction of a section that contains a header + content + code block + content Avoids ReDoS by using string search instead of backtracking regex. Matches pattern: Header ... ...

Parameters

text

string

string

Returns

string | null

Inherited from

BaseFormatter.extractSectionWithCodeBlock


extractText()

protected extractText(content): string

Defined in: formatters/src/base-formatter.ts:42

Extract text from block content.

Parameters

content

BlockContent

Returns

string

Inherited from

BaseFormatter.extractText


findBlock()

protected findBlock(ast, name): Block | undefined

Defined in: formatters/src/base-formatter.ts:35

Find a block by name, ignoring internal blocks (starting with __).

Parameters

ast

Program

name

string

Returns

Block | undefined

Inherited from

BaseFormatter.findBlock


format()

format(ast, options?): FormatterOutput

Defined in: formatters/src/formatters/cursor.ts:91

Transform AST to tool-specific format

Parameters

ast

Program

options?

FormatOptions

Returns

FormatterOutput

Overrides

BaseFormatter.format


formatArray()

protected formatArray(arr): string

Defined in: formatters/src/base-formatter.ts:84

Format an array as comma-separated string.

Parameters

arr

unknown[]

Returns

string

Inherited from

BaseFormatter.formatArray


getArrayElements()

protected getArrayElements(content): Value[]

Defined in: formatters/src/base-formatter.ts:108

Extract array elements from block content.

Parameters

content

BlockContent

Returns

Value[]

Inherited from

BaseFormatter.getArrayElements


getMetaField()

protected getMetaField(ast, key): string | undefined

Defined in: formatters/src/base-formatter.ts:98

Get meta field value as string.

Parameters

ast

Program

key

string

Returns

string | undefined

Inherited from

BaseFormatter.getMetaField


getOutputPath()

protected getOutputPath(options?): string

Defined in: formatters/src/base-formatter.ts:28

Get the output path, respecting options override.

Parameters

options?

FormatOptions

Returns

string

Inherited from

BaseFormatter.getOutputPath


getProp()

protected getProp(content, key): Value | undefined

Defined in: formatters/src/base-formatter.ts:56

Get a specific property from block content.

Parameters

content

BlockContent

key

string

Returns

Value | undefined

Inherited from

BaseFormatter.getProp


getProps()

protected getProps(content): Record\<string, Value>

Defined in: formatters/src/base-formatter.ts:70

Get all properties from block content.

Parameters

content

BlockContent

Returns

Record\<string, Value>

Inherited from

BaseFormatter.getProps


truncate()

protected truncate(str, max): string

Defined in: formatters/src/base-formatter.ts:91

Truncate string to max length with ellipsis.

Parameters

str

string

max

number

Returns

string

Inherited from

BaseFormatter.truncate


valueToString()

protected valueToString(value): string

Defined in: formatters/src/base-formatter.ts:118

Convert value to string representation.

Parameters

value

Value

Returns

string

Inherited from

BaseFormatter.valueToString


getSupportedVersions()

static getSupportedVersions(): object

Defined in: formatters/src/formatters/cursor.ts:87

Get supported versions for this formatter.

Returns

object

frontmatter

readonly frontmatter: object

frontmatter.cursorVersion

readonly cursorVersion: "0.45+" = '0.45+'

frontmatter.description

readonly description: "Alias for modern format (MDC with YAML frontmatter)" = 'Alias for modern format (MDC with YAML frontmatter)'

frontmatter.introduced

readonly introduced: "2024-12" = '2024-12'

frontmatter.name

readonly name: "frontmatter" = 'frontmatter'

frontmatter.outputPath

readonly outputPath: ".cursor/rules/project.mdc" = '.cursor/rules/project.mdc'

legacy

readonly legacy: object

legacy.cursorVersion

readonly cursorVersion: "< 0.45" = '< 0.45'

legacy.deprecated

readonly deprecated: true = true

legacy.deprecatedSince

readonly deprecatedSince: "2024-12" = '2024-12'

legacy.description

readonly description: "Plain text format (.cursorrules) - DEPRECATED" = 'Plain text format (.cursorrules) - DEPRECATED'

legacy.name

readonly name: "legacy" = 'legacy'

legacy.outputPath

readonly outputPath: ".cursorrules" = '.cursorrules'

modern

readonly modern: object

modern.cursorVersion

readonly cursorVersion: "0.45+" = '0.45+'

modern.description

readonly description: "MDC format with YAML frontmatter (.cursor/rules/project.mdc)" = 'MDC format with YAML frontmatter (.cursor/rules/project.mdc)'

modern.introduced

readonly introduced: "2024-12" = '2024-12'

modern.name

readonly name: "modern" = 'modern'

modern.outputPath

readonly outputPath: ".cursor/rules/project.mdc" = '.cursor/rules/project.mdc'

multifile

readonly multifile: object

multifile.cursorVersion

readonly cursorVersion: "0.45+" = '0.45+'

multifile.description

readonly description: "Multiple MDC files with glob-based targeting" = 'Multiple MDC files with glob-based targeting'

multifile.introduced

readonly introduced: "2024-12" = '2024-12'

multifile.name

readonly name: "multifile" = 'multifile'

multifile.outputPath

readonly outputPath: ".cursor/rules/project.mdc" = '.cursor/rules/project.mdc'