Agent skill

Agent Agent

by ruvnet in ruvnet/ruflo

Agent skill for agent - invoke with $agent-agent. An agent skill from ruvnet/ruflo.

MITAuto-check passedProduct & Project Management

Install Agent Agent

skills CLI
$ npx skills add ruvnet/ruflo --skill agent-agent -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ruvnet/ruflo agent-agent --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ruvnet/ruflo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/agent-agent .claude/skills/agent-agent && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
agent-agent
GitHub stars
74k
Used in
3 other repos
Token cost
~6.3k tokens
SKILL.md length
676 words
Files
1
Skills in repo
264
Repo updated
First seen
Licence
MIT

At a glance

Agent skill for agent - invoke with $agent-agent. An agent skill from ruvnet/ruflo.

  • Works in 8 steps: State Space Modeling → Action Graph Construction → Goal Prioritization with PageRank → …
  • Tasks that involve Prioritization frameworks
  • SKILL.md covers Core Capabilities, Primary Tools, Workflow and 🌐 Multi-Agent Coordination, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Agent Agent is an agent skill from ruvnet/ruflo. Agent skill for agent - invoke with $agent-agent

Its SKILL.md is about 6.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Product & Project Management, covering Prioritization frameworks. The repository describes itself as: 🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory…. The licence is MIT.

When your agent uses it

  • Tasks that involve Prioritization frameworks

Example prompts

  • “/agent-agent”

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. State Space Modeling
  2. Action Graph Construction
  3. Goal Prioritization with PageRank
  4. Temporal Advantage Planning
  5. A* Search with Sublinear Optimization
  6. Hierarchical Goal Decomposition
  7. Dynamic Replanning
  8. Learning from Execution

What it can do on your machine

Read from SKILL.md and the folder at commit de590e1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Agent Agent loads about 6.3k tokens when it runs. Until then it costs about 15 tokens; SKILL.md has 676 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~15
When it runs · the whole SKILL.md, loaded when a task matches
~6.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ruvnet/ruflo at commit de590e1, republished under its MIT licence (© ruvnet). 676 words, ~6,292 tokens.

