v2/src/swarm/prompt-copying-README.md
A comprehensive, enterprise-grade prompt copying mechanism designed for Claude-Flow projects. This system provides efficient, reliable, and safe copying of prompt files with advanced features like parallel processing, conflict resolution, verification, and rollback capabilities.
import { copyPrompts } from './prompt-copier';
const result = await copyPrompts({
source: './.roo',
destination: './project-prompts',
});
console.log(`Copied ${result.copiedFiles} files successfully`);
import { copyPromptsEnhanced } from './prompt-copier-enhanced';
const result = await copyPromptsEnhanced({
source: './.roo',
destination: './project-prompts',
parallel: true,
maxWorkers: 8,
verify: true,
});
import { PromptManager } from './prompt-manager';
const manager = new PromptManager({
defaultProfile: 'sparc',
autoDiscovery: true,
});
await manager.initialize();
const result = await manager.copyPrompts();
npm install -g @claude-flow/prompt-copier
# Copy prompts with default settings
npx prompt-copier copy --source .roo --destination ./prompts
# Use a configuration profile
npx prompt-copier copy --profile sparc
# Enhanced copying with workers
npx prompt-copier copy --enhanced --workers 8
# Dry run to preview changes
npx prompt-copier copy --dry-run
# Discover prompt directories
npx prompt-copier discover
# Validate prompt files
npx prompt-copier validate ./prompts --recursive
# Initialize configuration
npx prompt-copier config --init
# Show current configuration
npx prompt-copier config --show
# Rollback from backup
npx prompt-copier rollback ./prompts/.prompt-backups/manifest-123456.json
{
"sourceDirectories": [".roo", ".claude/commands", "src/templates"],
"destinationDirectory": "./project-prompts",
"defaultOptions": {
"backup": true,
"verify": true,
"parallel": true,
"maxWorkers": 4,
"conflictResolution": "backup",
"includePatterns": ["*.md", "*.txt", "*.prompt"],
"excludePatterns": ["**/node_modules/**", "**/.git/**"]
},
"profiles": {
"sparc": {
"includePatterns": ["*.md", "rules.md", "sparc-*.md"],
"excludePatterns": ["**/README.md"]
},
"safe": {
"backup": true,
"verify": true,
"conflictResolution": "skip",
"parallel": false
},
"fast": {
"backup": false,
"verify": false,
"parallel": true,
"maxWorkers": 8,
"conflictResolution": "overwrite"
}
}
}
sparc ProfileOptimized for SPARC methodology prompts:
*.md, rules.md, sparc-*.mdtemplates ProfileFor template files:
*.template, *.tmpl, *.hbs, *.mustachesafe ProfileConservative copying:
fast ProfilePerformance optimized:
The main copying class with comprehensive options:
interface CopyOptions {
source: string; // Source directory
destination: string; // Destination directory
backup?: boolean; // Create backups (default: true)
overwrite?: boolean; // Overwrite existing files
verify?: boolean; // Verify copied files (default: true)
preservePermissions?: boolean; // Preserve file permissions
excludePatterns?: string[]; // Exclude patterns
includePatterns?: string[]; // Include patterns
parallel?: boolean; // Enable parallel processing
maxWorkers?: number; // Worker thread count
dryRun?: boolean; // Preview mode
conflictResolution?: 'skip' | 'overwrite' | 'backup' | 'merge';
progressCallback?: (progress: CopyProgress) => void;
}
For large-scale operations with worker threads:
import { EnhancedPromptCopier } from './prompt-copier-enhanced';
const copier = new EnhancedPromptCopier({
source: './source',
destination: './dest',
parallel: true,
maxWorkers: 8,
});
const result = await copier.copy();
Validate prompt files for common issues:
import { PromptValidator } from './prompt-utils';
const result = await PromptValidator.validatePromptFile('./prompt.md');
if (!result.valid) {
console.log('Issues found:', result.issues);
}
if (result.metadata) {
console.log('Metadata:', result.metadata);
}
import { PromptConfigManager } from './prompt-utils';
const manager = new PromptConfigManager('./my-config.json');
await manager.loadConfig();
// Get profile settings
const sparcSettings = manager.getProfile('sparc');
// Update configuration
await manager.saveConfig({
destinationDirectory: './new-destination',
});
// Copy SPARC prompts before starting development
const manager = new PromptManager({ defaultProfile: 'sparc' });
await manager.initialize();
const result = await manager.copyPrompts({
verify: true,
backup: true,
});
if (result.success) {
console.log('SPARC prompts ready for development');
}
// package.json
{
"scripts": {
"setup": "prompt-copier copy --profile sparc",
"build": "npm run setup && npm run compile",
"deploy": "prompt-copier sync --bidirectional"
}
}
#!/bin/sh
# pre-commit hook
npx prompt-copier validate ./prompts --recursive
if [ $? -ne 0 ]; then
echo "Prompt validation failed"
exit 1
fi
import { Worker } from 'worker_threads';
const copier = new EnhancedPromptCopier({
source: './source',
destination: './dest',
parallel: true,
maxWorkers: 16, // Scale based on CPU cores
});
// Monitor progress
copier.on('progress', (progress) => {
console.log(`Progress: ${progress.percentage}%`);
});
copier.on('copyComplete', (result) => {
console.log('Copy completed:', result);
});
// Copy only specific prompt types
await copyPrompts({
source: './.roo',
destination: './prompts',
includePatterns: ['**/rules-*.md', '**/sparc-*.md'],
excludePatterns: ['**/debug/**', '**/temp/**'],
});
// Custom merge function
const result = await copyPrompts({
source: './source',
destination: './dest',
conflictResolution: 'merge',
// Files are merged with separator comments
});
// Create timestamped backups
const result = await copyPrompts({
source: './source',
destination: './dest',
backup: true,
conflictResolution: 'backup',
});
// Restore from backup if needed
if (!result.success && result.backupLocation) {
const copier = new PromptCopier({ source: '', destination: '' });
await copier.restoreFromBackup(result.backupLocation);
}
Permission Denied
// Solution: Check file permissions
try {
await copyPrompts(options);
} catch (error) {
if (error.code === 'EACCES') {
console.log('Check file permissions');
}
}
Disk Space
// Solution: Check available space
import { promises as fs } from 'fs';
const stats = await fs.statfs(destinationPath);
if (stats.bavail * stats.bsize < requiredSpace) {
throw new Error('Insufficient disk space');
}
Network Timeouts
// Solution: Reduce parallelization
const options = {
...defaultOptions,
parallel: false, // or reduce maxWorkers
timeout: 30000, // increase timeout
};
npm test -- --testPathPattern=prompt-copier
npm run test:integration
npm run test:performance
DEBUG=prompt-copier* npx prompt-copier copy --source ./source --destination ./dest
import { logger } from '../logger';
logger.level = 'debug';
const result = await copyPrompts(options);
git clone <repository>
cd prompt-copying-system
npm install
npm run build
npm test
npm run example:basic
npm run example:enhanced
npm run example:manager
MIT License - see LICENSE file for details.