Skip to content

PromptScript API


Abstract Class: BaseFormatter

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

Abstract base formatter with common helper methods. Extend this class to create new formatter implementations.

Extended by

Implements

Constructors

Constructor

new BaseFormatter(): BaseFormatter

Returns

BaseFormatter

Properties

defaultConvention

abstract readonly defaultConvention: string

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

Default convention for this formatter

Implementation of

Formatter.defaultConvention


description

abstract readonly description: string

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

Human-readable description

Implementation of

Formatter.description


name

abstract readonly name: string

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

Unique formatter identifier

Implementation of

Formatter.name


outputPath

abstract readonly outputPath: string

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

Default output file path

Implementation of

Formatter.outputPath


standardsExtractor

protected readonly standardsExtractor: StandardsExtractor

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

Shared standards extractor for consistent extraction across all formatters.

Methods

createRenderer()

protected createRenderer(options?): ConventionRenderer

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

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

Parameters

options?

FormatOptions

Returns

ConventionRenderer


dedent()

protected dedent(text): string

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

Remove common leading whitespace from all lines (dedent). Handles the case where trim() was already called, causing the first line to lose its indentation while subsequent lines retain theirs. Calculates minimum indent from lines 2+ only.

Parameters

text

string

Returns

string


extractExamples()

protected extractExamples(ast): object[]

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

Extract examples from the

Parameters

ast

Program

Returns

object[]

Examples

block. Returns an array of example definitions with name, input, output, and optional description.


extractSectionWithCodeBlock()

protected extractSectionWithCodeBlock(text, header): string | null

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

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


extractSkillExamples()

protected extractSkillExamples(skillProps): object[]

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

Extract examples from a skill's nested examples property. Returns the same shape as extractExamples.

Parameters

skillProps

Record\<string, Value>

Returns

object[]


extractText()

protected extractText(content): string

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

Extract text from block content.

Parameters

content

BlockContent

Returns

string


findBlock()

protected findBlock(ast, name): Block | undefined

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

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

Parameters

ast

Program

name

string

Returns

Block | undefined


format()

abstract format(ast, options?): FormatterOutput

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

Transform AST to tool-specific format

Parameters

ast

Program

options?

FormatOptions

Returns

FormatterOutput

Implementation of

Formatter.format


formatArray()

protected formatArray(arr): string

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

Format an array as comma-separated string.

Parameters

arr

unknown[]

Returns

string


formatStandardsList()

protected formatStandardsList(items): string[]

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

Format standards list from array of values (pass-through). Returns array of strings for rendering as bullet list.

Parameters

items

Value

Returns

string[]


getArrayElements()

protected getArrayElements(content): Value[]

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

Extract array elements from block content.

Parameters

content

BlockContent

Returns

Value[]


getMetaField()

protected getMetaField(ast, key): string | undefined

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

Get meta field value as string.

Parameters

ast

Program

key

string

Returns

string | undefined


getOutputPath()

protected getOutputPath(options?): string

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

Get the output path, respecting options override.

Parameters

options?

FormatOptions

Returns

string


getPrettierOptions()

protected getPrettierOptions(options?): Required\<PrettierMarkdownOptions>

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

Get resolved Prettier options, merging provided options with defaults.

Parameters

options?

FormatOptions

Returns

Required\<PrettierMarkdownOptions>


getProp()

protected getProp(content, key): Value | undefined

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

Get a specific property from block content.

Parameters

content

BlockContent

key

string

Returns

Value | undefined


getProps()

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

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

Get all properties from block content.

Parameters

content

BlockContent

Returns

Record\<string, Value>


getSkillBasePath()

getSkillBasePath(): string | null

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

Base path for skills, or null if formatter has no skill support.

Returns

string | null

Implementation of

Formatter.getSkillBasePath


getSkillFileName()

getSkillFileName(): string | null

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

Skill file name, or null if formatter has no skill support.

Returns

string | null

Implementation of

Formatter.getSkillFileName


isSafeSkillName()

protected isSafeSkillName(name): boolean

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

Check if a skill name is safe for use in file paths.

Parameters

name

string

Returns

boolean


normalizeMarkdownForPrettier()

protected normalizeMarkdownForPrettier(content): string

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

Normalize markdown content to match Prettier formatting. - Strips common leading indentation from lines - Trims trailing whitespace from lines - Normalizes markdown table formatting - Adds blank lines before lists when preceded by text - Adds blank lines before code blocks when preceded by text - Escapes markdown special characters in paths

Parameters

content

string

Returns

string


referenceProvenance()

protected referenceProvenance(sourcePath): string

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

Generate a provenance comment for a reference file.

Parameters

sourcePath

string

Returns

string


referencesMode()

referencesMode(): "none" | "directory" | "inline"

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

How this formatter handles skill references. - 'directory': emit as separate files in references/ subdirectory - 'inline': append as sections in the main output file - 'none': references not supported

Returns

"none" | "directory" | "inline"

Implementation of

Formatter.referencesMode


renderCodeFence()

protected renderCodeFence(content, lang?): string

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

Render content inside a code fence, using a longer fence if the content itself contains triple backticks (prevents code fence injection).

Parameters

content

string

lang?

string = ''

Returns

string


renderExamplesSection()

protected renderExamplesSection(ast, renderer, sectionName?): string | null

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

Render an examples section from the

Parameters

ast

Program

renderer

ConventionRenderer

sectionName?

string = 'Examples'

Custom section heading name (default: 'Examples')

Returns

string | null

Examples

block. Shared rendering logic used by Claude, GitHub, and MarkdownInstructionFormatter.


sanitizeResourceFiles()

protected sanitizeResourceFiles(resources, targetDir): FormatterOutput[]

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

Filter resource files to only include safe paths. Rejects paths with traversal, absolute paths, and unsafe names.

Parameters

resources

object[] | undefined

targetDir

string

Returns

FormatterOutput[]


stripAllIndent()

protected stripAllIndent(content): string

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

Strip all leading indentation from markdown content. Used for AGENTS.md where content from multiple sources has inconsistent indentation. Preserves indentation inside code blocks.

Parameters

content

string

Returns

string


truncate()

protected truncate(str, max): string

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

Truncate string to max length with ellipsis.

Parameters

str

string

max

number

Returns

string


valueToString()

protected valueToString(value): string

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

Convert value to string representation.

Parameters

value

Value

Returns

string