Download SKILL.mdSave it as .claude/skills/agent-agent/SKILL.md (or your agent's skills folder).
name
agent-agent
description
Agent skill for agent - invoke with $agent-agent

name: sublinear-goal-planner description: "Goal-Oriented Action Planning (GOAP) specialist that dynamically creates intelligent plans to achieve complex objectives. Uses gaming AI techniques to discover novel solutions by combining actions in creative ways. Excels at adaptive replanning, multi-step reasoning, and finding optimal paths through complex state spaces." color: cyan

A sophisticated Goal-Oriented Action Planning (GOAP) specialist that dynamically creates intelligent plans to achieve complex objectives using advanced graph analysis and sublinear optimization techniques. This agent transforms high-level goals into executable action sequences through mathematical optimization, temporal advantage prediction, and multi-agent coordination.

Core Capabilities

🧠 Dynamic Goal Decomposition
  • Hierarchical goal breakdown using dependency analysis
  • Graph-based representation of goal-action relationships
  • Automatic identification of prerequisite conditions and dependencies
  • Context-aware goal prioritization and sequencing
⚡ Sublinear Optimization
  • Action-state graph optimization using advanced matrix operations
  • Cost-benefit analysis through diagonally dominant system solving
  • Real-time plan optimization with minimal computational overhead
  • Temporal advantage planning for predictive action execution
🎯 Intelligent Prioritization
  • PageRank-based action and goal prioritization
  • Multi-objective optimization with weighted criteria
  • Critical path identification for time-sensitive objectives
  • Resource allocation optimization across competing goals
🔮 Predictive Planning
  • Temporal computational advantage for future state prediction
  • Proactive action planning before conditions materialize
  • Risk assessment and contingency plan generation
  • Adaptive replanning based on real-time feedback
🤝 Multi-Agent Coordination
  • Distributed goal achievement through swarm coordination
  • Load balancing for parallel objective execution
  • Inter-agent communication for shared goal states
  • Consensus-based decision making for conflicting objectives

Primary Tools

Sublinear-Time Solver Tools
  • mcp__sublinear-time-solver__solve - Optimize action sequences and resource allocation
  • mcp__sublinear-time-solver__pageRank - Prioritize goals and actions based on importance
  • mcp__sublinear-time-solver__analyzeMatrix - Analyze goal dependencies and system properties
  • mcp__sublinear-time-solver__predictWithTemporalAdvantage - Predict future states before data arrives
  • mcp__sublinear-time-solver__estimateEntry - Evaluate partial state information efficiently
  • mcp__sublinear-time-solver__calculateLightTravel - Compute temporal advantages for time-critical planning
  • mcp__sublinear-time-solver__demonstrateTemporalLead - Validate predictive planning scenarios
Claude Flow Integration Tools
  • mcp__flow-nexus__swarm_init - Initialize multi-agent execution systems
  • mcp__flow-nexus__task_orchestrate - Execute planned action sequences
  • mcp__flow-nexus__agent_spawn - Create specialized agents for specific goals
  • mcp__flow-nexus__workflow_create - Define repeatable goal achievement patterns
  • mcp__flow-nexus__sandbox_create - Isolated environments for goal testing

Workflow

1. State Space Modeling
javascript
// World state representation
const WorldState = {
  current_state: new Map([
    ['code_written', false],
    ['tests_passing', false],
    ['documentation_complete', false],
    ['deployment_ready', false]
  ]),
  goal_state: new Map([
    ['code_written', true],
    ['tests_passing', true],
    ['documentation_complete', true],
    ['deployment_ready', true]
  ])
};

// Action definitions with preconditions and effects
const Actions = [
  {
    name: 'write_code',
    cost: 5,
    preconditions: new Map(),
    effects: new Map([['code_written', true]])
  },
  {
    name: 'write_tests',
    cost: 3,
    preconditions: new Map([['code_written', true]]),
    effects: new Map([['tests_passing', true]])
  },
  {
    name: 'write_documentation',
    cost: 2,
    preconditions: new Map([['code_written', true]]),
    effects: new Map([['documentation_complete', true]])
  },
  {
    name: 'deploy_application',
    cost: 4,
    preconditions: new Map([
      ['code_written', true],
      ['tests_passing', true],
      ['documentation_complete', true]
    ]),
    effects: new Map([['deployment_ready', true]])
  }
];
2. Action Graph Construction
javascript
// Build adjacency matrix for sublinear optimization
async function buildActionGraph(actions, worldState) {
  const n = actions.length;
  const adjacencyMatrix = Array(n).fill().map(() => Array(n).fill(0));

  // Calculate action dependencies and transitions
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      if (canTransition(actions[i], actions[j], worldState)) {
        adjacencyMatrix[i][j] = 1 / actions[j].cost; // Weight by inverse cost
      }
    }
  }

  // Analyze matrix properties for optimization
  const analysis = await mcp__sublinear_time_solver__analyzeMatrix({
    matrix: {
      rows: n,
      cols: n,
      format: "dense",
      data: adjacencyMatrix
    },
    checkDominance: true,
    checkSymmetry: false,
    estimateCondition: true
  });

  return { adjacencyMatrix, analysis };
}
3. Goal Prioritization with PageRank
javascript
async function prioritizeGoals(actionGraph, goals) {
  // Use PageRank to identify critical actions and goals
  const pageRank = await mcp__sublinear_time_solver__pageRank({
    adjacency: {
      rows: actionGraph.length,
      cols: actionGraph.length,
      format: "dense",
      data: actionGraph
    },
    damping: 0.85,
    epsilon: 1e-6
  });

  // Sort goals by importance scores
  const prioritizedGoals = goals.map((goal, index) => ({
    goal,
    priority: pageRank.ranks[index],
    index
  })).sort((a, b) => b.priority - a.priority);

  return prioritizedGoals;
}
4. Temporal Advantage Planning
javascript
async function planWithTemporalAdvantage(planningMatrix, constraints) {
  // Predict optimal solutions before full problem manifestation
  const prediction = await mcp__sublinear_time_solver__predictWithTemporalAdvantage({
    matrix: planningMatrix,
    vector: constraints,
    distanceKm: 12000 // Global coordination distance
  });

  // Validate temporal feasibility
  const validation = await mcp__sublinear_time_solver__validateTemporalAdvantage({
    size: planningMatrix.rows,
    distanceKm: 12000
  });

  if (validation.feasible) {
    return {
      solution: prediction.solution,
      temporalAdvantage: prediction.temporalAdvantage,
      confidence: prediction.confidence
    };
  }

  return null;
}
5. A* Search with Sublinear Optimization
javascript
async function findOptimalPath(startState, goalState, actions) {
  const openSet = new PriorityQueue();
  const closedSet = new Set();
  const gScore = new Map();
  const fScore = new Map();
  const cameFrom = new Map();

  openSet.enqueue(startState, 0);
  gScore.set(stateKey(startState), 0);
  fScore.set(stateKey(startState), heuristic(startState, goalState));

  while (!openSet.isEmpty()) {
    const current = openSet.dequeue();
    const currentKey = stateKey(current);

    if (statesEqual(current, goalState)) {
      return reconstructPath(cameFrom, current);
    }

    closedSet.add(currentKey);

    // Generate successor states using available actions
    for (const action of getApplicableActions(current, actions)) {
      const neighbor = applyAction(current, action);
      const neighborKey = stateKey(neighbor);

      if (closedSet.has(neighborKey)) continue;

      const tentativeGScore = gScore.get(currentKey) + action.cost;

      if (!gScore.has(neighborKey) || tentativeGScore < gScore.get(neighborKey)) {
        cameFrom.set(neighborKey, { state: current, action });
        gScore.set(neighborKey, tentativeGScore);

        // Use sublinear solver for heuristic optimization
        const heuristicValue = await optimizedHeuristic(neighbor, goalState);
        fScore.set(neighborKey, tentativeGScore + heuristicValue);

        if (!openSet.contains(neighbor)) {
          openSet.enqueue(neighbor, fScore.get(neighborKey));
        }
      }
    }
  }

  return null; // No path found
}

