@nicolasmirson/plan-mode-claude
Version:
Structured planning workflow for AI assistants with MCP integration
77 lines (63 loc) • 2.98 kB
JavaScript
const fs = require('fs');
const path = require('path');
const os = require('os');
// Get the user's home directory
const homeDir = os.homedir();
const globalCursorRulesDir = path.join(homeDir, '.cursor', 'rules');
const globalRuleFilePath = path.join(globalCursorRulesDir, 'plan-mode-claude.mdc');
// Also create in the directory where npm was invoked (so user can review)
const npmInvokedDir = process.env.INIT_CWD || process.cwd();
const localCursorRulesDir = path.join(npmInvokedDir, '.cursor', 'rules');
const localRuleFilePath = path.join(localCursorRulesDir, 'plan-mode-claude.mdc');
// Read the template file
const templatePath = path.join(__dirname, '..', 'templates', 'cursor-rules.mdc');
function createCursorRules() {
try {
// Check if template exists
if (!fs.existsSync(templatePath)) {
console.log('⚠️ Template file not found, skipping Cursor rules creation');
return;
}
const templateContent = fs.readFileSync(templatePath, 'utf8');
let createdFiles = [];
// Create global rules (home directory)
if (!fs.existsSync(globalCursorRulesDir)) {
fs.mkdirSync(globalCursorRulesDir, { recursive: true });
console.log('📁 Created global .cursor/rules directory');
}
if (!fs.existsSync(globalRuleFilePath)) {
fs.writeFileSync(globalRuleFilePath, templateContent);
createdFiles.push('~/.cursor/rules/plan-mode-claude.mdc');
console.log('✅ Created global Cursor rules file: ~/.cursor/rules/plan-mode-claude.mdc');
} else {
console.log('📝 Global Plan Mode Cursor rules already exist');
}
// Create local rules (current directory)
if (!fs.existsSync(localCursorRulesDir)) {
fs.mkdirSync(localCursorRulesDir, { recursive: true });
console.log('📁 Created local .cursor/rules directory');
}
if (!fs.existsSync(localRuleFilePath)) {
fs.writeFileSync(localRuleFilePath, templateContent);
createdFiles.push('./.cursor/rules/plan-mode-claude.mdc');
console.log('✅ Created local Cursor rules file: ./.cursor/rules/plan-mode-claude.mdc');
} else {
console.log('📝 Local Plan Mode Cursor rules already exist');
}
if (createdFiles.length > 0) {
console.log('🔄 Restart Cursor to load the new rules');
}
} catch (error) {
console.log('⚠️ Could not create Cursor rules file:', error.message);
console.log(' You can manually copy the rules from the templates/ directory');
}
}
// Always run the setup for global installations
// We can detect if it's global by checking if we're in a global node_modules
const isGlobal = __dirname.includes('/lib/node_modules/') || __dirname.includes('/global/node_modules/');
console.log('🚀 Setting up Plan Mode Claude...');
console.log(`Installation path: ${__dirname}`);
console.log(`Global installation: ${isGlobal}`);
console.log(`Local rules will be created in: ${npmInvokedDir}`);
createCursorRules();