beadboard/.agents/skills/create-beads-orchestration/scripts/postinstall.js

71 lines
1.9 KiB
JavaScript

#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const os = require('os');
const SKILL_NAME = 'create-beads-orchestration';
// Get paths
const homeDir = os.homedir();
const claudeDir = path.join(homeDir, '.claude');
const claudeSkillsDir = path.join(claudeDir, 'skills', SKILL_NAME);
const packageDir = path.dirname(__dirname);
const sourceSkillDir = path.join(packageDir, 'skills', SKILL_NAME);
console.log('\n📦 Installing beads-orchestration skill...\n');
// Check OS
if (process.platform === 'win32') {
console.log('⚠️ Windows is not supported. Use WSL or macOS/Linux.');
process.exit(0);
}
// Create ~/.claude/skills/create-beads-orchestration/
try {
fs.mkdirSync(claudeSkillsDir, { recursive: true });
} catch (err) {
console.error(`❌ Failed to create directory: ${claudeSkillsDir}`);
console.error(err.message);
process.exit(1);
}
// Copy SKILL.md
const sourceFile = path.join(sourceSkillDir, 'SKILL.md');
const destFile = path.join(claudeSkillsDir, 'SKILL.md');
try {
if (!fs.existsSync(sourceFile)) {
console.error(`❌ Source skill not found: ${sourceFile}`);
process.exit(1);
}
fs.copyFileSync(sourceFile, destFile);
console.log(`✅ Installed skill to: ${claudeSkillsDir}`);
} catch (err) {
console.error(`❌ Failed to copy skill: ${err.message}`);
process.exit(1);
}
// Save package location for bootstrap.py
const configFile = path.join(claudeDir, 'beads-orchestration-path.txt');
try {
fs.writeFileSync(configFile, packageDir);
console.log(`✅ Saved package path to: ${configFile}`);
} catch (err) {
console.error(`⚠️ Could not save package path: ${err.message}`);
}
console.log(`
🎉 Installation complete!
Package location: ${packageDir}
Usage:
In any Claude Code session, run:
/create-beads-orchestration
The skill will guide you through setting up orchestration for your project.
`);