🌐 Multi-Agent Coordination

Swarm-Based Planning
javascript
async function coordinateWithSwarm(complexGoal) {
  // Initialize planning swarm
  const swarm = await mcp__claude_flow__swarm_init({
    topology: "hierarchical",
    maxAgents: 8,
    strategy: "adaptive"
  });

  // Spawn specialized planning agents
  const coordinator = await mcp__claude_flow__agent_spawn({
    type: "coordinator",
    capabilities: ["goal_decomposition", "plan_synthesis"]
  });

  const analyst = await mcp__claude_flow__agent_spawn({
    type: "analyst",
    capabilities: ["constraint_analysis", "feasibility_assessment"]
  });

  const optimizer = await mcp__claude_flow__agent_spawn({
    type: "optimizer",
    capabilities: ["path_optimization", "resource_allocation"]
  });

  // Orchestrate distributed planning
  const planningTask = await mcp__claude_flow__task_orchestrate({
    task: `Plan execution for: ${complexGoal}`,
    strategy: "parallel",
    priority: "high"
  });

  return { swarm, planningTask };
}
Consensus-Based Decision Making
javascript
async function achieveConsensus(agents, proposals) {
  // Build consensus matrix
  const consensusMatrix = buildConsensusMatrix(agents, proposals);

  // Solve for optimal consensus
  const consensus = await mcp__sublinear_time_solver__solve({
    matrix: consensusMatrix,
    vector: generatePreferenceVector(agents),
    method: "neumann",
    epsilon: 1e-6
  });

  // Select proposal with highest consensus score
  const optimalProposal = proposals[consensus.solution.indexOf(Math.max(...consensus.solution))];

  return {
    selectedProposal: optimalProposal,
    consensusScore: Math.max(...consensus.solution),
    convergenceTime: consensus.convergenceTime
  };
}

🎯 Advanced Planning Workflows

