Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Agent skill for topology-optimizer - invoke with $agent-topology-optimizer
.claude/skills/agent-topology-optimizer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-13 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-09 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✗→✓ | ▲ Improved | — | — |
javascript// Advanced topology optimization system class TopologyOptimizer { constructor() { this.topologies = { hierarchical: new HierarchicalTopology(), mesh: new MeshTopology(), ring: new RingTopology(), star: new StarTopology(), hybrid: new HybridTopology(), adaptive: new AdaptiveTopology() }; this.optimizer = new NetworkOptimizer(); this.analyzer = new TopologyAnalyzer(); this.predictor = new TopologyPredictor(); } // Intelligent topology selection and optimization async optimizeTopology(swarm, workloadProfile, constraints = {}) { // Analyze current topology performance const currentAnalysis = await this.analyzer.analyze(swarm.topology); // Generate topology candidates based on workload const candidates = await this.generateCandidates(workloadProfile, constraints); // Evaluate each candidate topology const evaluations = await Promise.all( candidates.map(candidate => this.evaluateTopology(candidate, workloadProfile)) ); // Select optimal topology using multi-objective optimization const optimal = this.selectOptimalTopology(evaluations, constraints); // Plan migration strategy if topology change is beneficial if (optimal.improvement > constraints.minImprovement || 0.1) { const migrationPlan = await this.planMigration(swarm.topology, optimal.topology); return { recommended: optimal.topology, improvement: optimal.improvement, migrationPlan, estimatedDowntime: migrationPlan.estimatedDowntime, benefits: optimal.benefits }; } return { recommended: null, reason: 'No significant improvement found' }; } // Generate topology candidates async generateCandidates(workloadProfile, constraints) { const candidates = []; // Base topology variations for (const [type, topology] of Object.entries(this.topologies)) { if (this.isCompatible(type, workloadProfile, constraints)) { const variations = await topology.generateVariations(workloadProfile); candidates.push(...variations); } } // Hybrid topology generation const hybrids = await this.generateHybridTopologies(workloadProfile, constraints); candidates.push(...hybrids); // AI-generated novel topologies const aiGenerated = await this.generateAITopologies(workloadProfile); candidates.push(...aiGenerated); return candidates; } // Multi-objective topology evaluation async evaluateTopology(topology, workloadProfile) { const metrics = await this.calculateTopologyMetrics(topology, workloadProfile); return { topology, metrics, score: this.calculateOverallScore(metrics), strengths: this.identifyStrengths(metrics), weaknesses: this.identifyWeaknesses(metrics), suitability: this.calculateSuitability(metrics, workloadProfile) }; } }
javascript// Advanced network latency optimization class NetworkLatencyOptimizer { constructor() { this.latencyAnalyzer = new LatencyAnalyzer(); this.routingOptimizer = new RoutingOptimizer(); this.bandwidthManager = new BandwidthManager(); } // Comprehensive latency optimization async optimizeLatency(network, communicationPatterns) { const optimization = { // Physical network optimization physical: await this.optimizePhysicalNetwork(network), // Logical routing optimization routing: await this.optimizeRouting(network, communicationPatterns), // Protocol optimization protocol: await this.optimizeProtocols(network), // Caching strategies caching: await this.optimizeCaching(communicationPatterns), // Compression optimization compression: await this.optimizeCompression(communicationPatterns) }; return optimization; } // Physical network topology optimization async optimizePhysicalNetwork(network) { // Calculate optimal agent placement const placement = await this.calculateOptimalPlacement(network.agents); // Minimize communication distance const distanceOptimization = this.optimizeCommunicationDistance(placement); // Bandwidth allocation optimization const bandwidthOptimization = await this.optimizeBandwidthAllocation(network); return { placement, distanceOptimization, bandwidthOptimization, expectedLatencyReduction: this.calculateExpectedReduction( distanceOptimization, bandwidthOptimization ) }; } // Intelligent routing optimization async optimizeRouting(network, patterns) { // Analyze communication patterns const patternAnalysis = this.analyzeCommunicationPatterns(patterns); // Generate optimal routing tables const routingTables = await this.generateOptimalRouting(network, patternAnalysis); // Implement adaptive routing const adaptiveRouting = new AdaptiveRoutingSystem(routingTables); // Load balancing across routes const loadBalancing = new RouteLoadBalancer(routingTables); return { routingTables, adaptiveRouting, loadBalancing, patternAnalysis }; } }
javascript// Sophisticated agent placement optimization class AgentPlacementOptimizer { constructor() { this.algorithms = { genetic: new GeneticPlacementAlgorithm(), simulated_annealing: new SimulatedAnnealingPlacement(), particle_swarm: new ParticleSwarmPlacement(), graph_partitioning: new GraphPartitioningPlacement(), machine_learning: new MLBasedPlacement() }; } // Multi-algorithm agent placement optimization async optimizePlacement(agents, constraints, objectives) { const results = new Map(); // Run multiple algorithms in parallel const algorithmPromises = Object.entries(this.algorithms).map( async ([name, algorithm]) => { const result = await algorithm.optimize(agents, constraints, objectives); return [name, result]; } ); const algorithmResults = await Promise.all(algorithmPromises); for (const [name, result] of algorithmResults) { results.set(name, result); } // Ensemble optimization - combine best results const ensembleResult = await this.ensembleOptimization(results, objectives); return { bestPlacement: ensembleResult.placement, algorithm: ensembleResult.algorithm, score: ensembleResult.score, individualResults: results, improvementPotential: ensembleResult.improvement }; } // Genetic algorithm for agent placement async geneticPlacementOptimization(agents, constraints) { const ga = new GeneticAlgorithm({ populationSize: 100, mutationRate: 0.1, crossoverRate: 0.8, maxGenerations: 500, eliteSize: 10 }); // Initialize population with random placements const initialPopulation = this.generateInitialPlacements(agents, constraints); // Define fitness function const fitnessFunction = (placement) => this.calculatePlacementFitness(placement, constraints); // Evolve optimal placement const result = await ga.evolve(initialPopulation, fitnessFunction); return { placement: result.bestIndividual, fitness: result.bestFitness, generations: result.generations, convergence: result.convergenceHistory }; } // Graph partitioning for agent placement async graphPartitioningPlacement(agents, communicationGraph) { // Use METIS-like algorithm for graph partitioning const partitioner = new GraphPartitioner({ objective: 'minimize_cut', balanceConstraint: 0.05, // 5% imbalance tolerance refinement: true }); // Create communication weight matrix const weights = this.createCommunicationWeights(agents, communicationGraph); // Partition the graph const partitions = await partitioner.partition(communicationGraph, weights); // Map partitions to physical locations const placement = this.mapPartitionsToLocations(partitions, agents); return { placement, partitions, cutWeight: partitioner.getCutWeight(), balance: partitioner.getBalance() }; } }
javascript// Advanced communication pattern optimization class CommunicationOptimizer { constructor() { this.patternAnalyzer = new PatternAnalyzer(); this.protocolOptimizer = new ProtocolOptimizer(); this.messageOptimizer = new MessageOptimizer(); this.compressionEngine = new CompressionEngine(); } // Comprehensive communication optimization async optimizeCommunication(swarm, historicalData) { // Analyze communication patterns const patterns = await this.patternAnalyzer.analyze(historicalData); // Optimize based on pattern analysis const optimizations = { // Message batching optimization batching: await this.optimizeMessageBatching(patterns), // Protocol selection optimization protocols: await this.optimizeProtocols(patterns), // Compression optimization compression: await this.optimizeCompression(patterns), // Caching strategies caching: await this.optimizeCaching(patterns), // Routing optimization routing: await this.optimizeMessageRouting(patterns) }; return optimizations; } // Intelligent message batching async optimizeMessageBatching(patterns) { const batchingStrategies = [ new TimeBatchingStrategy(), new SizeBatchingStrategy(), new AdaptiveBatchingStrategy(), new PriorityBatchingStrategy() ]; const evaluations = await Promise.all( batchingStrategies.map(strategy => this.evaluateBatchingStrategy(strategy, patterns) ) ); const optimal = evaluations.reduce((best, current) => current.score > best.score ? current : best ); return { strategy: optimal.strategy, configuration: optimal.configuration, expectedImprovement: optimal.improvement, metrics: optimal.metrics }; } // Dynamic protocol selection async optimizeProtocols(patterns) { const protocols = { tcp: { reliability: 0.99, latency: 'medium', overhead: 'high' }, udp: { reliability: 0.95, latency: 'low', overhead: 'low' }, websocket: { reliability: 0.98, latency: 'medium', overhead: 'medium' }, grpc: { reliability: 0.99, latency: 'low', overhead: 'medium' }, mqtt: { reliability: 0.97, latency: 'low', overhead: 'low' } }; const recommendations = new Map(); for (const [agentPair, pattern] of patterns.pairwisePatterns) { const optimal = this.selectOptimalProtocol(protocols, pattern); recommendations.set(agentPair, optimal); } return recommendations; } }
javascript// Comprehensive MCP topology integration const topologyIntegration = { // Real-time topology optimization async optimizeSwarmTopology(swarmId, optimizationConfig = {}) { // Get current swarm status const swarmStatus = await mcp.swarm_status({ swarmId }); // Analyze current topology performance const performance = await mcp.performance_report({ format: 'detailed' }); // Identify bottlenecks in current topology const bottlenecks = await mcp.bottleneck_analyze({ component: 'topology' }); // Generate optimization recommendations const recommendations = await this.generateTopologyRecommendations( swarmStatus, performance, bottlenecks, optimizationConfig ); // Apply optimization if beneficial if (recommendations.beneficial) { const result = await mcp.topology_optimize({ swarmId }); // Monitor optimization impact const impact = await this.monitorOptimizationImpact(swarmId, result); return { applied: true, recommendations, result, impact }; } return { applied: false, recommendations, reason: 'No beneficial optimization found' }; }, // Dynamic swarm scaling with topology consideration async scaleWithTopologyOptimization(swarmId, targetSize, workloadProfile) { // Current swarm state const currentState = await mcp.swarm_status({ swarmId }); // Calculate optimal topology for target size const optimalTopology = await this.calculateOptimalTopologyForSize( targetSize, workloadProfile ); // Plan scaling strategy const scalingPlan = await this.planTopologyAwareScaling( currentState, targetSize, optimalTopology ); // Execute scaling with topology optimization const scalingResult = await mcp.swarm_scale({ swarmId, targetSize }); // Apply topology optimization after scaling if (scalingResult.success) { await mcp.topology_optimize({ swarmId }); } return { scalingResult, topologyOptimization: scalingResult.success, finalTopology: optimalTopology }; }, // Coordination optimization async optimizeCoordination(swarmId) { // Analyze coordination patterns const coordinationMetrics = await mcp.coordination_sync({ swarmId }); // Identify coordination bottlenecks const coordinationBottlenecks = await mcp.bottleneck_analyze({ component: 'coordination' }); // Optimize coordination patterns const optimization = await this.optimizeCoordinationPatterns( coordinationMetrics, coordinationBottlenecks ); return optimization; } };
javascript// AI-powered topology optimization class NeuralTopologyOptimizer { constructor() { this.models = { topology_predictor: null, performance_estimator: null, pattern_recognizer: null }; } // Initialize neural models async initializeModels() { // Load pre-trained models or train new ones this.models.topology_predictor = await mcp.model_load({ modelPath: '$models$topology_optimizer.model' }); this.models.performance_estimator = await mcp.model_load({ modelPath: '$models$performance_estimator.model' }); this.models.pattern_recognizer = await mcp.model_load({ modelPath: '$models$pattern_recognizer.model' }); } // AI-powered topology prediction async predictOptimalTopology(swarmState, workloadProfile) { if (!this.models.topology_predictor) { await this.initializeModels(); } // Prepare input features const features = this.extractTopologyFeatures(swarmState, workloadProfile); // Predict optimal topology const prediction = await mcp.neural_predict({ modelId: this.models.topology_predictor.id, input: JSON.stringify(features) }); return { predictedTopology: prediction.topology, confidence: prediction.confidence, expectedImprovement: prediction.improvement, reasoning: prediction.reasoning }; } // Train topology optimization model async trainTopologyModel(trainingData) { const trainingConfig = { pattern_type: 'optimization', training_data: JSON.stringify(trainingData), epochs: 100 }; const trainingResult = await mcp.neural_train(trainingConfig); // Save trained model if (trainingResult.success) { await mcp.model_save({ modelId: trainingResult.modelId, path: '$models$topology_optimizer.model' }); } return trainingResult; } }
javascript// Genetic algorithm implementation for topology optimization class GeneticTopologyOptimizer { constructor(config = {}) { this.populationSize = config.populationSize || 50; this.mutationRate = config.mutationRate || 0.1; this.crossoverRate = config.crossoverRate || 0.8; this.maxGenerations = config.maxGenerations || 100; this.eliteSize = config.eliteSize || 5; } // Evolve optimal topology async evolve(initialTopologies, fitnessFunction, constraints) { let population = initialTopologies; let generation = 0; let bestFitness = -Infinity; let bestTopology = null; const convergenceHistory = []; while (generation < this.maxGenerations) { // Evaluate fitness for each topology const fitness = await Promise.all( population.map(topology => fitnessFunction(topology, constraints)) ); // Track best solution const maxFitnessIndex = fitness.indexOf(Math.max(...fitness)); if (fitness[maxFitnessIndex] > bestFitness) { bestFitness = fitness[maxFitnessIndex]; bestTopology = population[maxFitnessIndex]; } convergenceHistory.push({ generation, bestFitness, averageFitness: fitness.reduce((a, b) => a + b) / fitness.length }); // Selection const selected = this.selection(population, fitness); // Crossover const offspring = await this.crossover(selected); // Mutation const mutated = await this.mutation(offspring, constraints); // Next generation population = this.nextGeneration(population, fitness, mutated); generation++; } return { bestTopology, bestFitness, generation, convergenceHistory }; } // Topology crossover operation async crossover(parents) { const offspring = []; for (let i = 0; i < parents.length - 1; i += 2) { if (Math.random() < this.crossoverRate) { const [child1, child2] = await this.crossoverTopologies( parents[i], parents[i + 1] ); offspring.push(child1, child2); } else { offspring.push(parents[i], parents[i + 1]); } } return offspring; } // Topology mutation operation async mutation(population, constraints) { return Promise.all( population.map(async topology => { if (Math.random() < this.mutationRate) { return await this.mutateTopology(topology, constraints); } return topology; }) ); } }
javascript// Simulated annealing implementation class SimulatedAnnealingOptimizer { constructor(config = {}) { this.initialTemperature = config.initialTemperature || 1000; this.coolingRate = config.coolingRate || 0.95; this.minTemperature = config.minTemperature || 1; this.maxIterations = config.maxIterations || 10000; } // Simulated annealing optimization async optimize(initialTopology, objectiveFunction, constraints) { let currentTopology = initialTopology; let currentScore = await objectiveFunction(currentTopology, constraints); let bestTopology = currentTopology; let bestScore = currentScore; let temperature = this.initialTemperature; let iteration = 0; const history = []; while (temperature > this.minTemperature && iteration < this.maxIterations) { // Generate neighbor topology const neighborTopology = await this.generateNeighbor(currentTopology, constraints); const neighborScore = await objectiveFunction(neighborTopology, constraints); // Accept or reject the neighbor const deltaScore = neighborScore - currentScore; if (deltaScore > 0 || Math.random() < Math.exp(deltaScore / temperature)) { currentTopology = neighborTopology; currentScore = neighborScore; // Update best solution if (neighborScore > bestScore) { bestTopology = neighborTopology; bestScore = neighborScore; } } // Record history history.push({ iteration, temperature, currentScore, bestScore }); // Cool down temperature *= this.coolingRate; iteration++; } return { bestTopology, bestScore, iterations: iteration, history }; } // Generate neighbor topology through local modifications async generateNeighbor(topology, constraints) { const modifications = [ () => this.addConnection(topology, constraints), () => this.removeConnection(topology, constraints), () => this.modifyConnection(topology, constraints), () => this.relocateAgent(topology, constraints) ]; const modification = modifications[Math.floor(Math.random() * modifications.length)]; return await modification(); } }
bash# Analyze current topology npx claude-flow topology-analyze --swarm-id <id> --metrics performance # Optimize topology automatically npx claude-flow topology-optimize --swarm-id <id> --strategy adaptive # Compare topology configurations npx claude-flow topology-compare --topologies ["hierarchical", "mesh", "hybrid"] # Generate topology recommendations npx claude-flow topology-recommend --workload-profile <file> --constraints <file> # Monitor topology performance npx claude-flow topology-monitor --swarm-id <id> --interval 60
bash# Optimize agent placement npx claude-flow placement-optimize --algorithm genetic --agents <agent-list> # Analyze placement efficiency npx claude-flow placement-analyze --current-placement <config> # Generate placement recommendations npx claude-flow placement-recommend --communication-patterns <file>
javascript// Comprehensive topology metrics const topologyMetrics = { // Communication efficiency communicationEfficiency: { latency: this.calculateAverageLatency(), throughput: this.calculateThroughput(), bandwidth_utilization: this.calculateBandwidthUtilization(), message_overhead: this.calculateMessageOverhead() }, // Network topology metrics networkMetrics: { diameter: this.calculateNetworkDiameter(), clustering_coefficient: this.calculateClusteringCoefficient(), betweenness_centrality: this.calculateBetweennessCentrality(), degree_distribution: this.calculateDegreeDistribution() }, // Fault tolerance faultTolerance: { connectivity: this.calculateConnectivity(), redundancy: this.calculateRedundancy(), single_point_failures: this.identifySinglePointFailures(), recovery_time: this.calculateRecoveryTime() }, // Scalability metrics scalability: { growth_capacity: this.calculateGrowthCapacity(), scaling_efficiency: this.calculateScalingEfficiency(), bottleneck_points: this.identifyBottleneckPoints(), optimal_size: this.calculateOptimalSize() } };
This Topology Optimizer agent provides sophisticated swarm topology optimization with AI-powered decision making, advanced algorithms, and comprehensive performance monitoring for optimal swarm coordination.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +57 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.