cursor-kit-cli 1.3.0-beta.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +90 -23
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +90 -23
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/manifest.json +3 -3
- package/templates/rules/{coding-style.mdc → coding-style.md} +2 -2
- package/templates/rules/toc.md +28 -0
- package/templates/skills/frontend-design/{SKILL.mdc → SKILL.md} +1 -1
- package/templates/skills/frontend-development/{SKILL.mdc → SKILL.md} +1 -1
- package/templates/skills/research/{SKILL.mdc → SKILL.md} +1 -1
- package/templates/rules/toc.mdc +0 -28
- /package/templates/rules/{git.mdc → git.md} +0 -0
- /package/templates/skills/backend-development/{SKILL.mdc → SKILL.md} +0 -0
- /package/templates/skills/problem-solving/{SKILL.mdc → SKILL.md} +0 -0
- /package/templates/skills/sequential-thinking/{SKILL.mdc → SKILL.md} +0 -0
- /package/templates/skills/ui-styling/{SKILL.mdc → SKILL.md} +0 -0
package/dist/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/.pnpm/tsup@8.5.1_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","../src/cli.ts","../src/utils/branding.ts","../src/commands/init.ts","../src/utils/fs.ts","../src/utils/templates.ts","../src/utils/constants.ts","../src/utils/copilot.ts","../src/commands/add.ts","../src/commands/pull.ts","../src/commands/list.ts","../src/commands/remove.ts","../src/commands/instance.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { defineCommand, runMain } from \"citty\";\nimport { createRequire } from \"node:module\";\nimport { printBanner, printVersion } from \"./utils/branding\";\nimport { initCommand } from \"./commands/init\";\nimport { addCommand } from \"./commands/add\";\nimport { pullCommand } from \"./commands/pull\";\nimport { listCommand } from \"./commands/list\";\nimport { removeCommand } from \"./commands/remove\";\nimport { instanceCommand } from \"./commands/instance\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"../package.json\") as { version: string };\n\nconst main = defineCommand({\n meta: {\n name: \"cursor-kit\",\n version: pkg.version,\n description: \"CLI toolkit to manage Cursor IDE rules and commands\",\n },\n setup() {\n printBanner();\n printVersion(pkg.version);\n },\n subCommands: {\n init: initCommand,\n add: addCommand,\n pull: pullCommand,\n list: listCommand,\n remove: removeCommand,\n instance: instanceCommand,\n },\n});\n\nrunMain(main);\n\n","import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { join } from \"node:path\";\nimport {\n ensureDir,\n getCursorDir,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n getConflictingFiles,\n getConflictingDirs,\n writeFile,\n} from \"../utils/fs\";\nimport { highlight, printDivider, printSuccess } from \"../utils/branding\";\nimport {\n fetchTemplateManifest,\n fetchMultipleTemplates,\n getTemplateLabel,\n getSkillLabel,\n copyLocalSkill,\n type TemplateManifest,\n type TemplateType,\n} from \"../utils/templates\";\nimport { type InstructionTarget } from \"../types/init\";\nimport {\n checkCopilotConflicts,\n installCopilotInstructions,\n} from \"../utils/copilot\";\n\ntype ConflictStrategy = \"overwrite\" | \"merge\" | \"cancel\";\n\ninterface InitResult {\n added: string[];\n skipped: string[];\n}\n\nasync function promptTargetSelection(): Promise<InstructionTarget | symbol> {\n return await p.select({\n message: \"Which AI IDE are you using?\",\n options: [\n {\n value: \"cursor\" as const,\n label: \"Cursor\",\n hint: \"Generate .cursor/ directory structure\",\n },\n {\n value: \"github-copilot\" as const,\n label: \"GitHub Copilot\",\n hint: \"Generate .github/copilot-instructions.md\",\n },\n ],\n initialValue: \"cursor\",\n });\n}\n\nasync function handleCopilotInstallation(\n cwd: string,\n manifest: TemplateManifest,\n args: {\n all?: boolean;\n commands?: boolean;\n rules?: boolean;\n skills?: boolean;\n force?: boolean;\n },\n shouldInitCommands: boolean,\n shouldInitRules: boolean,\n shouldInitSkills: boolean\n): Promise<void> {\n const s = p.spinner();\n\n const canProceed = await checkCopilotConflicts(cwd, args.force ?? false);\n if (!canProceed) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n let selectedCommands: string[] = [];\n let selectedRules: string[] = [];\n let selectedSkills: string[] = [];\n\n if (shouldInitCommands) {\n if (args.all) {\n selectedCommands = manifest.commands;\n } else {\n const selection = await selectTemplates(\"commands\", manifest.commands);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedCommands = selection;\n }\n }\n\n if (shouldInitRules) {\n if (args.all) {\n selectedRules = manifest.rules;\n } else {\n const selection = await selectTemplates(\"rules\", manifest.rules);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedRules = selection;\n }\n }\n\n if (shouldInitSkills) {\n if (args.all) {\n selectedSkills = manifest.skills;\n } else {\n const selection = await selectTemplates(\"skills\", manifest.skills);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedSkills = selection;\n }\n }\n\n if (\n selectedCommands.length === 0 &&\n selectedRules.length === 0 &&\n selectedSkills.length === 0\n ) {\n p.cancel(\"No templates selected\");\n process.exit(0);\n }\n\n try {\n s.start(\"Installing GitHub Copilot instructions...\");\n const result = await installCopilotInstructions(\n cwd,\n selectedCommands,\n selectedRules,\n selectedSkills\n );\n s.stop(\"GitHub Copilot instructions installed\");\n\n printDivider();\n console.log();\n\n if (result.commands.length > 0) {\n printSuccess(`Commands: ${highlight(result.commands.length.toString())} added`);\n for (const cmd of result.commands) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${cmd}`));\n }\n }\n\n if (result.rules.length > 0) {\n printSuccess(`Rules: ${highlight(result.rules.length.toString())} added`);\n for (const rule of result.rules) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${rule}`));\n }\n }\n\n if (result.skills.length > 0) {\n printSuccess(`Skills: ${highlight(result.skills.length.toString())} added`);\n for (const skill of result.skills) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${skill}`));\n }\n }\n\n console.log();\n p.outro(pc.green(\"✨ GitHub Copilot instructions created successfully!\"));\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n process.exit(1);\n }\n}\n\nasync function selectTemplates(\n type: TemplateType,\n availableTemplates: string[]\n): Promise<string[] | symbol> {\n const labelFn = type === \"skills\" ? getSkillLabel : getTemplateLabel;\n\n const selectionMode = await p.select({\n message: `How would you like to add ${type}?`,\n options: [\n {\n value: \"all\",\n label: `Add all ${availableTemplates.length} ${type}`,\n hint: \"Install everything\",\n },\n {\n value: \"select\",\n label: \"Select specific items\",\n hint: \"Choose which ones to install\",\n },\n ],\n });\n\n if (p.isCancel(selectionMode)) return selectionMode;\n\n if (selectionMode === \"all\") {\n return availableTemplates;\n }\n\n const selectedTemplates = await p.multiselect({\n message: `Select ${type} to add:`,\n options: availableTemplates.map((template) => ({\n value: template,\n label: labelFn(template),\n hint: template,\n })),\n required: true,\n });\n\n return selectedTemplates as string[] | symbol;\n}\n\nasync function handleConflicts(\n type: TemplateType,\n conflictingFiles: string[]\n): Promise<ConflictStrategy | symbol> {\n console.log();\n console.log(\n pc.yellow(`⚠ ${conflictingFiles.length} existing ${type} found:`)\n );\n for (const file of conflictingFiles) {\n console.log(pc.dim(` └─ ${file}`));\n }\n console.log();\n\n const strategy = await p.select({\n message: \"How would you like to handle conflicts?\",\n options: [\n {\n value: \"overwrite\" as ConflictStrategy,\n label: \"Overwrite existing files\",\n hint: \"Replace all conflicting files\",\n },\n {\n value: \"merge\" as ConflictStrategy,\n label: \"Merge (keep existing, add new only)\",\n hint: \"Skip files that already exist\",\n },\n {\n value: \"cancel\" as ConflictStrategy,\n label: \"Cancel\",\n hint: \"Abort the operation\",\n },\n ],\n });\n\n return strategy as ConflictStrategy | symbol;\n}\n\nasync function installTemplates(\n type: TemplateType,\n targetDir: string,\n selectedTemplates: string[],\n conflictStrategy: ConflictStrategy\n): Promise<InitResult> {\n const result: InitResult = { added: [], skipped: [] };\n const conflictingFiles = getConflictingFiles(targetDir, selectedTemplates);\n\n let templatesToInstall: string[];\n\n if (conflictStrategy === \"merge\") {\n templatesToInstall = selectedTemplates.filter(\n (t) => !conflictingFiles.includes(t)\n );\n result.skipped = conflictingFiles.filter((f) =>\n selectedTemplates.includes(f)\n );\n } else {\n templatesToInstall = selectedTemplates;\n }\n\n if (templatesToInstall.length === 0) {\n return result;\n }\n\n const templates = await fetchMultipleTemplates(type, templatesToInstall);\n\n ensureDir(targetDir);\n\n for (const [filename, content] of templates) {\n const filePath = join(targetDir, filename);\n writeFile(filePath, content);\n result.added.push(filename);\n }\n\n return result;\n}\n\nasync function installSkills(\n targetDir: string,\n selectedSkills: string[],\n conflictStrategy: ConflictStrategy\n): Promise<InitResult> {\n const result: InitResult = { added: [], skipped: [] };\n const conflictingDirs = getConflictingDirs(targetDir, selectedSkills);\n\n let skillsToInstall: string[];\n\n if (conflictStrategy === \"merge\") {\n skillsToInstall = selectedSkills.filter(\n (s) => !conflictingDirs.includes(s)\n );\n result.skipped = conflictingDirs.filter((d) =>\n selectedSkills.includes(d)\n );\n } else {\n skillsToInstall = selectedSkills;\n }\n\n if (skillsToInstall.length === 0) {\n return result;\n }\n\n ensureDir(targetDir);\n\n for (const skillName of skillsToInstall) {\n const success = copyLocalSkill(skillName, targetDir);\n if (success) {\n result.added.push(skillName);\n }\n }\n\n return result;\n}\n\nexport const initCommand = defineCommand({\n meta: {\n name: \"init\",\n description:\n \"Initialize .cursor/commands, .cursor/rules, and .cursor/skills in your project\",\n },\n args: {\n force: {\n type: \"boolean\",\n alias: \"f\",\n description: \"Overwrite existing files without prompting\",\n default: false,\n },\n commands: {\n type: \"boolean\",\n alias: \"c\",\n description: \"Only initialize commands\",\n default: false,\n },\n rules: {\n type: \"boolean\",\n alias: \"r\",\n description: \"Only initialize rules\",\n default: false,\n },\n skills: {\n type: \"boolean\",\n alias: \"s\",\n description: \"Only initialize skills\",\n default: false,\n },\n all: {\n type: \"boolean\",\n alias: \"a\",\n description: \"Install all templates without selection prompts\",\n default: false,\n },\n target: {\n type: \"string\",\n alias: \"t\",\n description: \"Target AI IDE: 'cursor' or 'github-copilot'\",\n default: undefined,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const cursorDir = getCursorDir(cwd);\n const commandsDir = getCommandsDir(cwd);\n const rulesDir = getRulesDir(cwd);\n const skillsDir = getSkillsDir(cwd);\n\n const initAll = !args.commands && !args.rules && !args.skills;\n const shouldInitCommands = initAll || args.commands;\n const shouldInitRules = initAll || args.rules;\n const shouldInitSkills = initAll || args.skills;\n\n p.intro(pc.bgCyan(pc.black(\" cursor-kit init \")));\n\n let target: InstructionTarget;\n if (args.target === \"github-copilot\" || args.target === \"cursor\") {\n target = args.target;\n } else {\n const selection = await promptTargetSelection();\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n target = selection;\n }\n\n const s = p.spinner();\n\n let manifest: TemplateManifest;\n\n try {\n s.start(\"Fetching template manifest...\");\n manifest = await fetchTemplateManifest();\n s.stop(\"Template manifest loaded\");\n } catch (error) {\n s.stop(\"Failed to fetch manifest\");\n p.cancel(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n process.exit(1);\n }\n\n if (target === \"github-copilot\") {\n await handleCopilotInstallation(\n cwd,\n manifest,\n args,\n shouldInitCommands,\n shouldInitRules,\n shouldInitSkills\n );\n return;\n }\n\n const results: {\n commands?: InitResult;\n rules?: InitResult;\n skills?: InitResult;\n } = {};\n\n try {\n ensureDir(cursorDir);\n\n if (shouldInitCommands) {\n let selectedCommands: string[];\n\n if (args.all) {\n selectedCommands = manifest.commands;\n } else {\n const selection = await selectTemplates(\"commands\", manifest.commands);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedCommands = selection;\n }\n\n const conflictingCommands = getConflictingFiles(\n commandsDir,\n selectedCommands\n );\n let commandStrategy: ConflictStrategy = \"overwrite\";\n\n if (conflictingCommands.length > 0 && !args.force) {\n const strategy = await handleConflicts(\"commands\", conflictingCommands);\n if (p.isCancel(strategy) || strategy === \"cancel\") {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n commandStrategy = strategy;\n }\n\n s.start(\"Installing commands...\");\n results.commands = await installTemplates(\n \"commands\",\n commandsDir,\n selectedCommands,\n commandStrategy\n );\n s.stop(\"Commands installed\");\n }\n\n if (shouldInitRules) {\n let selectedRules: string[];\n\n if (args.all) {\n selectedRules = manifest.rules;\n } else {\n const selection = await selectTemplates(\"rules\", manifest.rules);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedRules = selection;\n }\n\n const conflictingRules = getConflictingFiles(rulesDir, selectedRules);\n let ruleStrategy: ConflictStrategy = \"overwrite\";\n\n if (conflictingRules.length > 0 && !args.force) {\n const strategy = await handleConflicts(\"rules\", conflictingRules);\n if (p.isCancel(strategy) || strategy === \"cancel\") {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n ruleStrategy = strategy;\n }\n\n s.start(\"Installing rules...\");\n results.rules = await installTemplates(\n \"rules\",\n rulesDir,\n selectedRules,\n ruleStrategy\n );\n s.stop(\"Rules installed\");\n }\n\n if (shouldInitSkills) {\n let selectedSkills: string[];\n\n if (args.all) {\n selectedSkills = manifest.skills;\n } else {\n const selection = await selectTemplates(\"skills\", manifest.skills);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedSkills = selection;\n }\n\n const conflictingSkills = getConflictingDirs(skillsDir, selectedSkills);\n let skillStrategy: ConflictStrategy = \"overwrite\";\n\n if (conflictingSkills.length > 0 && !args.force) {\n const strategy = await handleConflicts(\"skills\", conflictingSkills);\n if (p.isCancel(strategy) || strategy === \"cancel\") {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n skillStrategy = strategy;\n }\n\n s.start(\"Installing skills...\");\n results.skills = await installSkills(\n skillsDir,\n selectedSkills,\n skillStrategy\n );\n s.stop(\"Skills installed\");\n }\n\n printDivider();\n console.log();\n\n if (results.commands) {\n const { added, skipped } = results.commands;\n if (added.length > 0 || skipped.length > 0) {\n printSuccess(\n `Commands: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n );\n for (const f of added) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${f}`));\n }\n for (const f of skipped) {\n console.log(pc.dim(` └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n }\n }\n }\n\n if (results.rules) {\n const { added, skipped } = results.rules;\n if (added.length > 0 || skipped.length > 0) {\n printSuccess(\n `Rules: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n );\n for (const f of added) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${f}`));\n }\n for (const f of skipped) {\n console.log(pc.dim(` └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n }\n }\n }\n\n if (results.skills) {\n const { added, skipped } = results.skills;\n if (added.length > 0 || skipped.length > 0) {\n printSuccess(\n `Skills: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n );\n for (const f of added) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${f}`));\n }\n for (const f of skipped) {\n console.log(pc.dim(` └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n }\n }\n }\n\n const totalAdded =\n (results.commands?.added.length ?? 0) +\n (results.rules?.added.length ?? 0) +\n (results.skills?.added.length ?? 0);\n const totalSkipped =\n (results.commands?.skipped.length ?? 0) +\n (results.rules?.skipped.length ?? 0) +\n (results.skills?.skipped.length ?? 0);\n\n if (totalAdded === 0 && totalSkipped > 0) {\n console.log();\n p.outro(pc.yellow(\"No new templates added (all selected files already exist)\"));\n } else {\n console.log();\n p.outro(pc.green(\"✨ Cursor Kit initialized successfully!\"));\n }\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n process.exit(1);\n }\n },\n});\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function copyDir(src: string, dest: string): void {\n cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function listDirs(dir: string): string[] {\n if (!dirExists(dir)) return [];\n \n return readdirSync(dir).filter((item) => {\n const itemPath = join(dir, item);\n return statSync(itemPath).isDirectory();\n });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return [];\n return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return dirs;\n return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n\nexport function getGitHubDir(cwd: string = process.cwd()): string {\n return join(cwd, \".github\");\n}\n\nexport function getCopilotInstructionsPath(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions.md\");\n}\n\nexport function getCopilotInstructionsDir(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions\");\n}\n\nexport function getCopilotCommandsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"commands\");\n}\n\nexport function getCopilotRulesDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"rules\");\n}\n\nexport function getCopilotSkillsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"skills\");\n}\n\nexport function deleteFile(path: string): void {\n if (fileExists(path)) {\n rmSync(path);\n }\n}\n","import { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { REPO_RAW_URL, TEMPLATE_PATHS } from \"./constants\";\nimport { fileExists, readFile, dirExists, listFiles, listDirs, copyDir, ensureDir } from \"./fs\";\n\nexport interface TemplateManifest {\n commands: string[];\n rules: string[];\n skills: string[];\n}\n\nexport type TemplateType = \"commands\" | \"rules\" | \"skills\";\n\nexport interface TemplateItem {\n name: string;\n type: TemplateType;\n}\n\nfunction getLocalTemplatesDir(): string {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n return join(currentDir, \"..\", \"templates\");\n}\n\nfunction getLocalManifest(): TemplateManifest | null {\n const templatesDir = getLocalTemplatesDir();\n const manifestPath = join(templatesDir, \"manifest.json\");\n\n if (fileExists(manifestPath)) {\n try {\n return JSON.parse(readFile(manifestPath)) as TemplateManifest;\n } catch {\n return null;\n }\n }\n\n const commandsDir = join(templatesDir, \"commands\");\n const rulesDir = join(templatesDir, \"rules\");\n const skillsDir = join(templatesDir, \"skills\");\n\n if (!dirExists(commandsDir) && !dirExists(rulesDir) && !dirExists(skillsDir)) {\n return null;\n }\n\n return {\n commands: dirExists(commandsDir) ? listFiles(commandsDir, \".md\") : [],\n rules: dirExists(rulesDir) ? listFiles(rulesDir, \".mdc\") : [],\n skills: dirExists(skillsDir) ? listDirs(skillsDir) : [],\n };\n}\n\nfunction getLocalTemplateContent(type: TemplateType, filename: string): string | null {\n const templatesDir = getLocalTemplatesDir();\n const filePath = join(templatesDir, type, filename);\n\n if (fileExists(filePath)) {\n return readFile(filePath);\n }\n\n return null;\n}\n\nexport function getLocalSkillDir(skillName: string): string | null {\n const templatesDir = getLocalTemplatesDir();\n const skillPath = join(templatesDir, \"skills\", skillName);\n\n if (dirExists(skillPath)) {\n return skillPath;\n }\n\n return null;\n}\n\nexport function copyLocalSkill(skillName: string, targetDir: string): boolean {\n const sourcePath = getLocalSkillDir(skillName);\n if (!sourcePath) return false;\n\n const destPath = join(targetDir, skillName);\n ensureDir(destPath);\n copyDir(sourcePath, destPath);\n return true;\n}\n\nexport async function fetchTemplateManifest(): Promise<TemplateManifest> {\n const localManifest = getLocalManifest();\n if (localManifest) {\n return localManifest;\n }\n\n const url = `${REPO_RAW_URL}/templates/manifest.json`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch template manifest: ${response.statusText}`);\n }\n\n return response.json() as Promise<TemplateManifest>;\n}\n\nexport async function fetchTemplateContent(\n type: TemplateType,\n filename: string\n): Promise<string> {\n const localContent = getLocalTemplateContent(type, filename);\n if (localContent !== null) {\n return localContent;\n }\n\n const templatePath = TEMPLATE_PATHS[type];\n const url = `${REPO_RAW_URL}/${templatePath}/${filename}`;\n\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch template ${filename}: ${response.statusText}`);\n }\n\n return response.text();\n}\n\nexport async function fetchMultipleTemplates(\n type: TemplateType,\n filenames: string[]\n): Promise<Map<string, string>> {\n const results = new Map<string, string>();\n\n const fetchPromises = filenames.map(async (filename) => {\n const content = await fetchTemplateContent(type, filename);\n return { filename, content };\n });\n\n const settled = await Promise.allSettled(fetchPromises);\n\n for (const result of settled) {\n if (result.status === \"fulfilled\") {\n results.set(result.value.filename, result.value.content);\n }\n }\n\n return results;\n}\n\nexport function getTemplateLabel(filename: string): string {\n const nameWithoutExt = filename.replace(/\\.(md|mdc)$/, \"\");\n return nameWithoutExt\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function getSkillLabel(skillName: string): string {\n return skillName\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function stripFrontmatter(content: string): string {\n const frontmatterRegex = /^---\\n[\\s\\S]*?\\n---\\n/;\n return content.replace(frontmatterRegex, \"\").trim();\n}\n\nexport function extractFrontmatter(content: string): {\n alwaysApply?: boolean;\n name?: string;\n description?: string;\n [key: string]: unknown;\n} {\n const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---\\n/);\n if (!frontmatterMatch) return {};\n\n const frontmatter = frontmatterMatch[1];\n const result: Record<string, unknown> = {};\n\n for (const line of frontmatter.split(\"\\n\")) {\n const match = line.match(/^(\\w+):\\s*(.+)$/);\n if (match) {\n const [, key, value] = match;\n result[key] =\n value === \"true\" ? true : value === \"false\" ? false : value;\n }\n }\n\n return result;\n}\n\nexport function generateCopilotIndex(\n commands: string[],\n rules: string[],\n skills: string[],\n alwaysApplyRules: string[] = []\n): string {\n let output = \"# GitHub Copilot Custom Instructions\\n\\n\";\n output += \"> Generated by cursor-kit-cli\\n\\n\";\n output +=\n \"This file provides instructions for GitHub Copilot. \";\n output +=\n \"When working on tasks, read the relevant files from the `copilot-instructions/` directory as needed.\\n\\n\";\n\n if (alwaysApplyRules.length > 0) {\n output += \"## Rules Applied Automatically\\n\\n\";\n output +=\n \"The following rules are always applied. Read these files for context:\\n\\n\";\n for (const rule of alwaysApplyRules) {\n const ruleName = rule.replace(/\\.md$/, \"\");\n output += `- **${ruleName}**: Read \\`.github/copilot-instructions/rules/${rule}\\` for guidelines\\n`;\n }\n output += \"\\n\";\n }\n\n if (commands.length > 0) {\n output += \"## Commands\\n\\n\";\n output +=\n \"When the user requests a command, read the corresponding file:\\n\\n\";\n for (const cmd of commands) {\n const cmdName = cmd.replace(/\\.md$/, \"\");\n output += `- **${cmdName}**: Read \\`.github/copilot-instructions/commands/${cmd}\\` when user requests \"${cmdName}\"\\n`;\n }\n output += \"\\n\";\n }\n\n if (rules.length > 0) {\n output += \"## Rules\\n\\n\";\n output +=\n \"Apply these rules when relevant to the task. Read the files as needed:\\n\\n\";\n for (const rule of rules) {\n const ruleName = rule.replace(/\\.md$/, \"\");\n output += `- **${ruleName}**: Read \\`.github/copilot-instructions/rules/${rule}\\` for ${ruleName} guidelines\\n`;\n }\n output += \"\\n\";\n }\n\n if (skills.length > 0) {\n output += \"## Skills\\n\\n\";\n output +=\n \"These are comprehensive guides for specialized domains. Read the relevant skill when working in that domain:\\n\\n\";\n for (const skill of skills) {\n output += `- **${skill}**: Read \\`.github/copilot-instructions/skills/${skill}/SKILL.md\\` when working on ${skill} tasks\\n`;\n }\n output += \"\\n\";\n }\n\n output += \"## Usage Guidelines\\n\\n\";\n output +=\n \"- **Don't read all files at once** - Only read files relevant to the current task\\n\";\n output +=\n \"- **Commands**: Read command files when the user explicitly requests that command\\n\";\n output +=\n \"- **Rules**: Reference rules when they apply to the current coding task\\n\";\n output +=\n \"- **Skills**: Read skill files when working in that domain (e.g., frontend-development for React components)\\n\";\n output +=\n \"- **Always Apply Rules**: These are automatically considered, but you can reference them for specific guidance\\n\\n\";\n\n return output;\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n skills: \"templates/skills\",\n} as const;\n","import { join } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport {\n ensureDir,\n fileExists,\n dirExists,\n writeFile,\n deleteFile,\n readFile,\n getCopilotInstructionsPath,\n getCopilotInstructionsDir,\n getCopilotCommandsDir,\n getCopilotRulesDir,\n getCopilotSkillsDir,\n} from \"./fs\";\nimport {\n fetchMultipleTemplates,\n copyLocalSkill,\n stripFrontmatter,\n extractFrontmatter,\n generateCopilotIndex,\n} from \"./templates\";\nimport { printSuccess } from \"./branding\";\n\nexport interface CopilotInstallResult {\n commands: string[];\n rules: string[];\n skills: string[];\n alwaysApplyRules: string[];\n}\n\nasync function installCopilotCommands(\n commandsDir: string,\n selectedCommands: string[]\n): Promise<string[]> {\n if (selectedCommands.length === 0) return [];\n\n ensureDir(commandsDir);\n const commandsMap = await fetchMultipleTemplates(\"commands\", selectedCommands);\n const installed: string[] = [];\n\n for (const [filename, content] of commandsMap) {\n const cleanContent = stripFrontmatter(content);\n const filePath = join(commandsDir, filename);\n writeFile(filePath, cleanContent);\n installed.push(filename);\n }\n\n return installed;\n}\n\nasync function installCopilotRules(\n rulesDir: string,\n selectedRules: string[]\n): Promise<{ installed: string[]; alwaysApply: string[] }> {\n if (selectedRules.length === 0) return { installed: [], alwaysApply: [] };\n\n ensureDir(rulesDir);\n const rulesMap = await fetchMultipleTemplates(\"rules\", selectedRules);\n const installed: string[] = [];\n const alwaysApply: string[] = [];\n\n for (const [filename, content] of rulesMap) {\n const frontmatter = extractFrontmatter(content);\n const cleanContent = stripFrontmatter(content);\n\n const mdFilename = filename.replace(/\\.mdc$/, \".md\");\n const filePath = join(rulesDir, mdFilename);\n writeFile(filePath, cleanContent);\n\n installed.push(mdFilename);\n\n if (frontmatter.alwaysApply) {\n alwaysApply.push(mdFilename);\n }\n }\n\n return { installed, alwaysApply };\n}\n\nasync function installCopilotSkills(\n skillsDir: string,\n selectedSkills: string[]\n): Promise<string[]> {\n if (selectedSkills.length === 0) return [];\n\n ensureDir(skillsDir);\n const installed: string[] = [];\n\n for (const skillName of selectedSkills) {\n const success = copyLocalSkill(skillName, skillsDir);\n if (!success) continue;\n\n const skillTargetDir = join(skillsDir, skillName);\n const skillMdcPath = join(skillTargetDir, \"SKILL.mdc\");\n const skillMdPath = join(skillTargetDir, \"SKILL.md\");\n\n if (fileExists(skillMdcPath)) {\n const content = readFile(skillMdcPath);\n const cleanContent = stripFrontmatter(content);\n writeFile(skillMdPath, cleanContent);\n deleteFile(skillMdcPath);\n }\n\n installed.push(skillName);\n }\n\n return installed;\n}\n\nexport async function checkCopilotConflicts(\n cwd: string,\n force: boolean\n): Promise<boolean> {\n const copilotDir = getCopilotInstructionsDir(cwd);\n const copilotIndexPath = getCopilotInstructionsPath(cwd);\n\n const hasExistingDir = dirExists(copilotDir);\n const hasExistingIndex = fileExists(copilotIndexPath);\n\n if ((hasExistingDir || hasExistingIndex) && !force) {\n const overwrite = await p.confirm({\n message: \"GitHub Copilot instructions already exist. Overwrite?\",\n initialValue: false,\n });\n\n if (p.isCancel(overwrite) || !overwrite) {\n return false;\n }\n }\n\n return true;\n}\n\nexport async function installCopilotInstructions(\n cwd: string,\n selectedCommands: string[],\n selectedRules: string[],\n selectedSkills: string[]\n): Promise<CopilotInstallResult> {\n const commandsDir = getCopilotCommandsDir(cwd);\n const rulesDir = getCopilotRulesDir(cwd);\n const skillsDir = getCopilotSkillsDir(cwd);\n const copilotIndexPath = getCopilotInstructionsPath(cwd);\n\n const [installedCommands, rulesResult, installedSkills] = await Promise.all([\n installCopilotCommands(commandsDir, selectedCommands),\n installCopilotRules(rulesDir, selectedRules),\n installCopilotSkills(skillsDir, selectedSkills),\n ]);\n\n const installedRules = rulesResult.installed;\n const alwaysApplyRules = rulesResult.alwaysApply;\n\n const indexContent = generateCopilotIndex(\n installedCommands,\n installedRules,\n installedSkills,\n alwaysApplyRules\n );\n\n writeFile(copilotIndexPath, indexContent);\n\n printSuccess(`GitHub Copilot instructions generated`);\n console.log(pc.dim(` └─ ${copilotIndexPath}`));\n console.log(pc.dim(` └─ ${getCopilotInstructionsDir(cwd)}/`));\n\n return {\n commands: installedCommands,\n rules: installedRules.map((r) => r.replace(/\\.md$/, \"\")),\n skills: installedSkills,\n alwaysApplyRules,\n };\n}\n\n","import * as p from \"@clack/prompts\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport { highlight } from \"../utils/branding\";\nimport {\n dirExists,\n ensureDir,\n fileExists,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n writeFile,\n} from \"../utils/fs\";\n\ntype ItemType = \"command\" | \"rule\" | \"skill\";\n\nconst COMMAND_TEMPLATE = `You are a helpful assistant. Describe what this command does.\n\n## Instructions\n- Step 1: ...\n- Step 2: ...\n\n## Rules\n- Be concise\n- Focus on the task\n\nSTART: Wait for user input.\n`;\n\nconst RULE_TEMPLATE = `---\ndescription: Describe when this rule should apply\nglobs: \nalwaysApply: false\n---\n\n# Rule Title\n\nDescribe the rule behavior here.\n\n## Guidelines\n- Guideline 1\n- Guideline 2\n`;\n\nconst SKILL_TEMPLATE = `---\ndescription: Describe when this skill should be activated\nglobs:\nalwaysApply: false\n---\n\n# Skill Name\n\nBrief description of what this skill enables.\n\n## Core Capabilities\n\n- Capability 1\n- Capability 2\n\n## When to Use\n\nUse this skill when:\n- Condition 1\n- Condition 2\n\n## References\n\nFor detailed guidance, see the references folder:\n- [Reference 1](./references/example.md) - Description\n`;\n\nconst SKILL_REFERENCE_TEMPLATE = `# Reference Title\n\nDetailed reference content goes here.\n\n## Section 1\n\nContent...\n\n## Section 2\n\nContent...\n`;\n\nfunction generateSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .replace(/-+/g, \"-\")\n .trim();\n}\n\nexport const addCommand = defineCommand({\n meta: {\n name: \"add\",\n description: \"Add a new command, rule, or skill\",\n },\n args: {\n type: {\n type: \"string\",\n alias: \"t\",\n description: \"Type: 'command', 'rule', or 'skill'\",\n },\n name: {\n type: \"string\",\n alias: \"n\",\n description: \"Name of the command, rule, or skill\",\n },\n },\n async run({ args }) {\n p.intro(pc.bgCyan(pc.black(\" cursor-kit add \")));\n\n let itemType: ItemType;\n let itemName: string;\n\n if (args.type && [\"command\", \"rule\", \"skill\"].includes(args.type)) {\n itemType = args.type as ItemType;\n } else {\n const typeResult = await p.select({\n message: \"What do you want to add?\",\n options: [\n {\n value: \"command\",\n label: \"Command\",\n hint: \"A reusable prompt template\",\n },\n {\n value: \"rule\",\n label: \"Rule\",\n hint: \"Project-specific AI behavior rules\",\n },\n {\n value: \"skill\",\n label: \"Skill\",\n hint: \"Comprehensive guide with references\",\n },\n ],\n });\n\n if (p.isCancel(typeResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemType = typeResult as ItemType;\n }\n\n if (args.name) {\n itemName = args.name;\n } else {\n const nameResult = await p.text({\n message: `Enter ${itemType} name:`,\n placeholder: itemType === \"command\" ? \"my-command\" : itemType === \"rule\" ? \"my-rule\" : \"my-skill\",\n validate: (value) => {\n if (!value.trim()) return \"Name is required\";\n if (value.length < 2) return \"Name must be at least 2 characters\";\n return undefined;\n },\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemName = nameResult;\n }\n\n const slug = generateSlug(itemName);\n const isCommand = itemType === \"command\";\n // const isRule = itemType === \"rule\";\n const isSkill = itemType === \"skill\";\n\n let targetPath: string;\n let displayPath: string;\n\n if (isSkill) {\n const skillsDir = getSkillsDir();\n targetPath = join(skillsDir, slug);\n displayPath = targetPath;\n } else {\n const targetDir = isCommand ? getCommandsDir() : getRulesDir();\n const extension = isCommand ? \".md\" : \".mdc\";\n targetPath = join(targetDir, `${slug}${extension}`);\n displayPath = targetPath;\n }\n\n if (isSkill ? dirExists(targetPath) : fileExists(targetPath)) {\n const shouldOverwrite = await p.confirm({\n message: `${highlight(isSkill ? slug : slug + (isCommand ? \".md\" : \".mdc\"))} already exists. Overwrite?`,\n initialValue: false,\n });\n\n if (p.isCancel(shouldOverwrite) || !shouldOverwrite) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n const s = p.spinner();\n s.start(`Creating ${itemType}...`);\n\n try {\n if (isSkill) {\n ensureDir(targetPath);\n ensureDir(join(targetPath, \"references\"));\n writeFile(join(targetPath, \"SKILL.mdc\"), SKILL_TEMPLATE);\n writeFile(join(targetPath, \"references\", \"example.md\"), SKILL_REFERENCE_TEMPLATE);\n } else {\n const targetDir = isCommand ? getCommandsDir() : getRulesDir();\n ensureDir(targetDir);\n const template = isCommand ? COMMAND_TEMPLATE : RULE_TEMPLATE;\n writeFile(targetPath, template);\n }\n\n s.stop(`${itemType.charAt(0).toUpperCase() + itemType.slice(1)} created`);\n\n console.log();\n if (isSkill) {\n console.log(pc.dim(\" Directory: \") + highlight(displayPath));\n console.log(pc.dim(\" Main file: \") + highlight(join(displayPath, \"SKILL.mdc\")));\n } else {\n console.log(pc.dim(\" File: \") + highlight(displayPath));\n }\n console.log();\n\n p.outro(\n pc.green(`✨ ${itemType.charAt(0).toUpperCase() + itemType.slice(1)} created! Edit the file to customize it.`)\n );\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { downloadTemplate } from \"giget\";\nimport {\n ensureDir,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n listFiles,\n listDirs,\n getCursorDir,\n} from \"../utils/fs\";\nimport { REPO_URL, REPO_REF } from \"../utils/constants\";\nimport { highlight, printDivider, printSuccess, printInfo } from \"../utils/branding\";\n\nexport const pullCommand = defineCommand({\n meta: {\n name: \"pull\",\n description: \"Pull latest updates from cursor-kit repository\",\n },\n args: {\n commands: {\n type: \"boolean\",\n alias: \"c\",\n description: \"Only pull commands\",\n default: false,\n },\n rules: {\n type: \"boolean\",\n alias: \"r\",\n description: \"Only pull rules\",\n default: false,\n },\n skills: {\n type: \"boolean\",\n alias: \"s\",\n description: \"Only pull skills\",\n default: false,\n },\n force: {\n type: \"boolean\",\n alias: \"f\",\n description: \"Force overwrite without confirmation\",\n default: false,\n },\n },\n async run({ args }) {\n const pullAll = !args.commands && !args.rules && !args.skills;\n const shouldPullCommands = pullAll || args.commands;\n const shouldPullRules = pullAll || args.rules;\n const shouldPullSkills = pullAll || args.skills;\n\n p.intro(pc.bgCyan(pc.black(\" cursor-kit pull \")));\n\n const commandsDir = getCommandsDir();\n const rulesDir = getRulesDir();\n const skillsDir = getSkillsDir();\n\n const existingCommands = listFiles(commandsDir, \".md\");\n const existingRules = listFiles(rulesDir, \".mdc\");\n const existingSkills = listDirs(skillsDir);\n const hasExisting = existingCommands.length > 0 || existingRules.length > 0 || existingSkills.length > 0;\n\n if (hasExisting && !args.force) {\n printInfo(\"Current status:\");\n if (existingCommands.length > 0) {\n console.log(pc.dim(` Commands: ${existingCommands.length} files`));\n }\n if (existingRules.length > 0) {\n console.log(pc.dim(` Rules: ${existingRules.length} files`));\n }\n if (existingSkills.length > 0) {\n console.log(pc.dim(` Skills: ${existingSkills.length} directories`));\n }\n console.log();\n\n const shouldContinue = await p.confirm({\n message: \"This will merge with existing files. Continue?\",\n initialValue: true,\n });\n\n if (p.isCancel(shouldContinue) || !shouldContinue) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n const s = p.spinner();\n\n try {\n ensureDir(getCursorDir());\n\n if (shouldPullCommands) {\n s.start(\"Pulling commands...\");\n await downloadTemplate(`${REPO_URL}/templates/commands#${REPO_REF}`, {\n dir: commandsDir,\n force: true,\n });\n s.stop(\"Commands updated\");\n }\n\n if (shouldPullRules) {\n s.start(\"Pulling rules...\");\n await downloadTemplate(`${REPO_URL}/templates/rules#${REPO_REF}`, {\n dir: rulesDir,\n force: true,\n });\n s.stop(\"Rules updated\");\n }\n\n if (shouldPullSkills) {\n s.start(\"Pulling skills...\");\n await downloadTemplate(`${REPO_URL}/templates/skills#${REPO_REF}`, {\n dir: skillsDir,\n force: true,\n });\n s.stop(\"Skills updated\");\n }\n\n printDivider();\n console.log();\n\n const newCommands = listFiles(commandsDir, \".md\");\n const newRules = listFiles(rulesDir, \".mdc\");\n const newSkills = listDirs(skillsDir);\n\n if (shouldPullCommands) {\n const added = newCommands.length - existingCommands.length;\n printSuccess(\n `Commands: ${highlight(newCommands.length.toString())} total` +\n (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n );\n }\n\n if (shouldPullRules) {\n const added = newRules.length - existingRules.length;\n printSuccess(\n `Rules: ${highlight(newRules.length.toString())} total` +\n (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n );\n }\n\n if (shouldPullSkills) {\n const added = newSkills.length - existingSkills.length;\n printSuccess(\n `Skills: ${highlight(newSkills.length.toString())} total` +\n (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n );\n }\n\n console.log();\n p.outro(pc.green(\"✨ Successfully pulled latest updates!\"));\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n },\n});\n","import * as p from \"@clack/prompts\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport { highlight, printDivider } from \"../utils/branding\";\nimport {\n fileExists,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n listDirs,\n listFiles,\n readFile,\n} from \"../utils/fs\";\n\ninterface ItemInfo {\n name: string;\n path: string;\n description?: string;\n}\n\nfunction extractDescription(\n content: string,\n isCommand: boolean\n): string | undefined {\n if (isCommand) {\n const firstLine = content.trim().split(\"\\n\")[0];\n if (\n firstLine &&\n !firstLine.startsWith(\"#\") &&\n !firstLine.startsWith(\"---\")\n ) {\n return firstLine.slice(0, 60) + (firstLine.length > 60 ? \"...\" : \"\");\n }\n } else {\n const match = content.match(/description:\\s*(.+)/);\n if (match) {\n return match[1].trim().slice(0, 60) + (match[1].length > 60 ? \"...\" : \"\");\n }\n }\n return undefined;\n}\n\nfunction getItems(\n dir: string,\n extension: string,\n isCommand: boolean\n): ItemInfo[] {\n const files = listFiles(dir, extension);\n return files.map((file) => {\n const filePath = join(dir, file);\n const content = fileExists(filePath) ? readFile(filePath) : \"\";\n return {\n name: file.replace(extension, \"\"),\n path: filePath,\n description: extractDescription(content, isCommand),\n };\n });\n}\n\nfunction getSkills(dir: string): ItemInfo[] {\n const skillDirs = listDirs(dir);\n return skillDirs.map((skillName) => {\n const skillPath = join(dir, skillName);\n const skillFile = join(skillPath, \"SKILL.mdc\");\n const altSkillFile = join(skillPath, \"SKILL.md\");\n\n let description: string | undefined;\n\n if (fileExists(skillFile)) {\n const content = readFile(skillFile);\n description = extractDescription(content, false);\n } else if (fileExists(altSkillFile)) {\n const content = readFile(altSkillFile);\n description = extractDescription(content, false);\n }\n\n return {\n name: skillName,\n path: skillPath,\n description,\n };\n });\n}\n\nexport const listCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"List all commands, rules, and skills\",\n },\n args: {\n commands: {\n type: \"boolean\",\n alias: \"c\",\n description: \"Only list commands\",\n default: false,\n },\n rules: {\n type: \"boolean\",\n alias: \"r\",\n description: \"Only list rules\",\n default: false,\n },\n skills: {\n type: \"boolean\",\n alias: \"s\",\n description: \"Only list skills\",\n default: false,\n },\n verbose: {\n type: \"boolean\",\n alias: \"v\",\n description: \"Show full file paths\",\n default: false,\n },\n },\n async run({ args }) {\n const listAll = !args.commands && !args.rules && !args.skills;\n const shouldListCommands = listAll || args.commands;\n const shouldListRules = listAll || args.rules;\n const shouldListSkills = listAll || args.skills;\n\n p.intro(pc.bgCyan(pc.black(\" cursor-kit list \")));\n\n const commandsDir = getCommandsDir();\n const rulesDir = getRulesDir();\n const skillsDir = getSkillsDir();\n\n const commands = shouldListCommands\n ? getItems(commandsDir, \".md\", true)\n : [];\n const rules = shouldListRules ? getItems(rulesDir, \".mdc\", false) : [];\n const skills = shouldListSkills ? getSkills(skillsDir) : [];\n\n if (commands.length === 0 && rules.length === 0 && skills.length === 0) {\n console.log();\n console.log(pc.yellow(\" No commands, rules, or skills found.\"));\n console.log(\n pc.dim(\" Run \") +\n highlight(\"cursor-kit init\") +\n pc.dim(\" to get started.\")\n );\n console.log();\n p.outro(pc.dim(\"Nothing to show\"));\n return;\n }\n\n printDivider();\n\n if (shouldListCommands && commands.length > 0) {\n console.log();\n console.log(\n pc.bold(pc.cyan(\" 📜 Commands\")) + pc.dim(` (${commands.length})`)\n );\n console.log();\n\n commands.forEach((cmd) => {\n console.log(` ${pc.green(\"●\")} ${highlight(cmd.name)}`);\n if (cmd.description) {\n console.log(pc.dim(` ${cmd.description}`));\n }\n if (args.verbose) {\n console.log(pc.dim(` ${cmd.path}`));\n }\n });\n }\n\n if (shouldListRules && rules.length > 0) {\n console.log();\n console.log(\n pc.bold(pc.cyan(\" 📋 Rules\")) + pc.dim(` (${rules.length})`)\n );\n console.log();\n\n rules.forEach((rule) => {\n console.log(` ${pc.green(\"●\")} ${highlight(rule.name)}`);\n if (rule.description) {\n console.log(pc.dim(` ${rule.description}`));\n }\n if (args.verbose) {\n console.log(pc.dim(` ${rule.path}`));\n }\n });\n }\n\n if (shouldListSkills && skills.length > 0) {\n console.log();\n console.log(\n pc.bold(pc.cyan(\" 🎯 Skills\")) + pc.dim(` (${skills.length})`)\n );\n console.log();\n\n skills.forEach((skill) => {\n console.log(` ${pc.green(\"●\")} ${highlight(skill.name)}`);\n if (skill.description) {\n console.log(pc.dim(` ${skill.description}`));\n }\n if (args.verbose) {\n console.log(pc.dim(` ${skill.path}`));\n }\n });\n }\n\n console.log();\n printDivider();\n\n const total = commands.length + rules.length + skills.length;\n p.outro(pc.dim(`Total: ${total} item${total !== 1 ? \"s\" : \"\"}`));\n },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport {\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n listFiles,\n listDirs,\n removeFile,\n fileExists,\n dirExists,\n} from \"../utils/fs\";\nimport { highlight, printSuccess } from \"../utils/branding\";\nimport { join } from \"node:path\";\n\ntype ItemType = \"command\" | \"rule\" | \"skill\";\n\ninterface SelectOption {\n value: string;\n label: string;\n hint?: string;\n}\n\nexport const removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description: \"Remove a command, rule, or skill\",\n },\n args: {\n type: {\n type: \"string\",\n alias: \"t\",\n description: \"Type: 'command', 'rule', or 'skill'\",\n },\n name: {\n type: \"string\",\n alias: \"n\",\n description: \"Name of the command, rule, or skill to remove\",\n },\n force: {\n type: \"boolean\",\n alias: \"f\",\n description: \"Skip confirmation\",\n default: false,\n },\n },\n async run({ args }) {\n p.intro(pc.bgCyan(pc.black(\" cursor-kit remove \")));\n\n const commandsDir = getCommandsDir();\n const rulesDir = getRulesDir();\n const skillsDir = getSkillsDir();\n\n const commands = listFiles(commandsDir, \".md\").map((f) => f.replace(\".md\", \"\"));\n const rules = listFiles(rulesDir, \".mdc\").map((f) => f.replace(\".mdc\", \"\"));\n const skills = listDirs(skillsDir);\n\n if (commands.length === 0 && rules.length === 0 && skills.length === 0) {\n console.log();\n console.log(pc.yellow(\" No commands, rules, or skills to remove.\"));\n console.log();\n p.outro(pc.dim(\"Nothing to do\"));\n return;\n }\n\n let itemType: ItemType;\n let itemName: string;\n\n if (args.type && [\"command\", \"rule\", \"skill\"].includes(args.type)) {\n itemType = args.type as ItemType;\n } else {\n const typeOptions: SelectOption[] = [];\n\n if (commands.length > 0) {\n typeOptions.push({\n value: \"command\",\n label: \"Command\",\n hint: `${commands.length} available`,\n });\n }\n\n if (rules.length > 0) {\n typeOptions.push({\n value: \"rule\",\n label: \"Rule\",\n hint: `${rules.length} available`,\n });\n }\n\n if (skills.length > 0) {\n typeOptions.push({\n value: \"skill\",\n label: \"Skill\",\n hint: `${skills.length} available`,\n });\n }\n\n const typeResult = await p.select({\n message: \"What do you want to remove?\",\n options: typeOptions,\n });\n\n if (p.isCancel(typeResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemType = typeResult as ItemType;\n }\n\n const isCommand = itemType === \"command\";\n const isRule = itemType === \"rule\";\n const isSkill = itemType === \"skill\";\n const items = isCommand ? commands : isRule ? rules : skills;\n const dir = isCommand ? commandsDir : isRule ? rulesDir : skillsDir;\n const extension = isCommand ? \".md\" : isRule ? \".mdc\" : \"\";\n\n if (items.length === 0) {\n p.cancel(`No ${itemType}s found`);\n process.exit(0);\n }\n\n if (args.name && items.includes(args.name)) {\n itemName = args.name;\n } else {\n const itemOptions: SelectOption[] = items.map((item) => ({\n value: item,\n label: item,\n }));\n\n const nameResult = await p.select({\n message: `Select ${itemType} to remove:`,\n options: itemOptions,\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemName = nameResult as string;\n }\n\n const targetPath = isSkill\n ? join(dir, itemName)\n : join(dir, `${itemName}${extension}`);\n\n const exists = isSkill ? dirExists(targetPath) : fileExists(targetPath);\n\n if (!exists) {\n p.cancel(`${itemType} '${itemName}' not found`);\n process.exit(1);\n }\n\n if (!args.force) {\n const displayName = isSkill ? itemName : itemName + extension;\n const shouldDelete = await p.confirm({\n message: `Are you sure you want to delete ${highlight(displayName)}?${isSkill ? \" (This will remove the entire skill directory)\" : \"\"}`,\n initialValue: false,\n });\n\n if (p.isCancel(shouldDelete) || !shouldDelete) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n try {\n removeFile(targetPath);\n const displayName = isSkill ? itemName : itemName + extension;\n console.log();\n printSuccess(`Removed ${highlight(displayName)}`);\n console.log();\n p.outro(pc.green(\"✨ Done!\"));\n } catch (error) {\n p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { spawn } from \"node:child_process\";\nimport { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { existsSync, chmodSync, readdirSync } from \"node:fs\";\nimport { highlight, printDivider, printSuccess, printInfo, printWarning } from \"../utils/branding\";\n\ntype InstanceAction = \"create\" | \"remove\" | \"reinstall\";\n\ninterface InstanceInfo {\n name: string;\n path: string;\n}\n\nfunction getBinPath(): string {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const possiblePaths = [\n join(currentDir, \"..\", \"..\", \"bin\"),\n join(currentDir, \"..\", \"bin\"),\n ];\n\n for (const binPath of possiblePaths) {\n if (existsSync(binPath)) {\n return binPath;\n }\n }\n\n return possiblePaths[0];\n}\n\nfunction ensureExecutable(scriptPath: string): void {\n try {\n chmodSync(scriptPath, 0o755);\n } catch {\n // Ignore permission errors\n }\n}\n\nfunction getExistingInstances(): InstanceInfo[] {\n const userAppsDir = join(process.env.HOME ?? \"\", \"Applications\");\n if (!existsSync(userAppsDir)) return [];\n\n try {\n const apps = readdirSync(userAppsDir);\n return apps\n .filter((app) => app.startsWith(\"Cursor\") && app.endsWith(\".app\") && app !== \"Cursor.app\")\n .map((app) => ({\n name: app.replace(\".app\", \"\"),\n path: join(userAppsDir, app),\n }));\n } catch {\n return [];\n }\n}\n\nfunction runScript(scriptPath: string, args: string[]): Promise<number> {\n return new Promise((resolve) => {\n ensureExecutable(scriptPath);\n\n const child = spawn(scriptPath, args, {\n stdio: \"inherit\",\n });\n\n child.on(\"close\", (code) => {\n resolve(code ?? 1);\n });\n\n child.on(\"error\", () => {\n resolve(1);\n });\n });\n}\n\nexport const instanceCommand = defineCommand({\n meta: {\n name: \"instance\",\n description: \"Manage Cursor IDE instances for multi-account login (macOS only)\",\n },\n args: {\n action: {\n type: \"string\",\n alias: \"a\",\n description: \"Action: 'create', 'reinstall', or 'remove'\",\n },\n name: {\n type: \"string\",\n alias: \"n\",\n description: \"Name of the instance (e.g. 'Cursor Enterprise')\",\n },\n list: {\n type: \"boolean\",\n alias: \"l\",\n description: \"List existing Cursor instances\",\n default: false,\n },\n },\n async run({ args }) {\n p.intro(pc.bgCyan(pc.black(\" cursor-kit instance \")));\n\n // OS check\n if (process.platform !== \"darwin\") {\n console.log();\n printWarning(\"This command only works on macOS.\");\n console.log(pc.dim(\" Cursor instance management requires macOS-specific features.\"));\n console.log();\n p.outro(pc.dim(\"Exiting\"));\n process.exit(1);\n }\n\n // List mode\n if (args.list) {\n const instances = getExistingInstances();\n printDivider();\n console.log();\n\n if (instances.length === 0) {\n printInfo(\"No custom Cursor instances found.\");\n console.log(pc.dim(\" Run \") + highlight(\"cursor-kit instance\") + pc.dim(\" to create one.\"));\n } else {\n console.log(pc.bold(pc.cyan(\" 🖥 Cursor Instances\")) + pc.dim(` (${instances.length})`));\n console.log();\n for (const instance of instances) {\n console.log(` ${pc.green(\"●\")} ${highlight(instance.name)}`);\n console.log(pc.dim(` └─ ${instance.path}`));\n }\n }\n\n console.log();\n printDivider();\n p.outro(pc.dim(`Total: ${instances.length} instance${instances.length !== 1 ? \"s\" : \"\"}`));\n return;\n }\n\n const s = p.spinner();\n\n // Check prerequisites\n s.start(\"Checking prerequisites...\");\n const binPath = getBinPath();\n const createScript = join(binPath, \"cursor-new-instance\");\n const removeScript = join(binPath, \"cursor-remove-instance\");\n const reinstallScript = join(binPath, \"cursor-reinstall-instance.sh\");\n\n const scriptsExist = existsSync(createScript) && existsSync(removeScript) && existsSync(reinstallScript);\n if (!scriptsExist) {\n s.stop(\"Prerequisites check failed\");\n console.log();\n printWarning(\"Required scripts not found.\");\n console.log(pc.dim(` Expected at: ${binPath}`));\n console.log();\n p.outro(pc.red(\"Installation may be corrupted\"));\n process.exit(1);\n }\n\n const originalCursor = \"/Applications/Cursor.app\";\n if (!existsSync(originalCursor)) {\n s.stop(\"Prerequisites check failed\");\n console.log();\n printWarning(\"Cursor.app not found in /Applications\");\n console.log(pc.dim(\" Please install Cursor IDE first.\"));\n console.log();\n p.outro(pc.red(\"Cursor IDE required\"));\n process.exit(1);\n }\n\n s.stop(\"Prerequisites verified\");\n\n // Get existing instances for context\n const existingInstances = getExistingInstances();\n\n let action: InstanceAction;\n let instanceName: string;\n\n // Determine action\n if (args.action && [\"create\", \"remove\", \"reinstall\"].includes(args.action)) {\n action = args.action as InstanceAction;\n } else {\n const actionResult = await p.select({\n message: \"What would you like to do?\",\n options: [\n {\n value: \"create\",\n label: \"Create new instance\",\n hint: \"Clone Cursor with separate identity\",\n },\n {\n value: \"reinstall\",\n label: \"Reinstall instance\",\n hint: existingInstances.length > 0\n ? \"Fix broken instance after Cursor update\"\n : \"No instances to reinstall\",\n },\n {\n value: \"remove\",\n label: \"Remove instance\",\n hint: existingInstances.length > 0\n ? `${existingInstances.length} instance${existingInstances.length !== 1 ? \"s\" : \"\"} available`\n : \"No instances to remove\",\n },\n ],\n });\n\n if (p.isCancel(actionResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n action = actionResult as InstanceAction;\n }\n\n // Get instance name\n if (args.name) {\n instanceName = args.name;\n } else if ((action === \"remove\" || action === \"reinstall\") && existingInstances.length > 0) {\n // For remove/reinstall actions, show existing instances to select from\n const actionLabel = action === \"remove\" ? \"remove\" : \"reinstall\";\n const instanceResult = await p.select({\n message: `Select instance to ${actionLabel}:`,\n options: existingInstances.map((inst) => ({\n value: inst.name,\n label: inst.name,\n hint: inst.path,\n })),\n });\n\n if (p.isCancel(instanceResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n instanceName = instanceResult as string;\n } else if ((action === \"remove\" || action === \"reinstall\") && existingInstances.length === 0) {\n console.log();\n printInfo(`No custom Cursor instances found to ${action}.`);\n console.log();\n p.outro(pc.dim(\"Nothing to do\"));\n return;\n } else {\n // For create action, prompt for name\n const nameResult = await p.text({\n message: \"Enter a name for the new instance:\",\n placeholder: \"Cursor Enterprise\",\n validate: (value) => {\n if (!value.trim()) return \"Instance name is required\";\n if (value.length < 2) return \"Name must be at least 2 characters\";\n const existing = existingInstances.find(\n (i) => i.name.toLowerCase() === value.toLowerCase()\n );\n if (existing) return `Instance \"${value}\" already exists`;\n return undefined;\n },\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n instanceName = nameResult;\n }\n\n // Show summary\n printDivider();\n console.log();\n console.log(pc.bold(pc.cyan(\" 📋 Summary\")));\n console.log();\n const actionColor = action === \"create\" ? pc.green : action === \"reinstall\" ? pc.blue : pc.yellow;\n const actionLabel = action === \"create\" ? \"Create\" : action === \"reinstall\" ? \"Reinstall\" : \"Remove\";\n console.log(` ${pc.dim(\"Action:\")} ${actionColor(actionLabel)}`);\n console.log(` ${pc.dim(\"Instance:\")} ${highlight(instanceName)}`);\n\n if (action === \"create\" || action === \"reinstall\") {\n const slug = instanceName.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n console.log(` ${pc.dim(\"Bundle ID:\")} ${pc.dim(\"com.cursor.\")}${highlight(slug)}`);\n console.log(` ${pc.dim(\"Location:\")} ${pc.dim(\"~/Applications/\")}${highlight(instanceName + \".app\")}`);\n if (action === \"reinstall\") {\n const dataDir = join(process.env.HOME ?? \"\", \"Library\", \"Application Support\", instanceName.replace(/ /g, \"\"));\n console.log(` ${pc.dim(\"Data:\")} ${pc.green(\"✓\")} ${pc.dim(\"Preserved at\")} ${pc.dim(dataDir)}`);\n }\n } else {\n const targetPath = join(process.env.HOME ?? \"\", \"Applications\", `${instanceName}.app`);\n console.log(` ${pc.dim(\"Path:\")} ${pc.dim(targetPath)}`);\n }\n\n console.log();\n printDivider();\n console.log();\n\n const shouldContinue = await p.confirm({\n message: action === \"create\"\n ? \"Create this Cursor instance?\"\n : action === \"reinstall\"\n ? \"Reinstall this instance? (User data will be preserved)\"\n : \"Remove this Cursor instance? This cannot be undone.\",\n initialValue: action !== \"remove\",\n });\n\n if (p.isCancel(shouldContinue) || !shouldContinue) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // Execute script\n console.log();\n printDivider();\n console.log();\n\n const scriptPath = action === \"create\" \n ? createScript \n : action === \"reinstall\"\n ? reinstallScript\n : removeScript;\n // Pass --yes to remove/reinstall scripts since we already confirmed in the CLI\n const scriptArgs = action === \"remove\" || action === \"reinstall\" \n ? [\"--yes\", instanceName] \n : [instanceName];\n const exitCode = await runScript(scriptPath, scriptArgs);\n\n console.log();\n printDivider();\n console.log();\n\n if (exitCode === 0) {\n if (action === \"create\") {\n printSuccess(`Instance ${highlight(instanceName)} created successfully!`);\n console.log();\n console.log(pc.dim(\" Next steps:\"));\n console.log(pc.dim(\" • The new instance should launch automatically\"));\n console.log(pc.dim(\" • Sign in with a different Cursor account\"));\n console.log(pc.dim(\" • Find it in ~/Applications/\"));\n } else if (action === \"reinstall\") {\n printSuccess(`Instance ${highlight(instanceName)} reinstalled successfully!`);\n console.log();\n console.log(pc.dim(\" The instance has been:\"));\n console.log(pc.dim(\" • Refreshed with the latest Cursor version\"));\n console.log(pc.dim(\" • Relaunched with your preserved data\"));\n console.log(pc.dim(\" • Ready to use with your existing account\"));\n } else {\n printSuccess(`Instance ${highlight(instanceName)} removed successfully!`);\n }\n console.log();\n p.outro(pc.green(\"✨ Done!\"));\n } else {\n printWarning(`Operation completed with exit code ${exitCode}`);\n console.log();\n p.outro(pc.yellow(\"Check the output above for details\"));\n process.exit(exitCode);\n }\n },\n});\n"],"mappings":"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","names":["import_citty","gradient","figlet","pc","pc","text","p","import_picocolors","import_node_path","import_node_path","import_node_path","import_picocolors","pc","pc","p","import_citty","import_node_path","import_picocolors","pc","import_citty","p","import_picocolors","pc","p","import_citty","import_node_path","import_picocolors","pc","import_citty","p","import_picocolors","import_node_path","pc","import_citty","p","import_picocolors","import_node_path","import_node_url","import_node_fs","resolve","pc","actionLabel","require"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/.pnpm/tsup@8.5.1_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","../src/cli.ts","../src/utils/branding.ts","../src/commands/init.ts","../src/utils/fs.ts","../src/utils/templates.ts","../src/utils/constants.ts","../src/utils/copilot.ts","../src/commands/add.ts","../src/commands/pull.ts","../src/commands/list.ts","../src/commands/remove.ts","../src/commands/instance.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { defineCommand, runMain } from \"citty\";\nimport { createRequire } from \"node:module\";\nimport { printBanner, printVersion } from \"./utils/branding\";\nimport { initCommand } from \"./commands/init\";\nimport { addCommand } from \"./commands/add\";\nimport { pullCommand } from \"./commands/pull\";\nimport { listCommand } from \"./commands/list\";\nimport { removeCommand } from \"./commands/remove\";\nimport { instanceCommand } from \"./commands/instance\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"../package.json\") as { version: string };\n\nconst main = defineCommand({\n meta: {\n name: \"cursor-kit\",\n version: pkg.version,\n description: \"CLI toolkit to manage Cursor IDE rules and commands\",\n },\n setup() {\n printBanner();\n printVersion(pkg.version);\n },\n subCommands: {\n init: initCommand,\n add: addCommand,\n pull: pullCommand,\n list: listCommand,\n remove: removeCommand,\n instance: instanceCommand,\n },\n});\n\nrunMain(main);\n\n","import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { join } from \"node:path\";\nimport {\n ensureDir,\n getCursorDir,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n getConflictingFiles,\n getConflictingDirs,\n writeFile,\n} from \"../utils/fs\";\nimport { highlight, printDivider, printSuccess } from \"../utils/branding\";\nimport {\n fetchTemplateManifest,\n fetchMultipleTemplates,\n getTemplateLabel,\n getSkillLabel,\n copyLocalSkill,\n convertMdToMdc,\n transformTocContentForCursor,\n type TemplateManifest,\n type TemplateType,\n} from \"../utils/templates\";\nimport { type InstructionTarget } from \"../types/init\";\nimport {\n checkCopilotConflicts,\n installCopilotInstructions,\n} from \"../utils/copilot\";\n\ntype ConflictStrategy = \"overwrite\" | \"merge\" | \"cancel\";\n\ninterface InitResult {\n added: string[];\n skipped: string[];\n}\n\nasync function promptTargetSelection(): Promise<InstructionTarget | symbol> {\n return await p.select({\n message: \"Which AI IDE are you using?\",\n options: [\n {\n value: \"cursor\" as const,\n label: \"Cursor\",\n hint: \"Generate .cursor/ directory structure\",\n },\n {\n value: \"github-copilot\" as const,\n label: \"GitHub Copilot\",\n hint: \"Generate .github/copilot-instructions.md\",\n },\n ],\n initialValue: \"cursor\",\n });\n}\n\nasync function handleCopilotInstallation(\n cwd: string,\n manifest: TemplateManifest,\n args: {\n all?: boolean;\n commands?: boolean;\n rules?: boolean;\n skills?: boolean;\n force?: boolean;\n },\n shouldInitCommands: boolean,\n shouldInitRules: boolean,\n shouldInitSkills: boolean\n): Promise<void> {\n const s = p.spinner();\n\n const canProceed = await checkCopilotConflicts(cwd, args.force ?? false);\n if (!canProceed) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n let selectedCommands: string[] = [];\n let selectedRules: string[] = [];\n let selectedSkills: string[] = [];\n\n if (shouldInitCommands) {\n if (args.all) {\n selectedCommands = manifest.commands;\n } else {\n const selection = await selectTemplates(\"commands\", manifest.commands);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedCommands = selection;\n }\n }\n\n if (shouldInitRules) {\n if (args.all) {\n selectedRules = manifest.rules;\n } else {\n const selection = await selectTemplates(\"rules\", manifest.rules);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedRules = selection;\n }\n }\n\n if (shouldInitSkills) {\n if (args.all) {\n selectedSkills = manifest.skills;\n } else {\n const selection = await selectTemplates(\"skills\", manifest.skills);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedSkills = selection;\n }\n }\n\n if (\n selectedCommands.length === 0 &&\n selectedRules.length === 0 &&\n selectedSkills.length === 0\n ) {\n p.cancel(\"No templates selected\");\n process.exit(0);\n }\n\n try {\n s.start(\"Installing GitHub Copilot instructions...\");\n const result = await installCopilotInstructions(\n cwd,\n selectedCommands,\n selectedRules,\n selectedSkills\n );\n s.stop(\"GitHub Copilot instructions installed\");\n\n printDivider();\n console.log();\n\n if (result.commands.length > 0) {\n printSuccess(`Commands: ${highlight(result.commands.length.toString())} added`);\n for (const cmd of result.commands) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${cmd}`));\n }\n }\n\n if (result.rules.length > 0) {\n printSuccess(`Rules: ${highlight(result.rules.length.toString())} added`);\n for (const rule of result.rules) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${rule}`));\n }\n }\n\n if (result.skills.length > 0) {\n printSuccess(`Skills: ${highlight(result.skills.length.toString())} added`);\n for (const skill of result.skills) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${skill}`));\n }\n }\n\n console.log();\n p.outro(pc.green(\"✨ GitHub Copilot instructions created successfully!\"));\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n process.exit(1);\n }\n}\n\nasync function selectTemplates(\n type: TemplateType,\n availableTemplates: string[]\n): Promise<string[] | symbol> {\n const labelFn = type === \"skills\" ? getSkillLabel : getTemplateLabel;\n\n const selectionMode = await p.select({\n message: `How would you like to add ${type}?`,\n options: [\n {\n value: \"all\",\n label: `Add all ${availableTemplates.length} ${type}`,\n hint: \"Install everything\",\n },\n {\n value: \"select\",\n label: \"Select specific items\",\n hint: \"Choose which ones to install\",\n },\n ],\n });\n\n if (p.isCancel(selectionMode)) return selectionMode;\n\n if (selectionMode === \"all\") {\n return availableTemplates;\n }\n\n const selectedTemplates = await p.multiselect({\n message: `Select ${type} to add:`,\n options: availableTemplates.map((template) => ({\n value: template,\n label: labelFn(template),\n hint: template,\n })),\n required: true,\n });\n\n return selectedTemplates as string[] | symbol;\n}\n\nasync function handleConflicts(\n type: TemplateType,\n conflictingFiles: string[]\n): Promise<ConflictStrategy | symbol> {\n console.log();\n console.log(\n pc.yellow(`⚠ ${conflictingFiles.length} existing ${type} found:`)\n );\n for (const file of conflictingFiles) {\n console.log(pc.dim(` └─ ${file}`));\n }\n console.log();\n\n const strategy = await p.select({\n message: \"How would you like to handle conflicts?\",\n options: [\n {\n value: \"overwrite\" as ConflictStrategy,\n label: \"Overwrite existing files\",\n hint: \"Replace all conflicting files\",\n },\n {\n value: \"merge\" as ConflictStrategy,\n label: \"Merge (keep existing, add new only)\",\n hint: \"Skip files that already exist\",\n },\n {\n value: \"cancel\" as ConflictStrategy,\n label: \"Cancel\",\n hint: \"Abort the operation\",\n },\n ],\n });\n\n return strategy as ConflictStrategy | symbol;\n}\n\nasync function installTemplates(\n type: TemplateType,\n targetDir: string,\n selectedTemplates: string[],\n conflictStrategy: ConflictStrategy,\n target: InstructionTarget\n): Promise<InitResult> {\n const result: InitResult = { added: [], skipped: [] };\n \n // For Cursor target, rules need .mdc extension, commands stay .md\n // For GitHub Copilot, everything stays .md\n const expectedFilenames = selectedTemplates.map((filename) => {\n if (target === \"cursor\" && type === \"rules\" && filename.endsWith(\".md\")) {\n return convertMdToMdc(filename);\n }\n return filename;\n });\n \n const conflictingFiles = getConflictingFiles(targetDir, expectedFilenames);\n\n let templatesToInstall: string[];\n\n if (conflictStrategy === \"merge\") {\n templatesToInstall = selectedTemplates.filter(\n (t) => {\n const expectedName = target === \"cursor\" && type === \"rules\" && t.endsWith(\".md\")\n ? convertMdToMdc(t)\n : t;\n return !conflictingFiles.includes(expectedName);\n }\n );\n result.skipped = conflictingFiles.filter((f) =>\n expectedFilenames.includes(f)\n );\n } else {\n templatesToInstall = selectedTemplates;\n }\n\n if (templatesToInstall.length === 0) {\n return result;\n }\n\n const templates = await fetchMultipleTemplates(type, templatesToInstall);\n\n ensureDir(targetDir);\n\n for (const [filename, content] of templates) {\n // Convert .md to .mdc for rules when target is cursor\n const outputFilename = target === \"cursor\" && type === \"rules\" && filename.endsWith(\".md\")\n ? convertMdToMdc(filename)\n : filename;\n \n // Transform toc.md content for Cursor to fix links\n let transformedContent = content;\n if (target === \"cursor\" && type === \"rules\" && filename === \"toc.md\") {\n transformedContent = transformTocContentForCursor(content);\n }\n \n const filePath = join(targetDir, outputFilename);\n writeFile(filePath, transformedContent);\n result.added.push(outputFilename);\n }\n\n return result;\n}\n\nasync function installSkills(\n targetDir: string,\n selectedSkills: string[],\n conflictStrategy: ConflictStrategy,\n target: InstructionTarget\n): Promise<InitResult> {\n const result: InitResult = { added: [], skipped: [] };\n const conflictingDirs = getConflictingDirs(targetDir, selectedSkills);\n\n let skillsToInstall: string[];\n\n if (conflictStrategy === \"merge\") {\n skillsToInstall = selectedSkills.filter(\n (s) => !conflictingDirs.includes(s)\n );\n result.skipped = conflictingDirs.filter((d) =>\n selectedSkills.includes(d)\n );\n } else {\n skillsToInstall = selectedSkills;\n }\n\n if (skillsToInstall.length === 0) {\n return result;\n }\n\n ensureDir(targetDir);\n\n // Convert SKILL.md to SKILL.mdc for Cursor target\n const convertToMdc = target === \"cursor\";\n\n for (const skillName of skillsToInstall) {\n const success = copyLocalSkill(skillName, targetDir, convertToMdc);\n if (success) {\n result.added.push(skillName);\n }\n }\n\n return result;\n}\n\nexport const initCommand = defineCommand({\n meta: {\n name: \"init\",\n description:\n \"Initialize .cursor/commands, .cursor/rules, and .cursor/skills in your project\",\n },\n args: {\n force: {\n type: \"boolean\",\n alias: \"f\",\n description: \"Overwrite existing files without prompting\",\n default: false,\n },\n commands: {\n type: \"boolean\",\n alias: \"c\",\n description: \"Only initialize commands\",\n default: false,\n },\n rules: {\n type: \"boolean\",\n alias: \"r\",\n description: \"Only initialize rules\",\n default: false,\n },\n skills: {\n type: \"boolean\",\n alias: \"s\",\n description: \"Only initialize skills\",\n default: false,\n },\n all: {\n type: \"boolean\",\n alias: \"a\",\n description: \"Install all templates without selection prompts\",\n default: false,\n },\n target: {\n type: \"string\",\n alias: \"t\",\n description: \"Target AI IDE: 'cursor' or 'github-copilot'\",\n default: undefined,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const cursorDir = getCursorDir(cwd);\n const commandsDir = getCommandsDir(cwd);\n const rulesDir = getRulesDir(cwd);\n const skillsDir = getSkillsDir(cwd);\n\n const initAll = !args.commands && !args.rules && !args.skills;\n const shouldInitCommands = initAll || args.commands;\n const shouldInitRules = initAll || args.rules;\n const shouldInitSkills = initAll || args.skills;\n\n p.intro(pc.bgCyan(pc.black(\" cursor-kit init \")));\n\n let target: InstructionTarget;\n if (args.target === \"github-copilot\" || args.target === \"cursor\") {\n target = args.target;\n } else {\n const selection = await promptTargetSelection();\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n target = selection;\n }\n\n const s = p.spinner();\n\n let manifest: TemplateManifest;\n\n try {\n s.start(\"Fetching template manifest...\");\n manifest = await fetchTemplateManifest();\n s.stop(\"Template manifest loaded\");\n } catch (error) {\n s.stop(\"Failed to fetch manifest\");\n p.cancel(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n process.exit(1);\n }\n\n if (target === \"github-copilot\") {\n await handleCopilotInstallation(\n cwd,\n manifest,\n args,\n shouldInitCommands,\n shouldInitRules,\n shouldInitSkills\n );\n return;\n }\n\n const results: {\n commands?: InitResult;\n rules?: InitResult;\n skills?: InitResult;\n } = {};\n\n try {\n ensureDir(cursorDir);\n\n if (shouldInitCommands) {\n let selectedCommands: string[];\n\n if (args.all) {\n selectedCommands = manifest.commands;\n } else {\n const selection = await selectTemplates(\"commands\", manifest.commands);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedCommands = selection;\n }\n\n const conflictingCommands = getConflictingFiles(\n commandsDir,\n selectedCommands\n );\n let commandStrategy: ConflictStrategy = \"overwrite\";\n\n if (conflictingCommands.length > 0 && !args.force) {\n const strategy = await handleConflicts(\"commands\", conflictingCommands);\n if (p.isCancel(strategy) || strategy === \"cancel\") {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n commandStrategy = strategy;\n }\n\n s.start(\"Installing commands...\");\n results.commands = await installTemplates(\n \"commands\",\n commandsDir,\n selectedCommands,\n commandStrategy,\n target\n );\n s.stop(\"Commands installed\");\n }\n\n if (shouldInitRules) {\n let selectedRules: string[];\n\n if (args.all) {\n selectedRules = manifest.rules;\n } else {\n const selection = await selectTemplates(\"rules\", manifest.rules);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedRules = selection;\n }\n\n // For Cursor, rules need .mdc extension, so check for .mdc files\n const expectedRuleFilenames = selectedRules.map((filename) => {\n return target === \"cursor\" && filename.endsWith(\".md\")\n ? convertMdToMdc(filename)\n : filename;\n });\n const conflictingRules = getConflictingFiles(rulesDir, expectedRuleFilenames);\n let ruleStrategy: ConflictStrategy = \"overwrite\";\n\n if (conflictingRules.length > 0 && !args.force) {\n const strategy = await handleConflicts(\"rules\", conflictingRules);\n if (p.isCancel(strategy) || strategy === \"cancel\") {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n ruleStrategy = strategy;\n }\n\n s.start(\"Installing rules...\");\n results.rules = await installTemplates(\n \"rules\",\n rulesDir,\n selectedRules,\n ruleStrategy,\n target\n );\n s.stop(\"Rules installed\");\n }\n\n if (shouldInitSkills) {\n let selectedSkills: string[];\n\n if (args.all) {\n selectedSkills = manifest.skills;\n } else {\n const selection = await selectTemplates(\"skills\", manifest.skills);\n if (p.isCancel(selection)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n selectedSkills = selection;\n }\n\n const conflictingSkills = getConflictingDirs(skillsDir, selectedSkills);\n let skillStrategy: ConflictStrategy = \"overwrite\";\n\n if (conflictingSkills.length > 0 && !args.force) {\n const strategy = await handleConflicts(\"skills\", conflictingSkills);\n if (p.isCancel(strategy) || strategy === \"cancel\") {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n skillStrategy = strategy;\n }\n\n s.start(\"Installing skills...\");\n results.skills = await installSkills(\n skillsDir,\n selectedSkills,\n skillStrategy,\n target\n );\n s.stop(\"Skills installed\");\n }\n\n printDivider();\n console.log();\n\n if (results.commands) {\n const { added, skipped } = results.commands;\n if (added.length > 0 || skipped.length > 0) {\n printSuccess(\n `Commands: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n );\n for (const f of added) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${f}`));\n }\n for (const f of skipped) {\n console.log(pc.dim(` └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n }\n }\n }\n\n if (results.rules) {\n const { added, skipped } = results.rules;\n if (added.length > 0 || skipped.length > 0) {\n printSuccess(\n `Rules: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n );\n for (const f of added) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${f}`));\n }\n for (const f of skipped) {\n console.log(pc.dim(` └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n }\n }\n }\n\n if (results.skills) {\n const { added, skipped } = results.skills;\n if (added.length > 0 || skipped.length > 0) {\n printSuccess(\n `Skills: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n );\n for (const f of added) {\n console.log(pc.dim(` └─ ${pc.green(\"+\")} ${f}`));\n }\n for (const f of skipped) {\n console.log(pc.dim(` └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n }\n }\n }\n\n const totalAdded =\n (results.commands?.added.length ?? 0) +\n (results.rules?.added.length ?? 0) +\n (results.skills?.added.length ?? 0);\n const totalSkipped =\n (results.commands?.skipped.length ?? 0) +\n (results.rules?.skipped.length ?? 0) +\n (results.skills?.skipped.length ?? 0);\n\n if (totalAdded === 0 && totalSkipped > 0) {\n console.log();\n p.outro(pc.yellow(\"No new templates added (all selected files already exist)\"));\n } else {\n console.log();\n p.outro(pc.green(\"✨ Cursor Kit initialized successfully!\"));\n }\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n process.exit(1);\n }\n },\n});\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function copyDir(src: string, dest: string): void {\n cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function listDirs(dir: string): string[] {\n if (!dirExists(dir)) return [];\n \n return readdirSync(dir).filter((item) => {\n const itemPath = join(dir, item);\n return statSync(itemPath).isDirectory();\n });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return [];\n return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return dirs;\n return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n\nexport function getGitHubDir(cwd: string = process.cwd()): string {\n return join(cwd, \".github\");\n}\n\nexport function getCopilotInstructionsPath(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions.md\");\n}\n\nexport function getCopilotInstructionsDir(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions\");\n}\n\nexport function getCopilotCommandsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"commands\");\n}\n\nexport function getCopilotRulesDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"rules\");\n}\n\nexport function getCopilotSkillsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"skills\");\n}\n\nexport function deleteFile(path: string): void {\n if (fileExists(path)) {\n rmSync(path);\n }\n}\n","import { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { REPO_RAW_URL, TEMPLATE_PATHS } from \"./constants\";\nimport { fileExists, readFile, dirExists, listFiles, listDirs, copyDir, ensureDir, writeFile, deleteFile } from \"./fs\";\n\nexport interface TemplateManifest {\n commands: string[];\n rules: string[];\n skills: string[];\n}\n\nexport type TemplateType = \"commands\" | \"rules\" | \"skills\";\n\nexport interface TemplateItem {\n name: string;\n type: TemplateType;\n}\n\nfunction getLocalTemplatesDir(): string {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n return join(currentDir, \"..\", \"templates\");\n}\n\nfunction getLocalManifest(): TemplateManifest | null {\n const templatesDir = getLocalTemplatesDir();\n const manifestPath = join(templatesDir, \"manifest.json\");\n\n if (fileExists(manifestPath)) {\n try {\n return JSON.parse(readFile(manifestPath)) as TemplateManifest;\n } catch {\n return null;\n }\n }\n\n const commandsDir = join(templatesDir, \"commands\");\n const rulesDir = join(templatesDir, \"rules\");\n const skillsDir = join(templatesDir, \"skills\");\n\n if (!dirExists(commandsDir) && !dirExists(rulesDir) && !dirExists(skillsDir)) {\n return null;\n }\n\n return {\n commands: dirExists(commandsDir) ? listFiles(commandsDir, \".md\") : [],\n rules: dirExists(rulesDir) ? listFiles(rulesDir, \".md\") : [],\n skills: dirExists(skillsDir) ? listDirs(skillsDir) : [],\n };\n}\n\nfunction getLocalTemplateContent(type: TemplateType, filename: string): string | null {\n const templatesDir = getLocalTemplatesDir();\n const filePath = join(templatesDir, type, filename);\n\n if (fileExists(filePath)) {\n return readFile(filePath);\n }\n\n // Backward compatibility: try .mdc if .md not found (for rules)\n if (type === \"rules\" && filename.endsWith(\".md\")) {\n const mdcPath = filePath.replace(/\\.md$/, \".mdc\");\n if (fileExists(mdcPath)) {\n return readFile(mdcPath);\n }\n }\n\n return null;\n}\n\nexport function getLocalSkillDir(skillName: string): string | null {\n const templatesDir = getLocalTemplatesDir();\n const skillPath = join(templatesDir, \"skills\", skillName);\n\n if (dirExists(skillPath)) {\n return skillPath;\n }\n\n return null;\n}\n\nexport function convertMdToMdc(filename: string): string {\n return filename.replace(/\\.md$/, \".mdc\");\n}\n\nexport function transformTocContentForCursor(content: string): string {\n // Transform skill links: SKILL.md -> SKILL.mdc\n content = content.replace(/\\]\\(\\.\\.\\/skills\\/([^/]+)\\/SKILL\\.md\\)/g, '](../skills/$1/SKILL.mdc)');\n \n // Transform rule links: .md -> .mdc (for rules in the same directory)\n content = content.replace(/\\]\\(\\.\\/([^)]+)\\.md\\)/g, '](./$1.mdc)');\n \n return content;\n}\n\nexport function copyLocalSkill(\n skillName: string,\n targetDir: string,\n convertToMdc: boolean = false\n): boolean {\n const sourcePath = getLocalSkillDir(skillName);\n if (!sourcePath) return false;\n\n const destPath = join(targetDir, skillName);\n ensureDir(destPath);\n copyDir(sourcePath, destPath);\n\n // Convert SKILL.md to SKILL.mdc if needed (for Cursor)\n if (convertToMdc) {\n const skillMdPath = join(destPath, \"SKILL.md\");\n const skillMdcPath = join(destPath, \"SKILL.mdc\");\n if (fileExists(skillMdPath)) {\n const content = readFile(skillMdPath);\n writeFile(skillMdcPath, content);\n // Delete SKILL.md since Cursor only uses SKILL.mdc\n deleteFile(skillMdPath);\n }\n }\n\n return true;\n}\n\nexport async function fetchTemplateManifest(): Promise<TemplateManifest> {\n const localManifest = getLocalManifest();\n if (localManifest) {\n return localManifest;\n }\n\n const url = `${REPO_RAW_URL}/templates/manifest.json`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch template manifest: ${response.statusText}`);\n }\n\n return response.json() as Promise<TemplateManifest>;\n}\n\nexport async function fetchTemplateContent(\n type: TemplateType,\n filename: string\n): Promise<string> {\n const localContent = getLocalTemplateContent(type, filename);\n if (localContent !== null) {\n return localContent;\n }\n\n const templatePath = TEMPLATE_PATHS[type];\n const url = `${REPO_RAW_URL}/${templatePath}/${filename}`;\n\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch template ${filename}: ${response.statusText}`);\n }\n\n return response.text();\n}\n\nexport async function fetchMultipleTemplates(\n type: TemplateType,\n filenames: string[]\n): Promise<Map<string, string>> {\n const results = new Map<string, string>();\n\n const fetchPromises = filenames.map(async (filename) => {\n const content = await fetchTemplateContent(type, filename);\n return { filename, content };\n });\n\n const settled = await Promise.allSettled(fetchPromises);\n\n for (const result of settled) {\n if (result.status === \"fulfilled\") {\n results.set(result.value.filename, result.value.content);\n }\n }\n\n return results;\n}\n\nexport function getTemplateLabel(filename: string): string {\n const nameWithoutExt = filename.replace(/\\.(md|mdc)$/, \"\");\n return nameWithoutExt\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function getSkillLabel(skillName: string): string {\n return skillName\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function stripFrontmatter(content: string): string {\n const frontmatterRegex = /^---\\n[\\s\\S]*?\\n---\\n/;\n return content.replace(frontmatterRegex, \"\").trim();\n}\n\nexport function extractFrontmatter(content: string): {\n alwaysApply?: boolean;\n name?: string;\n description?: string;\n [key: string]: unknown;\n} {\n const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---\\n/);\n if (!frontmatterMatch) return {};\n\n const frontmatter = frontmatterMatch[1];\n const result: Record<string, unknown> = {};\n\n for (const line of frontmatter.split(\"\\n\")) {\n const match = line.match(/^(\\w+):\\s*(.+)$/);\n if (match) {\n const [, key, value] = match;\n result[key] =\n value === \"true\" ? true : value === \"false\" ? false : value;\n }\n }\n\n return result;\n}\n\nexport function generateCopilotIndex(\n commands: string[],\n rules: string[],\n skills: string[],\n alwaysApplyRules: string[] = []\n): string {\n let output = \"# GitHub Copilot Custom Instructions\\n\\n\";\n output += \"> Generated by cursor-kit-cli\\n\\n\";\n output +=\n \"This file provides instructions for GitHub Copilot. \";\n output +=\n \"When working on tasks, read the relevant files from the `copilot-instructions/` directory as needed.\\n\\n\";\n\n if (alwaysApplyRules.length > 0) {\n output += \"## Rules Applied Automatically\\n\\n\";\n output +=\n \"The following rules are always applied. Read these files for context:\\n\\n\";\n for (const rule of alwaysApplyRules) {\n const ruleName = rule.replace(/\\.md$/, \"\");\n output += `- **${ruleName}**: Read \\`.github/copilot-instructions/rules/${rule}\\` for guidelines\\n`;\n }\n output += \"\\n\";\n }\n\n if (commands.length > 0) {\n output += \"## Commands\\n\\n\";\n output +=\n \"When the user requests a command, read the corresponding file:\\n\\n\";\n for (const cmd of commands) {\n const cmdName = cmd.replace(/\\.md$/, \"\");\n output += `- **${cmdName}**: Read \\`.github/copilot-instructions/commands/${cmd}\\` when user requests \"${cmdName}\"\\n`;\n }\n output += \"\\n\";\n }\n\n if (rules.length > 0) {\n output += \"## Rules\\n\\n\";\n output +=\n \"Apply these rules when relevant to the task. Read the files as needed:\\n\\n\";\n for (const rule of rules) {\n const ruleName = rule.replace(/\\.md$/, \"\");\n output += `- **${ruleName}**: Read \\`.github/copilot-instructions/rules/${rule}\\` for ${ruleName} guidelines\\n`;\n }\n output += \"\\n\";\n }\n\n if (skills.length > 0) {\n output += \"## Skills\\n\\n\";\n output +=\n \"These are comprehensive guides for specialized domains. Read the relevant skill when working in that domain:\\n\\n\";\n for (const skill of skills) {\n output += `- **${skill}**: Read \\`.github/copilot-instructions/skills/${skill}/SKILL.md\\` when working on ${skill} tasks\\n`;\n }\n output += \"\\n\";\n }\n\n output += \"## Usage Guidelines\\n\\n\";\n output +=\n \"- **Don't read all files at once** - Only read files relevant to the current task\\n\";\n output +=\n \"- **Commands**: Read command files when the user explicitly requests that command\\n\";\n output +=\n \"- **Rules**: Reference rules when they apply to the current coding task\\n\";\n output +=\n \"- **Skills**: Read skill files when working in that domain (e.g., frontend-development for React components)\\n\";\n output +=\n \"- **Always Apply Rules**: These are automatically considered, but you can reference them for specific guidance\\n\\n\";\n\n return output;\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n skills: \"templates/skills\",\n} as const;\n","import { join } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport {\n ensureDir,\n fileExists,\n dirExists,\n writeFile,\n deleteFile,\n readFile,\n getCopilotInstructionsPath,\n getCopilotInstructionsDir,\n getCopilotCommandsDir,\n getCopilotRulesDir,\n getCopilotSkillsDir,\n} from \"./fs\";\nimport {\n fetchMultipleTemplates,\n copyLocalSkill,\n stripFrontmatter,\n extractFrontmatter,\n generateCopilotIndex,\n} from \"./templates\";\nimport { printSuccess } from \"./branding\";\n\nexport interface CopilotInstallResult {\n commands: string[];\n rules: string[];\n skills: string[];\n alwaysApplyRules: string[];\n}\n\nasync function installCopilotCommands(\n commandsDir: string,\n selectedCommands: string[]\n): Promise<string[]> {\n if (selectedCommands.length === 0) return [];\n\n ensureDir(commandsDir);\n const commandsMap = await fetchMultipleTemplates(\"commands\", selectedCommands);\n const installed: string[] = [];\n\n for (const [filename, content] of commandsMap) {\n const cleanContent = stripFrontmatter(content);\n const filePath = join(commandsDir, filename);\n writeFile(filePath, cleanContent);\n installed.push(filename);\n }\n\n return installed;\n}\n\nasync function installCopilotRules(\n rulesDir: string,\n selectedRules: string[]\n): Promise<{ installed: string[]; alwaysApply: string[] }> {\n if (selectedRules.length === 0) return { installed: [], alwaysApply: [] };\n\n ensureDir(rulesDir);\n const rulesMap = await fetchMultipleTemplates(\"rules\", selectedRules);\n const installed: string[] = [];\n const alwaysApply: string[] = [];\n\n for (const [filename, content] of rulesMap) {\n const frontmatter = extractFrontmatter(content);\n const cleanContent = stripFrontmatter(content);\n\n // Templates are now .md, but handle .mdc for backward compatibility\n const mdFilename = filename.endsWith(\".md\") ? filename : filename.replace(/\\.mdc$/, \".md\");\n const filePath = join(rulesDir, mdFilename);\n writeFile(filePath, cleanContent);\n\n installed.push(mdFilename);\n\n if (frontmatter.alwaysApply) {\n alwaysApply.push(mdFilename);\n }\n }\n\n return { installed, alwaysApply };\n}\n\nasync function installCopilotSkills(\n skillsDir: string,\n selectedSkills: string[]\n): Promise<string[]> {\n if (selectedSkills.length === 0) return [];\n\n ensureDir(skillsDir);\n const installed: string[] = [];\n\n for (const skillName of selectedSkills) {\n const success = copyLocalSkill(skillName, skillsDir);\n if (!success) continue;\n\n const skillTargetDir = join(skillsDir, skillName);\n const skillMdcPath = join(skillTargetDir, \"SKILL.mdc\");\n const skillMdPath = join(skillTargetDir, \"SKILL.md\");\n\n // Handle SKILL.md (new format) or SKILL.mdc (backward compatibility)\n if (fileExists(skillMdPath)) {\n // Already .md, just strip frontmatter if needed\n const content = readFile(skillMdPath);\n const cleanContent = stripFrontmatter(content);\n writeFile(skillMdPath, cleanContent);\n } else if (fileExists(skillMdcPath)) {\n // Convert .mdc to .md (backward compatibility)\n const content = readFile(skillMdcPath);\n const cleanContent = stripFrontmatter(content);\n writeFile(skillMdPath, cleanContent);\n deleteFile(skillMdcPath);\n }\n\n installed.push(skillName);\n }\n\n return installed;\n}\n\nexport async function checkCopilotConflicts(\n cwd: string,\n force: boolean\n): Promise<boolean> {\n const copilotDir = getCopilotInstructionsDir(cwd);\n const copilotIndexPath = getCopilotInstructionsPath(cwd);\n\n const hasExistingDir = dirExists(copilotDir);\n const hasExistingIndex = fileExists(copilotIndexPath);\n\n if ((hasExistingDir || hasExistingIndex) && !force) {\n const overwrite = await p.confirm({\n message: \"GitHub Copilot instructions already exist. Overwrite?\",\n initialValue: false,\n });\n\n if (p.isCancel(overwrite) || !overwrite) {\n return false;\n }\n }\n\n return true;\n}\n\nexport async function installCopilotInstructions(\n cwd: string,\n selectedCommands: string[],\n selectedRules: string[],\n selectedSkills: string[]\n): Promise<CopilotInstallResult> {\n const commandsDir = getCopilotCommandsDir(cwd);\n const rulesDir = getCopilotRulesDir(cwd);\n const skillsDir = getCopilotSkillsDir(cwd);\n const copilotIndexPath = getCopilotInstructionsPath(cwd);\n\n const [installedCommands, rulesResult, installedSkills] = await Promise.all([\n installCopilotCommands(commandsDir, selectedCommands),\n installCopilotRules(rulesDir, selectedRules),\n installCopilotSkills(skillsDir, selectedSkills),\n ]);\n\n const installedRules = rulesResult.installed;\n const alwaysApplyRules = rulesResult.alwaysApply;\n\n const indexContent = generateCopilotIndex(\n installedCommands,\n installedRules,\n installedSkills,\n alwaysApplyRules\n );\n\n writeFile(copilotIndexPath, indexContent);\n\n printSuccess(`GitHub Copilot instructions generated`);\n console.log(pc.dim(` └─ ${copilotIndexPath}`));\n console.log(pc.dim(` └─ ${getCopilotInstructionsDir(cwd)}/`));\n\n return {\n commands: installedCommands,\n rules: installedRules.map((r) => r.replace(/\\.md$/, \"\")),\n skills: installedSkills,\n alwaysApplyRules,\n };\n}\n\n","import * as p from \"@clack/prompts\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport { highlight } from \"../utils/branding\";\nimport {\n dirExists,\n ensureDir,\n fileExists,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n writeFile,\n readFile,\n deleteFile,\n} from \"../utils/fs\";\nimport { convertMdToMdc } from \"../utils/templates\";\n\ntype ItemType = \"command\" | \"rule\" | \"skill\";\n\nconst COMMAND_TEMPLATE = `You are a helpful assistant. Describe what this command does.\n\n## Instructions\n- Step 1: ...\n- Step 2: ...\n\n## Rules\n- Be concise\n- Focus on the task\n\nSTART: Wait for user input.\n`;\n\nconst RULE_TEMPLATE = `---\ndescription: Describe when this rule should apply\nglobs: \nalwaysApply: false\n---\n\n# Rule Title\n\nDescribe the rule behavior here.\n\n## Guidelines\n- Guideline 1\n- Guideline 2\n`;\n\nconst SKILL_TEMPLATE = `---\ndescription: Describe when this skill should be activated\nglobs:\nalwaysApply: false\n---\n\n# Skill Name\n\nBrief description of what this skill enables.\n\n## Core Capabilities\n\n- Capability 1\n- Capability 2\n\n## When to Use\n\nUse this skill when:\n- Condition 1\n- Condition 2\n\n## References\n\nFor detailed guidance, see the references folder:\n- [Reference 1](./references/example.md) - Description\n`;\n\nconst SKILL_REFERENCE_TEMPLATE = `# Reference Title\n\nDetailed reference content goes here.\n\n## Section 1\n\nContent...\n\n## Section 2\n\nContent...\n`;\n\nfunction generateSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .replace(/-+/g, \"-\")\n .trim();\n}\n\nexport const addCommand = defineCommand({\n meta: {\n name: \"add\",\n description: \"Add a new command, rule, or skill\",\n },\n args: {\n type: {\n type: \"string\",\n alias: \"t\",\n description: \"Type: 'command', 'rule', or 'skill'\",\n },\n name: {\n type: \"string\",\n alias: \"n\",\n description: \"Name of the command, rule, or skill\",\n },\n },\n async run({ args }) {\n p.intro(pc.bgCyan(pc.black(\" cursor-kit add \")));\n\n let itemType: ItemType;\n let itemName: string;\n\n if (args.type && [\"command\", \"rule\", \"skill\"].includes(args.type)) {\n itemType = args.type as ItemType;\n } else {\n const typeResult = await p.select({\n message: \"What do you want to add?\",\n options: [\n {\n value: \"command\",\n label: \"Command\",\n hint: \"A reusable prompt template\",\n },\n {\n value: \"rule\",\n label: \"Rule\",\n hint: \"Project-specific AI behavior rules\",\n },\n {\n value: \"skill\",\n label: \"Skill\",\n hint: \"Comprehensive guide with references\",\n },\n ],\n });\n\n if (p.isCancel(typeResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemType = typeResult as ItemType;\n }\n\n if (args.name) {\n itemName = args.name;\n } else {\n const nameResult = await p.text({\n message: `Enter ${itemType} name:`,\n placeholder: itemType === \"command\" ? \"my-command\" : itemType === \"rule\" ? \"my-rule\" : \"my-skill\",\n validate: (value) => {\n if (!value.trim()) return \"Name is required\";\n if (value.length < 2) return \"Name must be at least 2 characters\";\n return undefined;\n },\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemName = nameResult;\n }\n\n const slug = generateSlug(itemName);\n const isCommand = itemType === \"command\";\n // const isRule = itemType === \"rule\";\n const isSkill = itemType === \"skill\";\n\n let targetPath: string;\n let displayPath: string;\n\n if (isSkill) {\n const skillsDir = getSkillsDir();\n targetPath = join(skillsDir, slug);\n displayPath = targetPath;\n } else {\n const targetDir = isCommand ? getCommandsDir() : getRulesDir();\n // Create as .md, will convert to .mdc for rules after creation\n const extension = \".md\";\n targetPath = join(targetDir, `${slug}${extension}`);\n displayPath = targetPath;\n }\n\n // Check for existing files (including .mdc for rules)\n const checkPath = isSkill \n ? targetPath \n : isCommand \n ? targetPath \n : join(getRulesDir(), `${slug}.mdc`);\n const exists = isSkill \n ? dirExists(targetPath) \n : fileExists(targetPath) || (!isCommand && fileExists(checkPath));\n \n if (exists) {\n const displayName = isSkill \n ? slug \n : isCommand \n ? `${slug}.md` \n : `${slug}.md/.mdc`;\n const shouldOverwrite = await p.confirm({\n message: `${highlight(displayName)} already exists. Overwrite?`,\n initialValue: false,\n });\n\n if (p.isCancel(shouldOverwrite) || !shouldOverwrite) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n const s = p.spinner();\n s.start(`Creating ${itemType}...`);\n\n try {\n if (isSkill) {\n ensureDir(targetPath);\n ensureDir(join(targetPath, \"references\"));\n // Create SKILL.md, then convert to SKILL.mdc for Cursor\n const skillMdPath = join(targetPath, \"SKILL.md\");\n writeFile(skillMdPath, SKILL_TEMPLATE);\n writeFile(join(targetPath, \"references\", \"example.md\"), SKILL_REFERENCE_TEMPLATE);\n \n // Convert to .mdc for Cursor and delete .md\n const skillMdcPath = join(targetPath, \"SKILL.mdc\");\n const content = readFile(skillMdPath);\n writeFile(skillMdcPath, content);\n deleteFile(skillMdPath);\n } else {\n const targetDir = isCommand ? getCommandsDir() : getRulesDir();\n ensureDir(targetDir);\n const template = isCommand ? COMMAND_TEMPLATE : RULE_TEMPLATE;\n \n if (isCommand) {\n // Commands stay as .md\n writeFile(targetPath, template);\n } else {\n // Rules: create as .md, then convert to .mdc for Cursor and delete .md\n writeFile(targetPath, template);\n const mdcPath = join(targetDir, convertMdToMdc(`${slug}.md`));\n const content = readFile(targetPath);\n writeFile(mdcPath, content);\n deleteFile(targetPath);\n }\n }\n\n s.stop(`${itemType.charAt(0).toUpperCase() + itemType.slice(1)} created`);\n\n console.log();\n if (isSkill) {\n console.log(pc.dim(\" Directory: \") + highlight(displayPath));\n console.log(pc.dim(\" Main file: \") + highlight(join(displayPath, \"SKILL.mdc\")));\n } else if (isCommand) {\n console.log(pc.dim(\" File: \") + highlight(displayPath));\n } else {\n // Rule: show .mdc file (since .md was deleted)\n const mdcPath = join(getRulesDir(), convertMdToMdc(`${slug}.md`));\n console.log(pc.dim(\" File: \") + highlight(mdcPath));\n }\n console.log();\n\n p.outro(\n pc.green(`✨ ${itemType.charAt(0).toUpperCase() + itemType.slice(1)} created! Edit the file to customize it.`)\n );\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { downloadTemplate } from \"giget\";\nimport {\n ensureDir,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n listFiles,\n listDirs,\n getCursorDir,\n} from \"../utils/fs\";\nimport { REPO_URL, REPO_REF } from \"../utils/constants\";\nimport { highlight, printDivider, printSuccess, printInfo } from \"../utils/branding\";\n\nexport const pullCommand = defineCommand({\n meta: {\n name: \"pull\",\n description: \"Pull latest updates from cursor-kit repository\",\n },\n args: {\n commands: {\n type: \"boolean\",\n alias: \"c\",\n description: \"Only pull commands\",\n default: false,\n },\n rules: {\n type: \"boolean\",\n alias: \"r\",\n description: \"Only pull rules\",\n default: false,\n },\n skills: {\n type: \"boolean\",\n alias: \"s\",\n description: \"Only pull skills\",\n default: false,\n },\n force: {\n type: \"boolean\",\n alias: \"f\",\n description: \"Force overwrite without confirmation\",\n default: false,\n },\n },\n async run({ args }) {\n const pullAll = !args.commands && !args.rules && !args.skills;\n const shouldPullCommands = pullAll || args.commands;\n const shouldPullRules = pullAll || args.rules;\n const shouldPullSkills = pullAll || args.skills;\n\n p.intro(pc.bgCyan(pc.black(\" cursor-kit pull \")));\n\n const commandsDir = getCommandsDir();\n const rulesDir = getRulesDir();\n const skillsDir = getSkillsDir();\n\n const existingCommands = listFiles(commandsDir, \".md\");\n const existingRules = listFiles(rulesDir, \".mdc\");\n const existingSkills = listDirs(skillsDir);\n const hasExisting = existingCommands.length > 0 || existingRules.length > 0 || existingSkills.length > 0;\n\n if (hasExisting && !args.force) {\n printInfo(\"Current status:\");\n if (existingCommands.length > 0) {\n console.log(pc.dim(` Commands: ${existingCommands.length} files`));\n }\n if (existingRules.length > 0) {\n console.log(pc.dim(` Rules: ${existingRules.length} files`));\n }\n if (existingSkills.length > 0) {\n console.log(pc.dim(` Skills: ${existingSkills.length} directories`));\n }\n console.log();\n\n const shouldContinue = await p.confirm({\n message: \"This will merge with existing files. Continue?\",\n initialValue: true,\n });\n\n if (p.isCancel(shouldContinue) || !shouldContinue) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n const s = p.spinner();\n\n try {\n ensureDir(getCursorDir());\n\n if (shouldPullCommands) {\n s.start(\"Pulling commands...\");\n await downloadTemplate(`${REPO_URL}/templates/commands#${REPO_REF}`, {\n dir: commandsDir,\n force: true,\n });\n s.stop(\"Commands updated\");\n }\n\n if (shouldPullRules) {\n s.start(\"Pulling rules...\");\n await downloadTemplate(`${REPO_URL}/templates/rules#${REPO_REF}`, {\n dir: rulesDir,\n force: true,\n });\n s.stop(\"Rules updated\");\n }\n\n if (shouldPullSkills) {\n s.start(\"Pulling skills...\");\n await downloadTemplate(`${REPO_URL}/templates/skills#${REPO_REF}`, {\n dir: skillsDir,\n force: true,\n });\n s.stop(\"Skills updated\");\n }\n\n printDivider();\n console.log();\n\n const newCommands = listFiles(commandsDir, \".md\");\n const newRules = listFiles(rulesDir, \".mdc\");\n const newSkills = listDirs(skillsDir);\n\n if (shouldPullCommands) {\n const added = newCommands.length - existingCommands.length;\n printSuccess(\n `Commands: ${highlight(newCommands.length.toString())} total` +\n (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n );\n }\n\n if (shouldPullRules) {\n const added = newRules.length - existingRules.length;\n printSuccess(\n `Rules: ${highlight(newRules.length.toString())} total` +\n (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n );\n }\n\n if (shouldPullSkills) {\n const added = newSkills.length - existingSkills.length;\n printSuccess(\n `Skills: ${highlight(newSkills.length.toString())} total` +\n (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n );\n }\n\n console.log();\n p.outro(pc.green(\"✨ Successfully pulled latest updates!\"));\n } catch (error) {\n s.stop(\"Failed\");\n p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n },\n});\n","import * as p from \"@clack/prompts\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport { highlight, printDivider } from \"../utils/branding\";\nimport {\n fileExists,\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n listDirs,\n listFiles,\n readFile,\n} from \"../utils/fs\";\n\ninterface ItemInfo {\n name: string;\n path: string;\n description?: string;\n}\n\nfunction extractDescription(\n content: string,\n isCommand: boolean\n): string | undefined {\n if (isCommand) {\n const firstLine = content.trim().split(\"\\n\")[0];\n if (\n firstLine &&\n !firstLine.startsWith(\"#\") &&\n !firstLine.startsWith(\"---\")\n ) {\n return firstLine.slice(0, 60) + (firstLine.length > 60 ? \"...\" : \"\");\n }\n } else {\n const match = content.match(/description:\\s*(.+)/);\n if (match) {\n return match[1].trim().slice(0, 60) + (match[1].length > 60 ? \"...\" : \"\");\n }\n }\n return undefined;\n}\n\nfunction getItems(\n dir: string,\n extension: string,\n isCommand: boolean\n): ItemInfo[] {\n const files = listFiles(dir, extension);\n return files.map((file) => {\n const filePath = join(dir, file);\n const content = fileExists(filePath) ? readFile(filePath) : \"\";\n return {\n name: file.replace(extension, \"\"),\n path: filePath,\n description: extractDescription(content, isCommand),\n };\n });\n}\n\nfunction getSkills(dir: string): ItemInfo[] {\n const skillDirs = listDirs(dir);\n return skillDirs.map((skillName) => {\n const skillPath = join(dir, skillName);\n const skillFile = join(skillPath, \"SKILL.mdc\");\n const altSkillFile = join(skillPath, \"SKILL.md\");\n\n let description: string | undefined;\n\n if (fileExists(skillFile)) {\n const content = readFile(skillFile);\n description = extractDescription(content, false);\n } else if (fileExists(altSkillFile)) {\n const content = readFile(altSkillFile);\n description = extractDescription(content, false);\n }\n\n return {\n name: skillName,\n path: skillPath,\n description,\n };\n });\n}\n\nexport const listCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"List all commands, rules, and skills\",\n },\n args: {\n commands: {\n type: \"boolean\",\n alias: \"c\",\n description: \"Only list commands\",\n default: false,\n },\n rules: {\n type: \"boolean\",\n alias: \"r\",\n description: \"Only list rules\",\n default: false,\n },\n skills: {\n type: \"boolean\",\n alias: \"s\",\n description: \"Only list skills\",\n default: false,\n },\n verbose: {\n type: \"boolean\",\n alias: \"v\",\n description: \"Show full file paths\",\n default: false,\n },\n },\n async run({ args }) {\n const listAll = !args.commands && !args.rules && !args.skills;\n const shouldListCommands = listAll || args.commands;\n const shouldListRules = listAll || args.rules;\n const shouldListSkills = listAll || args.skills;\n\n p.intro(pc.bgCyan(pc.black(\" cursor-kit list \")));\n\n const commandsDir = getCommandsDir();\n const rulesDir = getRulesDir();\n const skillsDir = getSkillsDir();\n\n const commands = shouldListCommands\n ? getItems(commandsDir, \".md\", true)\n : [];\n const rules = shouldListRules ? getItems(rulesDir, \".mdc\", false) : [];\n const skills = shouldListSkills ? getSkills(skillsDir) : [];\n\n if (commands.length === 0 && rules.length === 0 && skills.length === 0) {\n console.log();\n console.log(pc.yellow(\" No commands, rules, or skills found.\"));\n console.log(\n pc.dim(\" Run \") +\n highlight(\"cursor-kit init\") +\n pc.dim(\" to get started.\")\n );\n console.log();\n p.outro(pc.dim(\"Nothing to show\"));\n return;\n }\n\n printDivider();\n\n if (shouldListCommands && commands.length > 0) {\n console.log();\n console.log(\n pc.bold(pc.cyan(\" 📜 Commands\")) + pc.dim(` (${commands.length})`)\n );\n console.log();\n\n commands.forEach((cmd) => {\n console.log(` ${pc.green(\"●\")} ${highlight(cmd.name)}`);\n if (cmd.description) {\n console.log(pc.dim(` ${cmd.description}`));\n }\n if (args.verbose) {\n console.log(pc.dim(` ${cmd.path}`));\n }\n });\n }\n\n if (shouldListRules && rules.length > 0) {\n console.log();\n console.log(\n pc.bold(pc.cyan(\" 📋 Rules\")) + pc.dim(` (${rules.length})`)\n );\n console.log();\n\n rules.forEach((rule) => {\n console.log(` ${pc.green(\"●\")} ${highlight(rule.name)}`);\n if (rule.description) {\n console.log(pc.dim(` ${rule.description}`));\n }\n if (args.verbose) {\n console.log(pc.dim(` ${rule.path}`));\n }\n });\n }\n\n if (shouldListSkills && skills.length > 0) {\n console.log();\n console.log(\n pc.bold(pc.cyan(\" 🎯 Skills\")) + pc.dim(` (${skills.length})`)\n );\n console.log();\n\n skills.forEach((skill) => {\n console.log(` ${pc.green(\"●\")} ${highlight(skill.name)}`);\n if (skill.description) {\n console.log(pc.dim(` ${skill.description}`));\n }\n if (args.verbose) {\n console.log(pc.dim(` ${skill.path}`));\n }\n });\n }\n\n console.log();\n printDivider();\n\n const total = commands.length + rules.length + skills.length;\n p.outro(pc.dim(`Total: ${total} item${total !== 1 ? \"s\" : \"\"}`));\n },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport {\n getCommandsDir,\n getRulesDir,\n getSkillsDir,\n listFiles,\n listDirs,\n removeFile,\n fileExists,\n dirExists,\n} from \"../utils/fs\";\nimport { highlight, printSuccess } from \"../utils/branding\";\nimport { join } from \"node:path\";\n\ntype ItemType = \"command\" | \"rule\" | \"skill\";\n\ninterface SelectOption {\n value: string;\n label: string;\n hint?: string;\n}\n\nexport const removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description: \"Remove a command, rule, or skill\",\n },\n args: {\n type: {\n type: \"string\",\n alias: \"t\",\n description: \"Type: 'command', 'rule', or 'skill'\",\n },\n name: {\n type: \"string\",\n alias: \"n\",\n description: \"Name of the command, rule, or skill to remove\",\n },\n force: {\n type: \"boolean\",\n alias: \"f\",\n description: \"Skip confirmation\",\n default: false,\n },\n },\n async run({ args }) {\n p.intro(pc.bgCyan(pc.black(\" cursor-kit remove \")));\n\n const commandsDir = getCommandsDir();\n const rulesDir = getRulesDir();\n const skillsDir = getSkillsDir();\n\n const commands = listFiles(commandsDir, \".md\").map((f) => f.replace(\".md\", \"\"));\n const rules = listFiles(rulesDir, \".mdc\").map((f) => f.replace(\".mdc\", \"\"));\n const skills = listDirs(skillsDir);\n\n if (commands.length === 0 && rules.length === 0 && skills.length === 0) {\n console.log();\n console.log(pc.yellow(\" No commands, rules, or skills to remove.\"));\n console.log();\n p.outro(pc.dim(\"Nothing to do\"));\n return;\n }\n\n let itemType: ItemType;\n let itemName: string;\n\n if (args.type && [\"command\", \"rule\", \"skill\"].includes(args.type)) {\n itemType = args.type as ItemType;\n } else {\n const typeOptions: SelectOption[] = [];\n\n if (commands.length > 0) {\n typeOptions.push({\n value: \"command\",\n label: \"Command\",\n hint: `${commands.length} available`,\n });\n }\n\n if (rules.length > 0) {\n typeOptions.push({\n value: \"rule\",\n label: \"Rule\",\n hint: `${rules.length} available`,\n });\n }\n\n if (skills.length > 0) {\n typeOptions.push({\n value: \"skill\",\n label: \"Skill\",\n hint: `${skills.length} available`,\n });\n }\n\n const typeResult = await p.select({\n message: \"What do you want to remove?\",\n options: typeOptions,\n });\n\n if (p.isCancel(typeResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemType = typeResult as ItemType;\n }\n\n const isCommand = itemType === \"command\";\n const isRule = itemType === \"rule\";\n const isSkill = itemType === \"skill\";\n const items = isCommand ? commands : isRule ? rules : skills;\n const dir = isCommand ? commandsDir : isRule ? rulesDir : skillsDir;\n const extension = isCommand ? \".md\" : isRule ? \".mdc\" : \"\";\n\n if (items.length === 0) {\n p.cancel(`No ${itemType}s found`);\n process.exit(0);\n }\n\n if (args.name && items.includes(args.name)) {\n itemName = args.name;\n } else {\n const itemOptions: SelectOption[] = items.map((item) => ({\n value: item,\n label: item,\n }));\n\n const nameResult = await p.select({\n message: `Select ${itemType} to remove:`,\n options: itemOptions,\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n itemName = nameResult as string;\n }\n\n const targetPath = isSkill\n ? join(dir, itemName)\n : join(dir, `${itemName}${extension}`);\n\n const exists = isSkill ? dirExists(targetPath) : fileExists(targetPath);\n\n if (!exists) {\n p.cancel(`${itemType} '${itemName}' not found`);\n process.exit(1);\n }\n\n if (!args.force) {\n const displayName = isSkill ? itemName : itemName + extension;\n const shouldDelete = await p.confirm({\n message: `Are you sure you want to delete ${highlight(displayName)}?${isSkill ? \" (This will remove the entire skill directory)\" : \"\"}`,\n initialValue: false,\n });\n\n if (p.isCancel(shouldDelete) || !shouldDelete) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n try {\n removeFile(targetPath);\n const displayName = isSkill ? itemName : itemName + extension;\n console.log();\n printSuccess(`Removed ${highlight(displayName)}`);\n console.log();\n p.outro(pc.green(\"✨ Done!\"));\n } catch (error) {\n p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { spawn } from \"node:child_process\";\nimport { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { existsSync, chmodSync, readdirSync } from \"node:fs\";\nimport { highlight, printDivider, printSuccess, printInfo, printWarning } from \"../utils/branding\";\n\ntype InstanceAction = \"create\" | \"remove\" | \"reinstall\";\n\ninterface InstanceInfo {\n name: string;\n path: string;\n}\n\nfunction getBinPath(): string {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const possiblePaths = [\n join(currentDir, \"..\", \"..\", \"bin\"),\n join(currentDir, \"..\", \"bin\"),\n ];\n\n for (const binPath of possiblePaths) {\n if (existsSync(binPath)) {\n return binPath;\n }\n }\n\n return possiblePaths[0];\n}\n\nfunction ensureExecutable(scriptPath: string): void {\n try {\n chmodSync(scriptPath, 0o755);\n } catch {\n // Ignore permission errors\n }\n}\n\nfunction getExistingInstances(): InstanceInfo[] {\n const userAppsDir = join(process.env.HOME ?? \"\", \"Applications\");\n if (!existsSync(userAppsDir)) return [];\n\n try {\n const apps = readdirSync(userAppsDir);\n return apps\n .filter((app) => app.startsWith(\"Cursor\") && app.endsWith(\".app\") && app !== \"Cursor.app\")\n .map((app) => ({\n name: app.replace(\".app\", \"\"),\n path: join(userAppsDir, app),\n }));\n } catch {\n return [];\n }\n}\n\nfunction runScript(scriptPath: string, args: string[]): Promise<number> {\n return new Promise((resolve) => {\n ensureExecutable(scriptPath);\n\n const child = spawn(scriptPath, args, {\n stdio: \"inherit\",\n });\n\n child.on(\"close\", (code) => {\n resolve(code ?? 1);\n });\n\n child.on(\"error\", () => {\n resolve(1);\n });\n });\n}\n\nexport const instanceCommand = defineCommand({\n meta: {\n name: \"instance\",\n description: \"Manage Cursor IDE instances for multi-account login (macOS only)\",\n },\n args: {\n action: {\n type: \"string\",\n alias: \"a\",\n description: \"Action: 'create', 'reinstall', or 'remove'\",\n },\n name: {\n type: \"string\",\n alias: \"n\",\n description: \"Name of the instance (e.g. 'Cursor Enterprise')\",\n },\n list: {\n type: \"boolean\",\n alias: \"l\",\n description: \"List existing Cursor instances\",\n default: false,\n },\n },\n async run({ args }) {\n p.intro(pc.bgCyan(pc.black(\" cursor-kit instance \")));\n\n // OS check\n if (process.platform !== \"darwin\") {\n console.log();\n printWarning(\"This command only works on macOS.\");\n console.log(pc.dim(\" Cursor instance management requires macOS-specific features.\"));\n console.log();\n p.outro(pc.dim(\"Exiting\"));\n process.exit(1);\n }\n\n // List mode\n if (args.list) {\n const instances = getExistingInstances();\n printDivider();\n console.log();\n\n if (instances.length === 0) {\n printInfo(\"No custom Cursor instances found.\");\n console.log(pc.dim(\" Run \") + highlight(\"cursor-kit instance\") + pc.dim(\" to create one.\"));\n } else {\n console.log(pc.bold(pc.cyan(\" 🖥 Cursor Instances\")) + pc.dim(` (${instances.length})`));\n console.log();\n for (const instance of instances) {\n console.log(` ${pc.green(\"●\")} ${highlight(instance.name)}`);\n console.log(pc.dim(` └─ ${instance.path}`));\n }\n }\n\n console.log();\n printDivider();\n p.outro(pc.dim(`Total: ${instances.length} instance${instances.length !== 1 ? \"s\" : \"\"}`));\n return;\n }\n\n const s = p.spinner();\n\n // Check prerequisites\n s.start(\"Checking prerequisites...\");\n const binPath = getBinPath();\n const createScript = join(binPath, \"cursor-new-instance\");\n const removeScript = join(binPath, \"cursor-remove-instance\");\n const reinstallScript = join(binPath, \"cursor-reinstall-instance.sh\");\n\n const scriptsExist = existsSync(createScript) && existsSync(removeScript) && existsSync(reinstallScript);\n if (!scriptsExist) {\n s.stop(\"Prerequisites check failed\");\n console.log();\n printWarning(\"Required scripts not found.\");\n console.log(pc.dim(` Expected at: ${binPath}`));\n console.log();\n p.outro(pc.red(\"Installation may be corrupted\"));\n process.exit(1);\n }\n\n const originalCursor = \"/Applications/Cursor.app\";\n if (!existsSync(originalCursor)) {\n s.stop(\"Prerequisites check failed\");\n console.log();\n printWarning(\"Cursor.app not found in /Applications\");\n console.log(pc.dim(\" Please install Cursor IDE first.\"));\n console.log();\n p.outro(pc.red(\"Cursor IDE required\"));\n process.exit(1);\n }\n\n s.stop(\"Prerequisites verified\");\n\n // Get existing instances for context\n const existingInstances = getExistingInstances();\n\n let action: InstanceAction;\n let instanceName: string;\n\n // Determine action\n if (args.action && [\"create\", \"remove\", \"reinstall\"].includes(args.action)) {\n action = args.action as InstanceAction;\n } else {\n const actionResult = await p.select({\n message: \"What would you like to do?\",\n options: [\n {\n value: \"create\",\n label: \"Create new instance\",\n hint: \"Clone Cursor with separate identity\",\n },\n {\n value: \"reinstall\",\n label: \"Reinstall instance\",\n hint: existingInstances.length > 0\n ? \"Fix broken instance after Cursor update\"\n : \"No instances to reinstall\",\n },\n {\n value: \"remove\",\n label: \"Remove instance\",\n hint: existingInstances.length > 0\n ? `${existingInstances.length} instance${existingInstances.length !== 1 ? \"s\" : \"\"} available`\n : \"No instances to remove\",\n },\n ],\n });\n\n if (p.isCancel(actionResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n action = actionResult as InstanceAction;\n }\n\n // Get instance name\n if (args.name) {\n instanceName = args.name;\n } else if ((action === \"remove\" || action === \"reinstall\") && existingInstances.length > 0) {\n // For remove/reinstall actions, show existing instances to select from\n const actionLabel = action === \"remove\" ? \"remove\" : \"reinstall\";\n const instanceResult = await p.select({\n message: `Select instance to ${actionLabel}:`,\n options: existingInstances.map((inst) => ({\n value: inst.name,\n label: inst.name,\n hint: inst.path,\n })),\n });\n\n if (p.isCancel(instanceResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n instanceName = instanceResult as string;\n } else if ((action === \"remove\" || action === \"reinstall\") && existingInstances.length === 0) {\n console.log();\n printInfo(`No custom Cursor instances found to ${action}.`);\n console.log();\n p.outro(pc.dim(\"Nothing to do\"));\n return;\n } else {\n // For create action, prompt for name\n const nameResult = await p.text({\n message: \"Enter a name for the new instance:\",\n placeholder: \"Cursor Enterprise\",\n validate: (value) => {\n if (!value.trim()) return \"Instance name is required\";\n if (value.length < 2) return \"Name must be at least 2 characters\";\n const existing = existingInstances.find(\n (i) => i.name.toLowerCase() === value.toLowerCase()\n );\n if (existing) return `Instance \"${value}\" already exists`;\n return undefined;\n },\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n instanceName = nameResult;\n }\n\n // Show summary\n printDivider();\n console.log();\n console.log(pc.bold(pc.cyan(\" 📋 Summary\")));\n console.log();\n const actionColor = action === \"create\" ? pc.green : action === \"reinstall\" ? pc.blue : pc.yellow;\n const actionLabel = action === \"create\" ? \"Create\" : action === \"reinstall\" ? \"Reinstall\" : \"Remove\";\n console.log(` ${pc.dim(\"Action:\")} ${actionColor(actionLabel)}`);\n console.log(` ${pc.dim(\"Instance:\")} ${highlight(instanceName)}`);\n\n if (action === \"create\" || action === \"reinstall\") {\n const slug = instanceName.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n console.log(` ${pc.dim(\"Bundle ID:\")} ${pc.dim(\"com.cursor.\")}${highlight(slug)}`);\n console.log(` ${pc.dim(\"Location:\")} ${pc.dim(\"~/Applications/\")}${highlight(instanceName + \".app\")}`);\n if (action === \"reinstall\") {\n const dataDir = join(process.env.HOME ?? \"\", \"Library\", \"Application Support\", instanceName.replace(/ /g, \"\"));\n console.log(` ${pc.dim(\"Data:\")} ${pc.green(\"✓\")} ${pc.dim(\"Preserved at\")} ${pc.dim(dataDir)}`);\n }\n } else {\n const targetPath = join(process.env.HOME ?? \"\", \"Applications\", `${instanceName}.app`);\n console.log(` ${pc.dim(\"Path:\")} ${pc.dim(targetPath)}`);\n }\n\n console.log();\n printDivider();\n console.log();\n\n const shouldContinue = await p.confirm({\n message: action === \"create\"\n ? \"Create this Cursor instance?\"\n : action === \"reinstall\"\n ? \"Reinstall this instance? (User data will be preserved)\"\n : \"Remove this Cursor instance? This cannot be undone.\",\n initialValue: action !== \"remove\",\n });\n\n if (p.isCancel(shouldContinue) || !shouldContinue) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // Execute script\n console.log();\n printDivider();\n console.log();\n\n const scriptPath = action === \"create\" \n ? createScript \n : action === \"reinstall\"\n ? reinstallScript\n : removeScript;\n // Pass --yes to remove/reinstall scripts since we already confirmed in the CLI\n const scriptArgs = action === \"remove\" || action === \"reinstall\" \n ? [\"--yes\", instanceName] \n : [instanceName];\n const exitCode = await runScript(scriptPath, scriptArgs);\n\n console.log();\n printDivider();\n console.log();\n\n if (exitCode === 0) {\n if (action === \"create\") {\n printSuccess(`Instance ${highlight(instanceName)} created successfully!`);\n console.log();\n console.log(pc.dim(\" Next steps:\"));\n console.log(pc.dim(\" • The new instance should launch automatically\"));\n console.log(pc.dim(\" • Sign in with a different Cursor account\"));\n console.log(pc.dim(\" • Find it in ~/Applications/\"));\n } else if (action === \"reinstall\") {\n printSuccess(`Instance ${highlight(instanceName)} reinstalled successfully!`);\n console.log();\n console.log(pc.dim(\" The instance has been:\"));\n console.log(pc.dim(\" • Refreshed with the latest Cursor version\"));\n console.log(pc.dim(\" • Relaunched with your preserved data\"));\n console.log(pc.dim(\" • Ready to use with your existing account\"));\n } else {\n printSuccess(`Instance ${highlight(instanceName)} removed successfully!`);\n }\n console.log();\n p.outro(pc.green(\"✨ Done!\"));\n } else {\n printWarning(`Operation completed with exit code ${exitCode}`);\n console.log();\n p.outro(pc.yellow(\"Check the output above for details\"));\n process.exit(exitCode);\n }\n },\n});\n"],"mappings":"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","names":["import_citty","gradient","figlet","pc","pc","text","p","import_picocolors","import_node_path","import_node_path","import_node_path","import_picocolors","pc","pc","p","import_citty","import_node_path","import_picocolors","pc","import_citty","p","import_picocolors","pc","p","import_citty","import_node_path","import_picocolors","pc","import_citty","p","import_picocolors","import_node_path","pc","import_citty","p","import_picocolors","import_node_path","import_node_url","import_node_fs","resolve","pc","actionLabel","require"]}
|