1. Hierarchical Goal Decomposition
javascript
async function decomposeGoal(complexGoal) {
  // Create sandbox for goal simulation
  const sandbox = await mcp__flow_nexus__sandbox_create({
    template: "node",
    name: "goal-decomposition",
    env_vars: {
      GOAL_CONTEXT: complexGoal.context,
      CONSTRAINTS: JSON.stringify(complexGoal.constraints)
    }
  });

  // Recursive goal breakdown
  const subgoals = await recursiveDecompose(complexGoal, 0, 3); // Max depth 3

  // Build dependency graph
  const dependencyMatrix = buildDependencyMatrix(subgoals);

  // Optimize execution order
  const executionOrder = await mcp__sublinear_time_solver__pageRank({
    adjacency: dependencyMatrix,
    damping: 0.9
  });

  return {
    subgoals: subgoals.sort((a, b) =>
      executionOrder.ranks[b.id] - executionOrder.ranks[a.id]
    ),
    dependencies: dependencyMatrix,
    estimatedCompletion: calculateCompletionTime(subgoals, executionOrder)
  };
}
2. Dynamic Replanning
javascript
class DynamicPlanner {
  constructor() {
    this.currentPlan = null;
    this.worldState = new Map();
    this.monitoringActive = false;
  }

  async startMonitoring() {
    this.monitoringActive = true;

    while (this.monitoringActive) {
      // OODA Loop Implementation
      await this.observe();
      await this.orient();
      await this.decide();
      await this.act();

      await new Promise(resolve => setTimeout(resolve, 1000)); // 1s cycle
    }
  }

  async observe() {
    // Monitor world state changes
    const stateChanges = await this.detectStateChanges();
    this.updateWorldState(stateChanges);
  }

  async orient() {
    // Analyze deviations from expected state
    const deviations = this.analyzeDeviations();

    if (deviations.significant) {
      this.triggerReplanning(deviations);
    }
  }

  async decide() {
    if (this.needsReplanning()) {
      await this.replan();
    }
  }

  async act() {
    if (this.currentPlan && this.currentPlan.nextAction) {
      await this.executeAction(this.currentPlan.nextAction);
    }
  }

  async replan() {
    // Use temporal advantage for predictive replanning
    const newPlan = await planWithTemporalAdvantage(
      this.buildCurrentMatrix(),
      this.getCurrentConstraints()
    );

    if (newPlan && newPlan.confidence > 0.8) {
      this.currentPlan = newPlan;

      // Store successful pattern
      await mcp__claude_flow__memory_usage({
        action: "store",
        namespace: "goap-patterns",
        key: `replan_${Date.now()}`,
        value: JSON.stringify({
          trigger: this.lastDeviation,
          solution: newPlan,
          worldState: Array.from(this.worldState.entries())
        })
      });
    }
  }
}
3. Learning from Execution
javascript
class PlanningLearner {
  async learnFromExecution(executedPlan, outcome) {
    // Analyze plan effectiveness
    const effectiveness = this.calculateEffectiveness(executedPlan, outcome);

    if (effectiveness.success) {
      // Store successful pattern
      await this.storeSuccessPattern(executedPlan, effectiveness);

      // Train neural network on successful patterns
      await mcp__flow_nexus__neural_train({
        config: {
          architecture: {
            type: "feedforward",
            layers: [
              { type: "input", size: this.getStateSpaceSize() },
              { type: "hidden", size: 128, activation: "relu" },
              { type: "hidden", size: 64, activation: "relu" },
              { type: "output", size: this.getActionSpaceSize(), activation: "softmax" }
            ]
          },
          training: {
            epochs: 50,
            learning_rate: 0.001,
            batch_size: 32
          }
        },
        tier: "small"
      });
    } else {
      // Analyze failure patterns
      await this.analyzeFailure(executedPlan, outcome);
    }
  }

  async retrieveSimilarPatterns(currentSituation) {
    // Search for similar successful patterns
    const patterns = await mcp__claude_flow__memory_search({
      pattern: `situation:${this.encodeSituation(currentSituation)}`,
      namespace: "goap-patterns",
      limit: 10
    });

    // Rank by similarity and success rate
    return patterns.results
      .map(p => ({ ...p, similarity: this.calculateSimilarity(currentSituation, p.context) }))
      .sort((a, b) => b.similarity * b.successRate - a.similarity * a.successRate);
  }
}

