- **Tool Usage**: When you need to execute specific tools, lookup reference materials, or run automation pipelines
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
process-diagram.gvprocess.mdreadme.mdYou are executing a specialized skill with domain expertise. Apply evidence-based prompting techniques: plan-and-solve decomposition, program-of-thought reasoning, and self-consistency validation. Prioritize systematic execution over ad-hoc solutions. Validate outputs against success criteria before proceeding. You are executing a specialized skill with domain expertise. Apply evidence-based prompting techniques: plan-and-solve decomposition, program-of-thought reasoning, and self-consistency validation. Prioritize systematic execution over ad-hoc solutions. Validate outputs against success criteria before proceeding. name: when-optimizing-agent-learning-use-reasoningbank-intelligence version: 1.0.0 description: Implement adaptive learning with ReasoningBank for pattern recognition, strategy optimization, and continuous improvement category: utilities tags:
Implement adaptive learning with ReasoningBank for pattern recognition, strategy optimization, and continuous improvement. Use when building self-learning agents, optimizing decision-making, or implementing meta-cognitive systems.
Set up ReasoningBank with trajectory tracking
Step 1.1: Initialize ReasoningBank
const ReasoningBank = require('reasoningbank');
const learningSystem = new ReasoningBank({
storage: {
type: 'agentdb', // Or 'memory', 'disk'
path: './reasoning-bank-data',
quantization: 'int8' // 4-32x memory reduction
},
indexing: {
enabled: true,
type: 'hnsw', // 150x faster search
dimensions: 768
},
learning: {
algorithm: 'decision-transformer',
learningRate: 0.001,
batchSize: 32
}
});
await learningSystem.init();
await memory.store('reasoningbank/system', learningSystem.config);
Step 1.2: Define Trajectory Schema
const trajectorySchema = {
id: 'uuid',
timestamp: 'datetime',
context: {
task: 'string',
environment: 'object',
constraints: 'array'
},
reasoning: [
{
step: 'number',
thought: 'string',
action: 'string',
observation: 'string'
}
],
outcome: {
success: 'boolean',
metrics: 'object',
verdict: 'string'
}
};
await learningSystem.registerSchema('trajectory', trajectorySchema);
Step 1.3: Configure Verdict Criteria
const verdictCriteria = {
success: {
thresholds: {
performance: 0.8,
efficiency: 0.75,
quality: 0.9
},
weights: {
performance: 0.4,
efficiency: 0.3,
quality: 0.3
}
},
failure: {
reasons: [
'timeout',
'error',
'poor_quality',
'resource_exhaustion'
]
}
};
await learningSystem.configureVerdicts(verdictCriteria);
npx claude-flow@alpha hooks pre-task \
--description "Initialize ReasoningBank learning system" \
--complexity "high"
npx claude-flow@alpha hooks post-task \
--task-id "reasoningbank-init" \
--memory-key "reasoningbank/initialization"
Record agent decisions and outcomes for learning
Step 2.1: Track Trajectories
async function trackTrajectory(task, agent) {
const trajectory = {
id: generateUUID(),
timestamp: new Date(),
context: {
task: task.description,
environment: getEnvironment(),
constraints: task.constraints
},
reasoning: []
};
// Hook into agent execution
agent.on('thought', (thought) => {
trajectory.reasoning.push({
step: trajectory.reasoning.length + 1,
thought: thought.text,
action: null,
observation: null
});
});
agent.on('action', (action) => {
const lastStep = trajectory.reasoning[trajectory.reasoning.length - 1];
lastStep.action = action.description;
});
agent.on('observation', (obs) => {
const lastStep = trajectory.reasoning[trajectory.reasoning.length - 1];
lastStep.observation = obs.result;
});
agent.on('complete', async (result) => {
trajectory.outcome = {
success: result.success,
metrics: result.metrics,
verdict: await evaluateVerdict(result)
};
await learningSystem.storeTrajectory(trajectory);
});
return trajectory;
}
Step 2.2: Evaluate Verdicts
async function evaluateVerdict(result) {
const scores = {
performance: result.metrics.score,
efficiency: result.metrics.duration / result.metrics.expectedDuration,
quality: result.metrics.qualityScore
};
const weightedScore = Object.keys(scores).reduce((sum, key) => {
return sum + scores[key] * verdictCriteria.success.weights[key];
}, 0);
const verdict = {
score: weightedScore,
passed: weightedScore >= Object.values(verdictCriteria.success.thresholds)
.reduce((sum, t) => sum + t, 0) / 3,
breakdown: scores,
reasoning: generateVerdictReasoning(scores, weightedScore)
};
await learningSystem.recordVerdict(result.id, verdict);
return verdict;
}
Step 2.3: Pattern Extraction
async function extractPatterns() {
// Get all successful trajectories
const successfulTrajectories = await learningSystem.query({
'outcome.verdict.passed': true
});
// Extract common patterns using AgentDB vector similarity
const patterns = await learningSystem.analyzePatterns({
trajectories: successfulTrajectories,
similarity: {
method: 'cosine',
threshold: 0.85,
index: 'hnsw' // 150x faster
},
clustering: {
algorithm: 'dbscan',
minSamples: 3,
epsilon: 0.15
}
});
await memory.store('reasoningbank/patterns', patterns);
return patterns;
}
Apply learned patterns to improve future decisions
Step 3.1: Train Decision Model
async function trainDecisionModel(patterns) {
// Use Decision Transformer (from ReasoningBank's 9 RL algorithms)
const model = await learningSystem.createModel({
algorithm: 'decision-transformer',
config: {
hiddenSize: 256,
numLayers: 4,
numHeads: 8,
maxTrajectoryLength: 50,
learningRate: 0.0001
}
});
// Prepare training data from successful patterns
const trainingData = patterns.map(pattern => ({
states: pattern.reasoning.map(r => r.thought),
actions: pattern.reasoning.map(r => r.action),
rewards: calculateRewards(pattern.outcome),
returns: calculateReturnsToGo(pattern.outcome)
}));
// Train with batch operations (AgentDB optimization)
await model.train({
data: trainingData,
epochs: 100,
batchSize: 32,
validation: 0.2,
callbacks: {
onEpoch: (epoch, metrics) => {
console.log(`Epoch ${epoch}: loss=${metrics.loss}, accuracy=${metrics.accuracy}`);
}
}
});
await learningSystem.saveModel('decision-model', model);
return model;
}
Step 3.2: Generate Strategy Recommendations
async function generateRecommendations() {
const patterns = await memory.retrieve('reasoningbank/patterns');
const recommendations = patterns.map(pattern => {
const frequency = pattern.instances.length;
const avgScore = pattern.instances.reduce((sum, i) =>
sum + i.outcome.verdict.score, 0) / frequency;
return {
pattern: {
description: summarizePattern(pattern),
reasoning: pattern.commonReasoning,
actions: pattern.commonActions
},
metrics: {
frequency,
avgScore,
consistency: calculateConsistency(pattern.instances)
},
recommendation: {
applicability: identifyApplicableContexts(pattern),
priority: calculatePriority(frequency, avgScore),
implementation: generateImplementationGuide(pattern)
}
};
}).sort((a, b) => b.recommendation.priority - a.recommendation.priority);
await memory.store('reasoningbank/recommendations', recommendations);
return recommendations;
}
Step 3.3: Apply Optimizations
async function applyOptimizations(agent, recommendations) {
// Apply top 5 recommendations
const topRecommendations = recommendations.slice(0, 5);
for (const rec of topRecommendations) {
// Update agent strategy
await agent.updateStrategy({
pattern: rec.pattern,
priority: rec.recommendation.priority,
applicableContexts: rec.recommendation.applicability
});
console.log(`✅ Applied: ${rec.pattern.description}`);
}
// Update agent's decision model
const model = await learningSystem.loadModel('decision-model');
agent.setDecisionModel(model);
await memory.store('reasoningbank/applied-optimizations', topRecommendations);
}
Measure improvement from adaptive learning
Step 4.1: Benchmark Performance
async function benchmarkPerformance(agent, testCases) {
const results = {
baseline: [],
optimized: []
};
// Baseline: Agent without learning
const baselineAgent = agent.clone({ useLearning: false });
for (const testCase of testCases) {
const result = await baselineAgent.execute(testCase);
results.baseline.push({
testId: testCase.id,
metrics: result.metrics,
success: result.success
});
}
// Optimized: Agent with learning
const optimizedAgent = agent.clone({ useLearning: true });
for (const testCase of testCases) {
const result = await optimizedAgent.execute(testCase);
results.optimized.push({
testId: testCase.id,
metrics: result.metrics,
success: result.success
});
}
await memory.store('reasoningbank/benchmark-results', results);
return results;
}
Step 4.2: Calculate Improvement Metrics
function calculateImprovement(results) {
const baselineAvg = calculateAverage(results.baseline.map(r => r.metrics.score));
const optimizedAvg = calculateAverage(results.optimized.map(r => r.metrics.score));
const improvement = {
scoreImprovement: ((optimizedAvg - baselineAvg) / baselineAvg * 100).toFixed(2) + '%',
successRateImprovement: calculateSuccessRateImprovement(results),
efficiencyImprovement: calculateEfficiencyImprovement(results),
qualityImprovement: calculateQualityImprovement(results)
};
return improvement;
}
Step 4.3: Validate Patterns
async function validatePatterns(patterns, testResults) {
const validation = patterns.map(pattern => {
// Find test results that used this pattern
const patternResults = testResults.optimized.filter(r =>
r.usedPattern === pattern.id
);
const successRate = patternResults.filter(r => r.success).length / patternResults.length;
return {
pattern: pattern.description,
timesUsed: patternResults.length,
successRate,
avgScore: calculateAverage(patternResults.map(r => r.metrics.score)),
validated: successRate > 0.8
};
});
await memory.store('reasoningbank/pattern-validation', validation);
return validation;
}
Integrate learned strategies into production agents
Step 5.1: Export Learned Model
async function exportModel() {
const model = await learningSystem.loadModel('decision-model');
const patterns = await memory.retrieve('reasoningbank/patterns');
const recommendations = await memory.retrieve('reasoningbank/recommendations');
const exportPackage = {
version: '1.0.0',
timestamp: new Date(),
model: {
weights: await model.exportWeights(),
config: model.config,
performance: await memory.retrieve('reasoningbank/benchmark-results')
},
patterns: patterns.map(p => ({
id: p.id,
description: p.description,
reasoning: p.commonReasoning,
actions: p.commonActions,
metrics: p.metrics
})),
recommendations: recommendations
};
await fs.writeFile(
'/tmp/reasoningbank-export.json',
JSON.stringify(exportPackage, null, 2)
);
console.log('✅ Model exported to: /tmp/reasoningbank-export.json');
}
Step 5.2: Create Integration Guide
# ReasoningBank Integration Guide
## Installation
\`\`\`bash
npm install reasoningbank
\`\`\`
## Import Learned Model
\`\`\`javascript
const { ReasoningBank } = require('reasoningbank');
const learnedModel = require('./reasoningbank-export.json');
const agent = new Agent({
decisionModel: learnedModel.model,
patterns: learnedModel.patterns,
recommendations: learnedModel.recommendations
});
\`\`\`
## Usage
\`\`\`javascript
// Agent automatically uses learned strategies
const result = await agent.execute(task);
\`\`\`
## Performance Gains
${improvement.scoreImprovement} average improvement
${improvement.successRateImprovement} success rate increase
Step 5.3: Generate Learning Report
const learningReport = {
summary: {
totalTrajectories: await learningSystem.countTrajectories(),
patternsIdentified: patterns.length,
recommendationsGenerated: recommendations.length,
improvement: improvement
},
topPatterns: patterns.slice(0, 10),
performanceMetrics: {
baseline: baselineMetrics,
optimized: optimizedMetrics,
improvement: improvement
},
nextSteps: [
'Continue collecting trajectories for ongoing learning',
'Monitor production performance',
'Retrain model quarterly',
'A/B test new patterns'
]
};
await fs.writeFile(
'/tmp/learning-report.json',
JSON.stringify(learningReport, null, 2)
);
{
"reasoningbank/": {
"session-${id}/": {
"system": {},
"patterns": [],
"recommendations": [],
"benchmark-results": {},
"pattern-validation": [],
"applied-optimizations": []
}
}
}
For 150x faster operations:
const AgentDB = require('agentdb');
const db = new AgentDB({
quantization: 'int8',
indexing: 'hnsw',
caching: true
});
await learningSystem.useVectorDB(db);
Outputs:
Complete when improvement > 15% and ready for production deployment.