Abstract Class: BaseFormatter¶
Defined in: formatters/src/base-formatter.ts:28
Abstract base formatter with common helper methods. Extend this class to create new formatter implementations.
Extended by¶
MarkdownInstructionFormatterGitHubFormatterClaudeFormatterCursorFormatterAntigravityFormatterGrokFormatter
Implements¶
Constructors¶
Constructor¶
new BaseFormatter():
BaseFormatter
Returns¶
BaseFormatter
Properties¶
defaultConvention¶
abstractreadonlydefaultConvention:string
Defined in: formatters/src/base-formatter.ts:32
Default convention for this formatter
Implementation of¶
description¶
abstractreadonlydescription:string
Defined in: formatters/src/base-formatter.ts:31
Human-readable description
Implementation of¶
name¶
abstractreadonlyname:string
Defined in: formatters/src/base-formatter.ts:29
Unique formatter identifier
Implementation of¶
outputPath¶
abstractreadonlyoutputPath:string
Defined in: formatters/src/base-formatter.ts:30
Default output file path
Implementation of¶
standardsExtractor¶
protectedreadonlystandardsExtractor:StandardsExtractor
Defined in: formatters/src/base-formatter.ts:48
Shared standards extractor for consistent extraction across all formatters.
CONTEXT_RENDERED_KEYS¶
protectedreadonlystaticCONTEXT_RENDERED_KEYS:ReadonlySet\<string>
Defined in: formatters/src/base-formatter.ts:273
@context keys that already have a dedicated rendering path. Anything outside this set is generic and must be surfaced by the context section.
Methods¶
appendGenericStandardItems()¶
protectedappendGenericStandardItems(items,props,knownKeys):void
Defined in: formatters/src/base-formatter.ts:392
Append generic Label: value items for standards keys not handled by the known-key rendering in a section method. Keeps custom
Parameters¶
items¶
string[]
props¶
Record\<string, Value>
knownKeys¶
ReadonlySet\<string>
Returns¶
void
Standards¶
keys (git/config/documentation/diagrams) visible in monolith output. Skips null/undefined/false; renders bare labels for true.
contextArchitectureProperty()¶
protectedcontextArchitectureProperty(ast):string|null
Defined in: formatters/src/base-formatter.ts:293
Read the architecture property of @context. Used as a fallback for sources that declare architecture as a property rather than as an ## Architecture heading inside the block text.
Parameters¶
ast¶
Returns¶
string | null
contextPropertyItems()¶
protectedcontextPropertyItems(ast,alsoRenderedKeys?):string[]
Defined in: formatters/src/base-formatter.ts:306
Render @context properties that no dedicated section consumes as Label: value items, so structured context is never silently dropped.
Parameters¶
ast¶
alsoRenderedKeys?¶
readonly string[] = []
Returns¶
string[]
contextTextConsumedByProject()¶
protectedcontextTextConsumedByProject(ast):boolean
Defined in: formatters/src/base-formatter.ts:259
Whether the @context block's text is consumed by the project/intro fallback. Must mirror the project() and intro() consumption conditions exactly, otherwise the context section would either duplicate the text (predicate too narrow) or drop it entirely (predicate too wide).
Parameters¶
ast¶
Returns¶
boolean
createRenderer()¶
protectedcreateRenderer(options?):ConventionRenderer
Defined in: formatters/src/base-formatter.ts:54
Create a convention renderer for this formatter. Uses the provided convention from options or falls back to the default.
Parameters¶
options?¶
Returns¶
dedent()¶
protecteddedent(text):string
Defined in: formatters/src/base-formatter.ts:702
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
documentationItem()¶
protecteddocumentationItem(value,defaultText):string|null
Defined in: formatters/src/base-formatter.ts:377
Resolve a documentation-standard entry that accepts either a boolean flag or author-supplied prose. A string value is authoritative and replaces the target's default phrasing, so authored text is never silently discarded.
Parameters¶
value¶
Value | undefined
defaultText¶
string
Returns¶
string | null
extractContextTechStackItems()¶
protectedextractContextTechStackItems(props):string[]
Defined in: formatters/src/base-formatter.ts:339
Collect @context tech-stack entries from every supported shape: an explicit techStack list plus the languages/runtime/monorepo properties.
Parameters¶
props¶
Record\<string, Value>
Returns¶
string[]
extractExamples()¶
protectedextractExamples(ast):object[]
Defined in: formatters/src/base-formatter.ts:875
Extract examples from the
Parameters¶
ast¶
Returns¶
object[]
Examples¶
block. Returns an array of example definitions with name, input, output, and optional description.
extractSectionWithCodeBlock()¶
protectedextractSectionWithCodeBlock(text,header):string|null
Defined in: formatters/src/base-formatter.ts:426
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
header¶
string
Returns¶
string | null
extractSkillExamples()¶
protectedextractSkillExamples(skillProps):object[]
Defined in: formatters/src/base-formatter.ts:888
Extract examples from a skill's nested examples property. Returns the same shape as extractExamples.
Parameters¶
skillProps¶
Record\<string, Value>
Returns¶
object[]
extractSkills()¶
protectedextractSkills(ast,options?):SkillFileConfig[]
Defined in: formatters/src/base-formatter.ts:1092
Extract skills from the
Parameters¶
ast¶
options?¶
Returns¶
SkillFileConfig[]
Skills¶
block, skipping unsafe names and skills excluded by the target's skill filter.
extractText()¶
protectedextractText(content):string
Defined in: formatters/src/base-formatter.ts:89
Extract text from block content.
Parameters¶
content¶
Returns¶
string
findBlock()¶
protectedfindBlock(ast,name):Block|undefined
Defined in: formatters/src/base-formatter.ts:82
Find a block by name, ignoring internal blocks (starting with __).
Parameters¶
ast¶
name¶
string
Returns¶
Block | undefined
format()¶
abstractformat(ast,options?):FormatterOutput
Defined in: formatters/src/base-formatter.ts:33
Transform AST to target format
Parameters¶
ast¶
options?¶
Returns¶
Implementation of¶
formatArray()¶
protectedformatArray(arr):string
Defined in: formatters/src/base-formatter.ts:140
Format an array as comma-separated string.
Parameters¶
arr¶
unknown[]
Returns¶
string
formatCanonical()¶
formatCanonical(
ast,options?):FormatterOutput
Defined in: formatters/src/base-formatter.ts:41
Canonical entry point for legacy implementations.
Subclasses can override this method to consume ordered canonical entries directly. Until then, keep the compatibility projection isolated here.
Parameters¶
ast¶
options?¶
Returns¶
Implementation of¶
formatStandardsList()¶
protectedformatStandardsList(items):string[]
Defined in: formatters/src/base-formatter.ts:132
Format standards list from array of values (pass-through). Returns array of strings for rendering as bullet list.
Parameters¶
items¶
Returns¶
string[]
generateSkillFile()¶
protectedgenerateSkillFile(config,options?):FormatterOutput|null
Defined in: formatters/src/base-formatter.ts:1132
Render a skill file at the target's skill base path. Returns null when the target declares no skill support.
Parameters¶
config¶
SkillFileConfig
options?¶
Returns¶
FormatterOutput | null
getArrayElements()¶
protectedgetArrayElements(content):Value[]
Defined in: formatters/src/base-formatter.ts:164
Extract array elements from block content.
Parameters¶
content¶
Returns¶
Value[]
getBlockArrayElements()¶
protectedgetBlockArrayElements(block):Value[]
Defined in: formatters/src/base-formatter.ts:187
Parameters¶
block¶
Returns¶
Value[]
getMetaField()¶
protectedgetMetaField(ast,key):string|undefined
Defined in: formatters/src/base-formatter.ts:154
Get meta field value as string.
Parameters¶
ast¶
key¶
string
Returns¶
string | undefined
getNativeAgentName()¶
protectedgetNativeAgentName(ast,name):string
Defined in: formatters/src/base-formatter.ts:1012
Return the deterministic native identifier for one agent.
Parameters¶
ast¶
name¶
string
Returns¶
string
getNativeAgentNameMap()¶
protectedgetNativeAgentNameMap(ast):ReadonlyMap\<string,string>
Defined in: formatters/src/base-formatter.ts:1002
Map all agent names consistently for a target's native files.
Parameters¶
ast¶
Returns¶
ReadonlyMap\<string, string>
getOutputPath()¶
protectedgetOutputPath(options?):string
Defined in: formatters/src/base-formatter.ts:75
Get the output path, respecting options override.
Parameters¶
options?¶
Returns¶
string
getPrettierOptions()¶
protectedgetPrettierOptions(options?):Required\<PrettierMarkdownOptions>
Defined in: formatters/src/base-formatter.ts:65
Get resolved Prettier options, merging provided options with defaults.
Parameters¶
options?¶
Returns¶
Required\<PrettierMarkdownOptions>
getProp()¶
protectedgetProp(content,key):Value|undefined
Defined in: formatters/src/base-formatter.ts:103
Get a specific property from block content.
Parameters¶
content¶
key¶
string
Returns¶
Value | undefined
getProps()¶
protectedgetProps(content):Record\<string,Value>
Defined in: formatters/src/base-formatter.ts:117
Get all properties from block content.
Parameters¶
content¶
Returns¶
Record\<string, Value>
getSkillBasePath()¶
getSkillBasePath():
string|null
Defined in: formatters/src/base-formatter.ts:936
Base path for skills, or null if formatter has no skill support.
Returns¶
string | null
Implementation of¶
getSkillFileName()¶
getSkillFileName():
string|null
Defined in: formatters/src/base-formatter.ts:941
Skill file name, or null if formatter has no skill support.
Returns¶
string | null
Implementation of¶
humanizeLabel()¶
protectedhumanizeLabel(value):string
Defined in: formatters/src/base-formatter.ts:412
Convert a camelCase/kebab-case key into a human-readable label.
Parameters¶
value¶
string
Returns¶
string
isSafeAgentName()¶
protectedisSafeAgentName(name):boolean
Defined in: formatters/src/base-formatter.ts:995
Check if an agent name is safe for use in file paths.
Parameters¶
name¶
string
Returns¶
boolean
isSafeName()¶
protectedisSafeName(name):boolean
Defined in: formatters/src/base-formatter.ts:975
Check if a name is safe for use in file paths. Rejects path traversal sequences and path separators.
Parameters¶
name¶
string
Returns¶
boolean
isSafeSkillName()¶
protectedisSafeSkillName(name):boolean
Defined in: formatters/src/base-formatter.ts:988
Check if a skill name is safe for use in file paths.
Parameters¶
name¶
string
Returns¶
boolean
mergeRequiredSkillFrontmatter()¶
protectedmergeRequiredSkillFrontmatter(rawFrontmatter,name,description):string
Defined in: formatters/src/base-formatter.ts:1060
Preserve raw skill frontmatter while supplying mandatory skill fields.
Parameters¶
rawFrontmatter¶
string
name¶
string
description¶
string
Returns¶
string
normalizeMarkdownForPrettier()¶
protectednormalizeMarkdownForPrettier(content):string
Defined in: formatters/src/base-formatter.ts:454
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
normalizeOutputDir()¶
protectednormalizeOutputDir(dir):string
Defined in: formatters/src/base-formatter.ts:735
Normalize a user-provided output directory (from @use ... into "<path>" or skillTargets config) to a safe forward-slash relative path. Rejects .., . and leading slashes so the result can be appended to a target's dot-directory without escaping it.
Parameters¶
dir¶
string
Returns¶
string
normalizeResourcePath()¶
protectednormalizeResourcePath(relativePath):string|null
Defined in: formatters/src/base-formatter.ts:802
Normalize a resource path to a safe, portable relative path.
Parameters¶
relativePath¶
string
Returns¶
string | null
referenceProvenance()¶
protectedreferenceProvenance(sourcePath):string
Defined in: formatters/src/base-formatter.ts:967
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:951
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¶
renderCodeFence()¶
protectedrenderCodeFence(content,lang?):string
Defined in: formatters/src/base-formatter.ts:1204
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()¶
protectedrenderExamplesSection(ast,renderer,sectionName?):string|null
Defined in: formatters/src/base-formatter.ts:904
Render an examples section from the
Parameters¶
ast¶
renderer¶
sectionName?¶
string = 'Examples'
Custom section heading name (default: 'Examples')
Returns¶
string | null
Examples¶
block. Shared rendering logic used by Claude, GitHub, and MarkdownInstructionFormatter.
resolveSkillDir()¶
protectedresolveSkillDir(defaultSkillBasePath,skillName,outputDir?,options?):string
Defined in: formatters/src/base-formatter.ts:765
Resolve the directory for a generated skill, respecting per-target skill base overrides while preserving existing @use ... into behavior.
Parameters¶
defaultSkillBasePath¶
string
skillName¶
string
outputDir?¶
string
options?¶
Returns¶
string
sanitizeResourceFiles()¶
protectedsanitizeResourceFiles(resources,targetDir):FormatterOutput[]
Defined in: formatters/src/base-formatter.ts:821
Filter resource files to only include safe canonical paths.
Parameters¶
resources¶
object[] | undefined
targetDir¶
string
Returns¶
shortcutSummary()¶
protectedshortcutSummary(value,fallback?):string
Defined in: formatters/src/base-formatter.ts:234
Extract a stable one-line summary from any supported shortcut value.
Parameters¶
value¶
fallback?¶
string = ''
Returns¶
string
shouldIncludeSkill()¶
protectedshouldIncludeSkill(name,options?):boolean
Defined in: formatters/src/base-formatter.ts:754
Return true when the target configuration allows emitting the given skill.
Parameters¶
name¶
string
options?¶
Returns¶
boolean
stripAllIndent()¶
protectedstripAllIndent(content):string
Defined in: formatters/src/base-formatter.ts:598
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
transformInjectedSkillContent()¶
transformInjectedSkillContent(
content):string
Defined in: formatters/src/base-formatter.ts:960
Default pass-through for injected skill content. Formatters whose target tools restrict skill frontmatter (e.g. Factory AI) override this hook to filter unsupported fields before the compiler writes the file.
Parameters¶
content¶
string
Returns¶
string
Implementation of¶
Formatter.transformInjectedSkillContent
truncate()¶
protectedtruncate(str,max):string
Defined in: formatters/src/base-formatter.ts:147
Truncate string to max length with ellipsis.
Parameters¶
str¶
string
max¶
number
Returns¶
string
valueToString()¶
protectedvalueToString(value):string
Defined in: formatters/src/base-formatter.ts:214
Convert value to string representation.
Parameters¶
value¶
Returns¶
string
yamlQuoted()¶
protectedyamlQuoted(value):string
Defined in: formatters/src/base-formatter.ts:284
Escape a value for use inside a double-quoted YAML scalar.
Parameters¶
value¶
string
Returns¶
string
yamlString()¶
protectedyamlString(value):string
Defined in: formatters/src/base-formatter.ts:1031
Serialize a string as a YAML scalar, quoting only when required.
Parameters¶
value¶
string
Returns¶
string