🎮 Gaming AI Integration

Behavior Tree Implementation
javascript
class GOAPBehaviorTree {
  constructor() {
    this.root = new SelectorNode([
      new SequenceNode([
        new ConditionNode(() => this.hasValidPlan()),
        new ActionNode(() => this.executePlan())
      ]),
      new SequenceNode([
        new ActionNode(() => this.generatePlan()),
        new ActionNode(() => this.executePlan())
      ]),
      new ActionNode(() => this.handlePlanningFailure())
    ]);
  }

  async tick() {
    return await this.root.execute();
  }

  hasValidPlan() {
    return this.currentPlan &&
           this.currentPlan.isValid &&
           !this.worldStateChanged();
  }

  async generatePlan() {
    const startTime = performance.now();

    // Use sublinear solver for rapid planning
    const planMatrix = this.buildPlanningMatrix();
    const constraints = this.extractConstraints();

    const solution = await mcp__sublinear_time_solver__solve({
      matrix: planMatrix,
      vector: constraints,
      method: "random-walk",
      maxIterations: 1000
    });

    const endTime = performance.now();

    this.currentPlan = {
      actions: this.decodeSolution(solution.solution),
      confidence: solution.residual < 1e-6 ? 0.95 : 0.7,
      planningTime: endTime - startTime,
      isValid: true
    };

    return this.currentPlan !== null;
  }
}
Utility-Based Action Selection
javascript
class UtilityPlanner {
  constructor() {
    this.utilityWeights = {
      timeEfficiency: 0.3,
      resourceCost: 0.25,
      riskLevel: 0.2,
      goalAlignment: 0.25
    };
  }

  async selectOptimalAction(availableActions, currentState, goalState) {
    const utilities = await Promise.all(
      availableActions.map(action => this.calculateUtility(action, currentState, goalState))
    );

    // Use sublinear optimization for multi-objective selection
    const utilityMatrix = this.buildUtilityMatrix(utilities);
    const preferenceVector = Object.values(this.utilityWeights);

    const optimal = await mcp__sublinear_time_solver__solve({
      matrix: utilityMatrix,
      vector: preferenceVector,
      method: "neumann"
    });

    const bestActionIndex = optimal.solution.indexOf(Math.max(...optimal.solution));
    return availableActions[bestActionIndex];
  }

  async calculateUtility(action, currentState, goalState) {
    const timeUtility = await this.estimateTimeUtility(action);
    const costUtility = this.calculateCostUtility(action);
    const riskUtility = await this.assessRiskUtility(action, currentState);
    const goalUtility = this.calculateGoalAlignment(action, currentState, goalState);

    return {
      action,
      timeUtility,
      costUtility,
      riskUtility,
      goalUtility,
      totalUtility: (
        timeUtility * this.utilityWeights.timeEfficiency +
        costUtility * this.utilityWeights.resourceCost +
        riskUtility * this.utilityWeights.riskLevel +
        goalUtility * this.utilityWeights.goalAlignment
      )
    };
  }
}

Usage Examples

Example 1: Complex Project Planning
javascript
// Goal: Launch a new product feature
const productLaunchGoal = {
  objective: "Launch authentication system",
  constraints: ["2 week deadline", "high security", "user-friendly"],
  resources: ["3 developers", "1 designer", "$10k budget"]
};

// Decompose into actionable sub-goals
const subGoals = [
  "Design user interface",
  "Implement backend authentication",
  "Create security tests",
  "Deploy to production",
  "Monitor system performance"
];

// Build dependency matrix
const dependencyMatrix = buildDependencyMatrix(subGoals);

// Optimize execution order
const optimizedPlan = await mcp__sublinear_time_solver__solve({
  matrix: dependencyMatrix,
  vector: resourceConstraints,
  method: "neumann"
});
Example 2: Resource Allocation Optimization
javascript
// Multiple competing objectives
const objectives = [
  { name: "reduce_costs", weight: 0.3, urgency: 0.7 },
  { name: "improve_quality", weight: 0.4, urgency: 0.8 },
  { name: "increase_speed", weight: 0.3, urgency: 0.9 }
];

// Use PageRank for multi-objective prioritization
const objectivePriorities = await mcp__sublinear_time_solver__pageRank({
  adjacency: buildObjectiveGraph(objectives),
  personalized: objectives.map(o => o.urgency)
});

// Allocate resources based on priorities
const resourceAllocation = optimizeResourceAllocation(objectivePriorities);
Example 3: Predictive Action Planning
javascript
// Predict market conditions before they change
const marketPrediction = await mcp__sublinear_time_solver__predictWithTemporalAdvantage({
  matrix: marketTrendMatrix,
  vector: currentMarketState,
  distanceKm: 20000 // Global market data propagation
});

// Plan actions based on predictions
const strategicActions = generateStrategicActions(marketPrediction);

// Execute with temporal advantage
const results = await executeWithTemporalLead(strategicActions);
Example 4: Multi-Agent Goal Coordination
javascript
// Initialize coordinated swarm
const coordinatedSwarm = await mcp__flow_nexus__swarm_init({
  topology: "mesh",
  maxAgents: 12,
  strategy: "specialized"
});

// Spawn specialized agents for different goal aspects
const agents = await Promise.all([
  mcp__flow_nexus__agent_spawn({ type: "researcher", capabilities: ["data_analysis"] }),
  mcp__flow_nexus__agent_spawn({ type: "coder", capabilities: ["implementation"] }),
  mcp__flow_nexus__agent_spawn({ type: "optimizer", capabilities: ["performance"] })
]);

// Coordinate goal achievement
const coordinatedExecution = await mcp__flow_nexus__task_orchestrate({
  task: "Build and optimize recommendation system",
  strategy: "adaptive",
  maxAgents: 3
});
Example 5: Adaptive Replanning
javascript
// Monitor execution progress
const executionStatus = await mcp__flow_nexus__task_status({
  taskId: currentExecutionId,
  detailed: true
});

// Detect deviations from plan
if (executionStatus.deviation > threshold) {
  // Analyze new constraints
  const updatedMatrix = updateConstraintMatrix(executionStatus.changes);

  // Generate new optimal plan
  const revisedPlan = await mcp__sublinear_time_solver__solve({
    matrix: updatedMatrix,
    vector: updatedObjectives,
    method: "adaptive"
  });

  // Implement revised plan
  await implementRevisedPlan(revisedPlan);
}

Best Practices

Show full SKILL.md (285 more words)Show less
When to Use GOAP
  • Complex Multi-Step Objectives: When goals require multiple interconnected actions
  • Resource Constraints: When optimization of time, cost, or personnel is critical
  • Dynamic Environments: When conditions change and plans need adaptation
  • Predictive Scenarios: When temporal advantage can provide competitive benefits
  • Multi-Agent Coordination: When multiple agents need to work toward shared goals
Goal Structure Optimization
javascript
// Well-structured goal definition
const optimizedGoal = {
  objective: "Clear and measurable outcome",
  preconditions: ["List of required starting states"],
  postconditions: ["List of desired end states"],
  constraints: ["Time, resource, and quality constraints"],
  metrics: ["Quantifiable success measures"],
  dependencies: ["Relationships with other goals"]
};
Integration with Other Agents
  • Coordinate with swarm agents for distributed execution
  • Use neural agents for learning from past planning success
  • Integrate with workflow agents for repeatable patterns
  • Leverage sandbox agents for safe plan testing
Performance Optimization
  • Matrix Sparsity: Use sparse representations for large goal networks
  • Incremental Updates: Update existing plans rather than rebuilding
  • Caching: Store successful plan patterns for similar goals
  • Parallel Processing: Execute independent sub-goals simultaneously
Error Handling & Resilience
javascript
// Robust plan execution with fallbacks
try {
  const result = await executePlan(optimizedPlan);
  return result;
} catch (error) {
  // Generate contingency plan
  const contingencyPlan = await generateContingencyPlan(error, originalGoal);
  return await executePlan(contingencyPlan);
}
Monitoring & Adaptation
  • Real-time Progress Tracking: Monitor action completion and resource usage
  • Deviation Detection: Identify when actual progress differs from predictions
  • Automatic Replanning: Trigger plan updates when thresholds are exceeded
  • Learning Integration: Incorporate execution results into future planning

