Skills Agentes

Agentic Jujutsu

Control de versiones resistente a la computación cuántica y autoaprendiz para agentes de IA, con inteligencia ReasoningBank y coordinación multi-agente sin bloqueos.

Reemplaza a: Git

Estrellas
69.4k

en todo el repo

Actividad
27

0–100, la ruta de este skill

Actualizado
hace 6 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
4.7k tok

31 tok en reposo

Paquete
1 archivo

18 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add ruvnet/ruflo --skill agentic-jujutsu --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Permite que varios agentes de IA modifiquen código simultáneamente sin bloqueos, 23 veces más rápido que Git.
  • Aprende de cada operación mediante trayectorias (trajectories) y ofrece sugerencias con nivel de confianza.
  • Resuelve conflictos automáticamente con una tasa de éxito del 87%.
  • Reconoce patrones de operaciones exitosas y aplica seguridad resistente a computación cuántica.

Úsalo cuando

  • Cuando varios agentes de IA necesitan modificar el mismo código a la vez sin bloquearse.
  • Cuando quieres que el sistema de control de versiones aprenda de operaciones pasadas y sugiera acciones.
  • Cuando necesitas resolución automática de conflictos entre cambios concurrentes.

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Inicia una trayectoria para implementar autenticación con jj
    • Sugiere el siguiente paso para añadir logout
    • Resuelve automáticamente los conflictos de esta rama

    SKILL.md

    En inglés

    Agentic Jujutsu - AI Agent Version Control

    Quantum-ready, self-learning version control designed for multiple AI agents working simultaneously without conflicts.

    When to Use This Skill

    Use agentic-jujutsu when you need:

    • ✅ Multiple AI agents modifying code simultaneously
    • ✅ Lock-free version control (23x faster than Git)
    • ✅ Self-learning AI that improves from experience
    • ✅ Quantum-resistant security for future-proof protection
    • ✅ Automatic conflict resolution (87% success rate)
    • ✅ Pattern recognition and intelligent suggestions
    • ✅ Multi-agent coordination without blocking

    Quick Start

    Installation

    npx agentic-jujutsu
    

    Basic Usage

    const { JjWrapper } = require('agentic-jujutsu');
    
    const jj = new JjWrapper();
    
    // Basic operations
    await jj.status();
    await jj.newCommit('Add feature');
    await jj.log(10);
    
    // Self-learning trajectory
    const id = jj.startTrajectory('Implement authentication');
    await jj.branchCreate('feature$auth');
    await jj.newCommit('Add auth');
    jj.addToTrajectory();
    jj.finalizeTrajectory(0.9, 'Clean implementation');
    
    // Get AI suggestions
    const suggestion = JSON.parse(jj.getSuggestion('Add logout feature'));
    console.log(`Confidence: ${suggestion.confidence}`);
    

    Core Capabilities

    1. Self-Learning with ReasoningBank

    Track operations, learn patterns, and get intelligent suggestions:

    // Start learning trajectory
    const trajectoryId = jj.startTrajectory('Deploy to production');
    
    // Perform operations (automatically tracked)
    await jj.execute(['git', 'push', 'origin', 'main']);
    await jj.branchCreate('release$v1.0');
    await jj.newCommit('Release v1.0');
    
    // Record operations to trajectory
    jj.addToTrajectory();
    
    // Finalize with success score (0.0-1.0) and critique
    jj.finalizeTrajectory(0.95, 'Deployment successful, no issues');
    
    // Later: Get AI-powered suggestions for similar tasks
    const suggestion = JSON.parse(jj.getSuggestion('Deploy to staging'));
    console.log('AI Recommendation:', suggestion.reasoning);
    console.log('Confidence:', (suggestion.confidence * 100).toFixed(1) + '%');
    console.log('Expected Success:', (suggestion.expectedSuccessRate * 100).toFixed(1) + '%');
    

    Validation (v2.3.1):

    • ✅ Tasks must be non-empty (max 10KB)
    • ✅ Success scores must be 0.0-1.0
    • ✅ Must have operations before finalizing
    • ✅ Contexts cannot be empty

    2. Pattern Discovery

    Automatically identify successful operation sequences:

    // Get discovered patterns
    const patterns = JSON.parse(jj.getPatterns());
    
    patterns.forEach(pattern => {
        console.log(`Pattern: ${pattern.name}`);
        console.log(`  Success rate: ${(pattern.successRate * 100).toFixed(1)}%`);
        console.log(`  Used ${pattern.observationCount} times`);
        console.log(`  Operations: ${pattern.operationSequence.join(' → ')}`);
        console.log(`  Confidence: ${(pattern.confidence * 100).toFixed(1)}%`);
    });
    

    3. Learning Statistics

    Track improvement over time:

    const stats = JSON.parse(jj.getLearningStats());
    
    console.log('Learning Progress:');
    console.log(`  Total trajectories: ${stats.totalTrajectories}`);
    console.log(`  Patterns discovered: ${stats.totalPatterns}`);
    console.log(`  Average success: ${(stats.avgSuccessRate * 100).toFixed(1)}%`);
    console.log(`  Improvement rate: ${(stats.improvementRate * 100).toFixed(1)}%`);
    console.log(`  Prediction accuracy: ${(stats.predictionAccuracy * 100).toFixed(1)}%`);
    

    4. Multi-Agent Coordination

    Multiple agents work concurrently without conflicts:

    // Agent 1: Developer
    const dev = new JjWrapper();
    dev.startTrajectory('Implement feature');
    await dev.newCommit('Add feature X');
    dev.addToTrajectory();
    dev.finalizeTrajectory(0.85);
    
    // Agent 2: Reviewer (learns from Agent 1)
    const reviewer = new JjWrapper();
    const suggestion = JSON.parse(reviewer.getSuggestion('Review feature X'));
    
    if (suggestion.confidence > 0.7) {
        console.log('High confidence approach:', suggestion.reasoning);
    }
    
    // Agent 3: Tester (benefits from both)
    const tester = new JjWrapper();
    const similar = JSON.parse(tester.queryTrajectories('test feature', 5));
    console.log(`Found ${similar.length} similar test approaches`);
    

    5. Quantum-Resistant Security (v2.3.0+)

    Fast integrity verification with quantum-resistant cryptography:

    const { generateQuantumFingerprint, verifyQuantumFingerprint } = require('agentic-jujutsu');
    
    // Generate SHA3-512 fingerprint (NIST FIPS 202)
    const data = Buffer.from('commit-data');
    const fingerprint = generateQuantumFingerprint(data);
    console.log('Fingerprint:', fingerprint.toString('hex'));
    
    // Verify integrity (<1ms)
    const isValid = verifyQuantumFingerprint(data, fingerprint);
    console.log('Valid:', isValid);
    
    // HQC-128 encryption for trajectories
    const crypto = require('crypto');
    const key = crypto.randomBytes(32).toString('base64');
    jj.enableEncryption(key);
    

    6. Operation Tracking with AgentDB

    Automatic tracking of all operations:

    // Operations are tracked automatically
    await jj.status();
    await jj.newCommit('Fix bug');
    await jj.rebase('main');
    
    // Get operation statistics
    const stats = JSON.parse(jj.getStats());
    console.log(`Total operations: ${stats.total_operations}`);
    console.log(`Success rate: ${(stats.success_rate * 100).toFixed(1)}%`);
    console.log(`Avg duration: ${stats.avg_duration_ms.toFixed(2)}ms`);
    
    // Query recent operations
    const ops = jj.getOperations(10);
    ops.forEach(op => {
        console.log(`${op.operationType}: ${op.command}`);
        console.log(`  Duration: ${op.durationMs}ms, Success: ${op.success}`);
    });
    
    // Get user operations (excludes snapshots)
    const userOps = jj.getUserOperations(20);
    

    Advanced Use Cases

    Use Case 1: Adaptive Workflow Optimization

    Learn and improve deployment workflows:

    async function adaptiveDeployment(jj, environment) {
        // Get AI suggestion based on past deployments
        const suggestion = JSON.parse(jj.getSuggestion(`Deploy to ${environment}`));
        
        console.log(`Deploying with ${(suggestion.confidence * 100).toFixed(0)}% confidence`);
        console.log(`Expected duration: ${suggestion.estimatedDurationMs}ms`);
        
        // Start tracking
        jj.startTrajectory(`Deploy to ${environment}`);
        
        // Execute recommended operations
        for (const op of suggestion.recommendedOperations) {
            console.log(`Executing: ${op}`);
            await executeOperation(op);
        }
        
        jj.addToTrajectory();
        
        // Record outcome
        const success = await verifyDeployment();
        jj.finalizeTrajectory(
            success ? 0.95 : 0.5,
            success ? 'Deployment successful' : 'Issues detected'
        );
    }
    

    Use Case 2: Multi-Agent Code Review

    Coordinate review across multiple agents:

    async function coordinatedReview(agents) {
        const reviews = await Promise.all(agents.map(async (agent) => {
            const jj = new JjWrapper();
            
            // Start review trajectory
            jj.startTrajectory(`Review by ${agent.name}`);
            
            // Get AI suggestion for review approach
            const suggestion = JSON.parse(jj.getSuggestion('Code review'));
            
            // Perform review
            const diff = await jj.diff('@', '@-');
            const issues = await agent.analyze(diff);
            
            jj.addToTrajectory();
            jj.finalizeTrajectory(
                issues.length === 0 ? 0.9 : 0.6,
                `Found ${issues.length} issues`
            );
            
            return { agent: agent.name, issues, suggestion };
        }));
        
        // Aggregate learning from all agents
        return reviews;
    }
    

    Use Case 3: Error Pattern Detection

    Learn from failures to prevent future issues:

    async function smartMerge(jj, branch) {
        // Query similar merge attempts
        const similar = JSON.parse(jj.queryTrajectories(`merge ${branch}`, 10));
        
        // Analyze past failures
        const failures = similar.filter(t => t.successScore < 0.5);
        
        if (failures.length > 0) {
            console.log('⚠️ Similar merges failed in the past:');
            failures.forEach(f => {
                if (f.critique) {
                    console.log(`  - ${f.critique}`);
                }
            });
        }
        
        // Get AI recommendation
        const suggestion = JSON.parse(jj.getSuggestion(`merge ${branch}`));
        
        if (suggestion.confidence < 0.7) {
            console.log('⚠️ Low confidence. Recommended steps:');
            suggestion.recommendedOperations.forEach(op => console.log(`  - ${op}`));
        }
        
        // Execute merge with tracking
        jj.startTrajectory(`Merge ${branch}`);
        try {
            await jj.execute(['merge', branch]);
            jj.addToTrajectory();
            jj.finalizeTrajectory(0.9, 'Merge successful');
        } catch (err) {
            jj.addToTrajectory();
            jj.finalizeTrajectory(0.3, `Merge failed: ${err.message}`);
            throw err;
        }
    }
    

    Use Case 4: Continuous Learning Loop

    Implement a self-improving agent:

    class SelfImprovingAgent {
        constructor() {
            this.jj = new JjWrapper();
        }
        
        async performTask(taskDescription) {
            // Get AI suggestion
            const suggestion = JSON.parse(this.jj.getSuggestion(taskDescription));
            
            console.log(`Task: ${taskDescription}`);
            console.log(`AI Confidence: ${(suggestion.confidence * 100).toFixed(1)}%`);
            console.log(`Expected Success: ${(suggestion.expectedSuccessRate * 100).toFixed(1)}%`);
            
            // Start trajectory
            this.jj.startTrajectory(taskDescription);
            
            // Execute with recommended approach
            const startTime = Date.now();
            let success = false;
            
            try {
                for (const op of suggestion.recommendedOperations) {
                    await this.execute(op);
                }
                success = true;
            } catch (err) {
                console.error('Task failed:', err.message);
            }
            
            const duration = Date.now() - startTime;
            
            // Record learning
            this.jj.addToTrajectory();
            this.jj.finalizeTrajectory(
                success ? 0.9 : 0.4,
                success 
                    ? `Completed in ${duration}ms using ${suggestion.recommendedOperations.length} operations`
                    : `Failed after ${duration}ms`
            );
            
            // Check improvement
            const stats = JSON.parse(this.jj.getLearningStats());
            console.log(`Improvement rate: ${(stats.improvementRate * 100).toFixed(1)}%`);
            
            return success;
        }
        
        async execute(operation) {
            // Execute operation logic
        }
    }
    
    // Usage
    const agent = new SelfImprovingAgent();
    
    // Agent improves over time
    for (let i = 1; i <= 10; i++) {
        console.log(`\n--- Attempt ${i} ---`);
        await agent.performTask('Deploy application');
    }
    

    API Reference

    Core Methods

    Method Description Returns
    new JjWrapper() Create wrapper instance JjWrapper
    status() Get repository status Promise
    newCommit(msg) Create new commit Promise
    log(limit) Show commit history Promise<JjCommit[]>
    diff(from, to) Show differences Promise
    branchCreate(name, rev?) Create branch Promise
    rebase(source, dest) Rebase commits Promise

    ReasoningBank Methods

    Method Description Returns
    startTrajectory(task) Begin learning trajectory string (trajectory ID)
    addToTrajectory() Add recent operations void
    finalizeTrajectory(score, critique?) Complete trajectory (score: 0.0-1.0) void
    getSuggestion(task) Get AI recommendation JSON: DecisionSuggestion
    getLearningStats() Get learning metrics JSON: LearningStats
    getPatterns() Get discovered patterns JSON: Pattern[]
    queryTrajectories(task, limit) Find similar trajectories JSON: Trajectory[]
    resetLearning() Clear learned data void

    AgentDB Methods

    Method Description Returns
    getStats() Get operation statistics JSON: Stats
    getOperations(limit) Get recent operations JjOperation[]
    getUserOperations(limit) Get user operations only JjOperation[]
    clearLog() Clear operation log void

    Quantum Security Methods (v2.3.0+)

    Method Description Returns
    generateQuantumFingerprint(data) Generate SHA3-512 fingerprint Buffer (64 bytes)
    verifyQuantumFingerprint(data, fp) Verify fingerprint boolean
    enableEncryption(key, pubKey?) Enable HQC-128 encryption void
    disableEncryption() Disable encryption void
    isEncryptionEnabled() Check encryption status boolean

    Performance Characteristics

    Metric Git Agentic Jujutsu
    Concurrent commits 15 ops$s 350 ops$s (23x)
    Context switching 500-1000ms 50-100ms (10x)
    Conflict resolution 30-40% auto 87% auto (2.5x)
    Lock waiting 50 min$day 0 min (∞)
    Quantum fingerprints N/A <1ms

    Best Practices

    1. Trajectory Management

    // ✅ Good: Meaningful task descriptions
    jj.startTrajectory('Implement user authentication with JWT');
    
    // ❌ Bad: Vague descriptions
    jj.startTrajectory('fix stuff');
    
    // ✅ Good: Honest success scores
    jj.finalizeTrajectory(0.7, 'Works but needs refactoring');
    
    // ❌ Bad: Always 1.0
    jj.finalizeTrajectory(1.0, 'Perfect!'); // Prevents learning
    

    2. Pattern Recognition

    // ✅ Good: Let patterns emerge naturally
    for (let i = 0; i < 10; i++) {
        jj.startTrajectory('Deploy feature');
        await deploy();
        jj.addToTrajectory();
        jj.finalizeTrajectory(wasSuccessful ? 0.9 : 0.5);
    }
    
    // ❌ Bad: Not recording outcomes
    await deploy(); // No learning
    

    3. Multi-Agent Coordination

    // ✅ Good: Concurrent operations
    const agents = ['agent1', 'agent2', 'agent3'];
    await Promise.all(agents.map(async (agent) => {
        const jj = new JjWrapper();
        // Each agent works independently
        await jj.newCommit(`Changes by ${agent}`);
    }));
    
    // ❌ Bad: Sequential with locks
    for (const agent of agents) {
        await agent.waitForLock(); // Not needed!
        await agent.commit();
    }
    

    4. Error Handling

    // ✅ Good: Record failures with details
    try {
        await jj.execute(['complex-operation']);
        jj.finalizeTrajectory(0.9);
    } catch (err) {
        jj.finalizeTrajectory(0.3, `Failed: ${err.message}. Root cause: ...`);
    }
    
    // ❌ Bad: Silent failures
    try {
        await jj.execute(['operation']);
    } catch (err) {
        // No learning from failure
    }
    

    Validation Rules (v2.3.1+)

    Task Description

    • ✅ Cannot be empty or whitespace-only
    • ✅ Maximum length: 10,000 bytes
    • ✅ Automatically trimmed

    Success Score

    • ✅ Must be finite (not NaN or Infinity)
    • ✅ Must be between 0.0 and 1.0 (inclusive)

    Operations

    • ✅ Must have at least one operation before finalizing

    Context

    • ✅ Cannot be empty
    • ✅ Keys cannot be empty or whitespace-only
    • ✅ Keys max 1,000 bytes, values max 10,000 bytes

    Troubleshooting

    Issue: Low Confidence Suggestions

    const suggestion = JSON.parse(jj.getSuggestion('new task'));
    
    if (suggestion.confidence < 0.5) {
        // Not enough data - check learning stats
        const stats = JSON.parse(jj.getLearningStats());
        console.log(`Need more data. Current trajectories: ${stats.totalTrajectories}`);
        
        // Recommend: Record 5-10 trajectories first
    }
    

    Issue: Validation Errors

    try {
        jj.startTrajectory(''); // Empty task
    } catch (err) {
        if (err.message.includes('Validation error')) {
            console.log('Invalid input:', err.message);
            // Use non-empty, meaningful task description
        }
    }
    
    try {
        jj.finalizeTrajectory(1.5); // Score > 1.0
    } catch (err) {
        // Use score between 0.0 and 1.0
        jj.finalizeTrajectory(Math.max(0, Math.min(1, score)));
    }
    

    Issue: No Patterns Discovered

    const patterns = JSON.parse(jj.getPatterns());
    
    if (patterns.length === 0) {
        // Need more trajectories with >70% success
        // Record at least 3-5 successful trajectories
    }
    

    Examples

    Example 1: Simple Learning Workflow

    const { JjWrapper } = require('agentic-jujutsu');
    
    async function learnFromWork() {
        const jj = new JjWrapper();
        
        // Start tracking
        jj.startTrajectory('Add user profile feature');
        
        // Do work
        await jj.branchCreate('feature$user-profile');
        await jj.newCommit('Add user profile model');
        await jj.newCommit('Add profile API endpoints');
        await jj.newCommit('Add profile UI');
        
        // Record operations
        jj.addToTrajectory();
        
        // Finalize with result
        jj.finalizeTrajectory(0.85, 'Feature complete, minor styling issues remain');
        
        // Next time, get suggestions
        const suggestion = JSON.parse(jj.getSuggestion('Add settings page'));
        console.log('AI suggests:', suggestion.reasoning);
    }
    

    Example 2: Multi-Agent Swarm

    async function agentSwarm(taskList) {
        const agents = taskList.map((task, i) => ({
            name: `agent-${i}`,
            jj: new JjWrapper(),
            task
        }));
        
        // All agents work concurrently (no conflicts!)
        const results = await Promise.all(agents.map(async (agent) => {
            agent.jj.startTrajectory(agent.task);
            
            // Get AI suggestion
            const suggestion = JSON.parse(agent.jj.getSuggestion(agent.task));
            
            // Execute task
            const success = await executeTask(agent, suggestion);
            
            agent.jj.addToTrajectory();
            agent.jj.finalizeTrajectory(success ? 0.9 : 0.5);
            
            return { agent: agent.name, success };
        }));
        
        console.log('Results:', results);
    }
    

    Related Documentation

    • NPM Package: https:/$npmjs.com$package$agentic-jujutsu
    • GitHub: https:/$github.com$ruvnet$agentic-flow$tree$main$packages$agentic-jujutsu
    • Full README: See package README.md
    • Validation Guide: docs/VALIDATION_FIXES_v2.3.1.md
    • AgentDB Guide: docs/AGENTDB_GUIDE.md

    Version History

    • v2.3.2 - Documentation updates
    • v2.3.1 - Validation fixes for ReasoningBank
    • v2.3.0 - Quantum-resistant security with @qudag$napi-core
    • v2.1.0 - Self-learning AI with ReasoningBank
    • v2.0.0 - Zero-dependency installation with embedded jj binary

    Status: ✅ Production Ready License: MIT Maintained: Active

    Reproducido de ruvnet/ruflo bajo licencia MIT. Leer esta página en markdown.

    Archivos

    1 archivo en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Se instala con npx agentic-jujutsu.

    Necesita en el PATH:npx

    Detalles

    Creador
    ruvnet
    Licencia
    MIT
    Recursos incluidos
    Solo SKILL.md
    Repositorio
    ruvnet/ruflo
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de ruvnet/ruflo

    Este repo incluye 275 skills. Si instalas uno, normalmente ya tienes los demás.

    Inspecciona y audita genomas GEPA: carga y valida un genoma, renderiza el system prompt que compila, o clasifica los modos de fallo de una transcripción de ejecución.

    Costo de contexto al activarse
    833 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 4 días
    Permisos
    herramientas desarrollo

    Completion en modo razonamiento contra deepseek-reasoner (R1) de DeepSeek. Devuelve el chain-of-thought por separado de la respuesta final. Lee DEEPSEEK_API_KEY y degrada si falta o la API no responde.

    Costo de contexto al activarse
    627 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 4 días
    Permisos
    automatizacion

    Completion de un solo turno contra el modelo deepseek-chat de DeepSeek vía /v1/chat/completions. Lee DEEPSEEK_API_KEY y degrada con status:degraded si falta o la API no responde. Para tareas sin razonamiento.

    Costo de contexto al activarse
    566 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 4 días
    Permisos
    automatizacion

    Construye o reconstruye el índice de ADRs y su grafo de dependencias ejecutando scripts/import.mjs, en vez de cientos de llamadas MCP.

    Costo de contexto al activarse
    866 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 27 días
    herramientas desarrollo

    Muestra el estado de la integración AGNTCY/SLIM/CASA: si los paquetes están instalados, qué transporte está activo y si el enforcement de CASA está habilitado.

    Costo de contexto al activarse
    443 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 26 días
    devops infraestructura

    Ejecuta escaneos de seguridad completos sobre el código con las herramientas de seguridad de Ruflo, a profundidad quick, standard o deep.

    Costo de contexto al activarse
    298 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    seguridad