ruvnet/ruflo · error

Missing dependency: ${name}

Error message

Missing dependency: ${name}

What it means

During dependency resolution a plugin's declared dependency name has no entry in the registry map. The plugin being visited requires a peer that was never registered (or was registered under a different name), so the load order cannot be computed.

Source

Thrown at v3/@claude-flow/plugins/src/registry/plugin-registry.ts:342

  // =========================================================================

  /**
   * Resolve dependencies and return load order.
   */
  private resolveDependencies(): string[] {
    const visited = new Set<string>();
    const visiting = new Set<string>();
    const order: string[] = [];

    const visit = (name: string): void => {
      if (visited.has(name)) return;
      if (visiting.has(name)) {
        throw new Error(`Circular dependency detected: ${name}`);
      }

      const entry = this.plugins.get(name);
      if (!entry) {
        throw new Error(`Missing dependency: ${name}`);
      }

      visiting.add(name);

      const deps = entry.plugin.metadata.dependencies ?? [];
      for (const dep of deps) {
        visit(dep);
      }

      visiting.delete(name);
      visited.add(name);
      order.push(name);
    };

    for (const name of this.plugins.keys()) {
      visit(name);
    }

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Register the missing dependency plugin before the dependent one.
  2. Fix the dependency name in the plugin metadata.
  3. Make the dependency optional if the plugin can function without it.
Defensive patterns

Strategy: validation

When it happens

Trigger: A plugin declares a dependency on a plugin that is not registered.

Common situations: Dependency plugin not installed, misspelled dependency name, or registration order excludes it.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/930b753d9d9d3871. Report an issue: GitHub.