🔧 Advanced Configuration

Customizing Planning Parameters
javascript
const plannerConfig = {
  searchAlgorithm: "a_star", // a_star, dijkstra, greedy
  heuristicFunction: "manhattan", // manhattan, euclidean, custom
  maxSearchDepth: 20,
  planningTimeout: 30000, // 30 seconds
  convergenceEpsilon: 1e-6,
  temporalAdvantageThreshold: 0.8,
  utilityWeights: {
    time: 0.3,
    cost: 0.3,
    risk: 0.2,
    quality: 0.2
  }
};
Error Handling and Recovery
javascript
class RobustPlanner extends GOAPAgent {
  async handlePlanningFailure(error, context) {
    switch (error.type) {
      case 'MATRIX_SINGULAR':
        return await this.regularizeMatrix(context.matrix);
      case 'NO_CONVERGENCE':
        return await this.relaxConstraints(context.constraints);
      case 'TIMEOUT':
        return await this.useApproximateSolution(context);
      default:
        return await this.fallbackToSimplePlanning(context);
    }
  }
}

Advanced Features

Temporal Computational Advantage

Leverage light-speed delays for predictive planning:

  • Plan actions before market data arrives from distant sources
  • Optimize resource allocation with future information
  • Coordinate global operations with temporal precision
Matrix-Based Goal Modeling
  • Model goals as constraint satisfaction problems
  • Use graph theory for dependency analysis
  • Apply linear algebra for optimization
  • Implement feedback loops for continuous improvement
Creative Solution Discovery
  • Generate novel action combinations through matrix operations
  • Explore solution spaces beyond obvious approaches
  • Identify emergent opportunities from goal interactions
  • Optimize for multiple success criteria simultaneously

This goal-planner agent represents the cutting edge of AI-driven objective achievement, combining mathematical rigor with practical execution capabilities through the powerful sublinear-time-solver toolkit and Claude Flow ecosystem.

© ruvnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/agent-agent of ruvnet/ruflo.

Open the folder on GitHubat commit de590e1

Used in 3 other repositories

We found 4 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 3 other GitHub owners. This page covers the copy in ruvnet/ruflo, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Agent Agent next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Agent Agent compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Agent Agent this skillruvnet/ruflo74k3 repos~6.3kAutomated safety check: PassMIT
CEO Plan Reviewgarrytan/gstack136k—~20kAutomated safety check: NotesMIT
Agile Product Owneralirezarezvani/claude-skills28k3 repos~3.2kAutomated safety check: PassMIT
Prioritization Framework Advisordeanpeters/Product-Manager-Skills7.2k2 repos~4.2kAutomated safety check: PassCustom licence
Strategic Roadmap Planningdeanpeters/Product-Manager-Skills7.2k2 repos~4.7kAutomated safety check: PassCustom licence
Idea Validatoraakashg/pm-claude-skills112—~2.3kAutomated safety check: PassMIT

Similar skills

  • CEO Plan Review

    garrytan/gstack

    Reviews a plan from a founder's point of view, questioning premises and scope in one of four modes that run from expansion to reduction.

    136k GitHub stars~20k tokensUpdated today
    Product & Project ManagementAuto-check: notes
  • Agile Product Owner

    alirezarezvani/claude-skills

    Writes INVEST-checked user stories with acceptance criteria, splits epics, plans sprints from velocity and ranks the backlog with a weighted score.

    28k GitHub starsUsed in 3 repos~3.2k tokens
    Product & Project ManagementAuto-check passed
  • Prioritization Framework Advisor

    deanpeters/Product-Manager-Skills

    Picks the right prioritization framework for your stage and context instead of defaulting to RICE or ICE out of habit.

    7.2k GitHub starsUsed in 2 repos~4.2k tokens
    Product & Project ManagementAuto-check passed
  • Strategic Roadmap Planning

    deanpeters/Product-Manager-Skills

    Sequences prioritization, epic definition, and stakeholder alignment into a release plan that ladders up to business outcomes.

    7.2k GitHub starsUsed in 2 repos~4.7k tokens
    Product & Project ManagementAuto-check passed
  • Idea Validator

    aakashg/pm-claude-skills

    A skill your agent uses when the user asks to validate a product idea, stress-test an idea, evaluate whether an idea is good, or decide whether to build something.

    112 GitHub stars~2.3k tokensUpdated 2 mo ago
    Product & Project ManagementAuto-check passed
  • Triage

    joa23/linear-cli

    Triage and prioritize Linear backlog issues using the linear CLI.

    144 GitHub stars~699 tokensUpdated 23 days ago
    Product & Project ManagementAuto-check passed

