openclaw - 💡(How to fix) Fix [Bug]: task-manager worker falls back to bundled SKILL.md instead of workspace skill [3 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#52678Fetched 2026-04-08 01:20:31
View on GitHub
Comments
3
Participants
2
Timeline
3
Reactions
0
Author
Participants
Timeline (top)
commented ×3

task-manager workers can resolve SKILL.md from the bundled OpenClaw install path instead of the current workspace path, which causes startup to fail with ENOENT.

Error Message

Observed error path:

Root Cause

task-manager workers can resolve SKILL.md from the bundled OpenClaw install path instead of the current workspace path, which causes startup to fail with ENOENT.

Fix Action

Fix / Workaround

Steps to reproduce

  1. Trigger a task-manager subtask dispatch.
  2. Observe the worker trying to read: /home/qmclaw/.nvm/versions/node/v24.14.0/lib/node_modules/openclaw/skills/task-manager/SKILL.md
  3. Confirm the workspace file exists at: /home/qmclaw/.openclaw/workspace/skills/task-manager/SKILL.md
  4. The worker fails during startup instead of loading the workspace skill.

Impact and severity

  • Affected system: task-manager worker startup / skill resolution
  • Severity: Blocks worker startup for affected subtasks
  • Frequency: Intermittent but reproducible in the observed dispatch path
  • Consequence: Subtasks fail before execution begins
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug

Summary

task-manager workers can resolve SKILL.md from the bundled OpenClaw install path instead of the current workspace path, which causes startup to fail with ENOENT.

Steps to reproduce

  1. Trigger a task-manager subtask dispatch.
  2. Observe the worker trying to read: /home/qmclaw/.nvm/versions/node/v24.14.0/lib/node_modules/openclaw/skills/task-manager/SKILL.md
  3. Confirm the workspace file exists at: /home/qmclaw/.openclaw/workspace/skills/task-manager/SKILL.md
  4. The worker fails during startup instead of loading the workspace skill.

Expected behavior

The worker / skill resolver should prefer the workspace skill: /home/qmclaw/.openclaw/workspace/skills/task-manager/SKILL.md

Actual behavior

The worker falls back to the bundled install path under ~/.nvm/.../openclaw/skills/task-manager/SKILL.md, which leads to ENOENT and prevents the subtask from starting.

Logs, screenshots, and evidence

Observed error path: /home/qmclaw/.nvm/versions/node/v24.14.0/lib/node_modules/openclaw/skills/task-manager/SKILL.md

Workspace path that should have been used: /home/qmclaw/.openclaw/workspace/skills/task-manager/SKILL.md

Observed failure shape: ENOENT

Impact and severity

  • Affected system: task-manager worker startup / skill resolution
  • Severity: Blocks worker startup for affected subtasks
  • Frequency: Intermittent but reproducible in the observed dispatch path
  • Consequence: Subtasks fail before execution begins

Additional information

This appears to be a framework-level skill resolver / fallback issue rather than a task-manager business-logic path bug. The workspace skill file is present, but the worker still resolves the global bundled path first.

extent analysis

Fix Plan

To resolve the issue, we need to modify the skill resolver to prefer the workspace path over the bundled install path.

Step-by-Step Solution:

  1. Update the resolver function: Modify the skill resolver function to check the workspace path first.
  2. Check for file existence: Before attempting to read the file, check if it exists in the workspace path.
  3. Fallback to bundled path: If the file does not exist in the workspace path, then fallback to the bundled install path.

Example Code:

const fs = require('fs');
const path = require('path');

// Define the workspace and bundled paths
const workspacePath = '/home/qmclaw/.openclaw/workspace/skills';
const bundledPath = '/home/qmclaw/.nvm/versions/node/v24.14.0/lib/node_modules/openclaw/skills';

// Define the resolver function
function resolveSkill(skillName) {
  // Construct the file paths
  const workspaceFilePath = path.join(workspacePath, skillName, 'SKILL.md');
  const bundledFilePath = path.join(bundledPath, skillName, 'SKILL.md');

  // Check if the file exists in the workspace path
  if (fs.existsSync(workspaceFilePath)) {
    return workspaceFilePath;
  } else {
    // Fallback to the bundled path
    return bundledFilePath;
  }
}

// Example usage:
const skillName = 'task-manager';
const resolvedPath = resolveSkill(skillName);
console.log(resolvedPath);

Verification

To verify that the fix worked, trigger a task-manager subtask dispatch and observe the worker attempting to read the SKILL.md file from the workspace path. The worker should now successfully load the workspace skill and start the subtask.

Extra Tips

  • Ensure that the fs and path modules are properly imported and configured in your project.
  • Consider adding error handling and logging to the resolver function to handle cases where the file does not exist in either path.
  • Review the project's configuration and dependencies to ensure that the workspace path is correctly set and accessible to the worker.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

The worker / skill resolver should prefer the workspace skill: /home/qmclaw/.openclaw/workspace/skills/task-manager/SKILL.md

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING