UNPKG

@fission-ai/openspec

Version:

AI-native system for spec-driven development

44 lines (43 loc) 1.37 kB
/** * Cursor Command Adapter * * Formats commands for Cursor following its frontmatter specification. * Cursor uses a different frontmatter format and file naming convention. */ import path from 'path'; /** * Escapes a string value for safe YAML output. * Quotes the string if it contains special YAML characters. */ function escapeYamlValue(value) { // Check if value needs quoting (contains special YAML characters or starts/ends with whitespace) const needsQuoting = /[:\n\r#{}[\],&*!|>'"%@`]|^\s|\s$/.test(value); if (needsQuoting) { // Use double quotes and escape internal double quotes and backslashes const escaped = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n'); return `"${escaped}"`; } return value; } /** * Cursor adapter for command generation. * File path: .cursor/commands/opsx-<id>.md * Frontmatter: name (as /opsx-<id>), id, category, description */ export const cursorAdapter = { toolId: 'cursor', getFilePath(commandId) { return path.join('.cursor', 'commands', `opsx-${commandId}.md`); }, formatFile(content) { return `--- name: /opsx-${content.id} id: opsx-${content.id} category: ${escapeYamlValue(content.category)} description: ${escapeYamlValue(content.description)} --- ${content.body} `; }, }; //# sourceMappingURL=cursor.js.map