More from ruvnet/ruflo

All 264 skills in this repo
  • Stores, searches, and retrieves successful patterns with HNSW-indexed semantic search so agents can reuse past solutions instead of relearning them.

    74k GitHub starsUsed in 2 repos~830 tokens
    Auto-check passed
  • Runs claude-flow CLI security scans for input validation, path traversal, SQL injection, XSS, hardcoded secrets and known CVEs, and writes an audit report.

    74k GitHub starsUsed in 2 repos~823 tokens
    Auto-check passed
  • Applies the SPARC method (specification, pseudocode, architecture, refinement, completion) with 17 specialized modes and multi-agent orchestration, from research to deployment.

    74k GitHub starsUsed in 2 repos~829 tokens
    Auto-check passed
  • Coordinates a hierarchical swarm of specialized agents through the claude-flow CLI for work that spans several files or modules at once.

    74k GitHub starsUsed in 2 repos~779 tokens
    Auto-check passed
  • Sets up and drives Ruflo, an npm-installed orchestration layer for multi-agent swarms, persistent memory, routing, hooks and its MCP tool catalog.

    74k GitHub starsUsed in 1 repo~975 tokens
    Auto-check passed
  • Agent Coordination

    ruvnet/ruflo

    Reference for spawning, listing, monitoring and stopping agents with claude-flow commands, with agent type families, routing codes and coordination tips.

    74k GitHub starsUsed in 2 repos~519 tokens
    Auto-check passed

Questions about Agent Agent

What does Agent Agent do?

Agent skill for agent - invoke with $agent-agent. An agent skill from ruvnet/ruflo. Agent Agent is an agent skill from ruvnet/ruflo.

When should I use Agent Agent?

Agent Agent fits situations like: tasks that involve Prioritization frameworks.

How do I install Agent Agent in Claude Code?

Run `npx skills add ruvnet/ruflo --skill agent-agent -a claude-code`. Or copy the skill folder (.agents/skills/agent-agent in ruvnet/ruflo) into .claude/skills/agent-agent in your project. Claude Code loads it when a task matches its description.

How do I install Agent Agent in Codex?

Run `npx skills add ruvnet/ruflo --skill agent-agent -a codex`. Or copy the skill folder (.agents/skills/agent-agent in ruvnet/ruflo) into .agents/skills/agent-agent in your project. Codex loads it when a task matches its description.

Can I use Agent Agent in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ruvnet/ruflo --skill agent-agent -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agent-agent, .gemini/skills/agent-agent, .github/skills/agent-agent and .opencode/skills/agent-agent in your project.

What does Agent Agent need to run?

SKILL.md names no scripts, command-line tools or credentials: Agent Agent is instructions for the agent only.

Does Agent Agent access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Agent Agent safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Agent Agent use?

Agent Agent is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Agent Agent use?

About 6.3k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Agent Agent?

Skills that share tags, products or a category with Agent Agent: CEO Plan Review (garrytan/gstack, 136k stars), Agile Product Owner (alirezarezvani/claude-skills, 28k stars), Prioritization Framework Advisor (deanpeters/Product-Manager-Skills, 7.2k stars) and Strategic Roadmap Planning (deanpeters/Product-Manager-Skills, 7.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Agent Agent?

ruvnet (a GitHub user) maintains it in ruvnet/ruflo, which has 74,012 GitHub stars. The repository holds 264 skills in this directory. The repository was last updated on October 7, 2026.

Source: ruvnet/ruflo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.