coleam00/Archon · error · Error

Claude skill${unreachable.length === 1 ? '' : 's'} not found

Error message

Claude skill${unreachable.length === 1 ? '' : 's'} not found in an enabled Claude-native skill directory: ${unreachable.join(', ')}. Install ${unreachable.length === 1 ? 'it' : 'them'} under ${installLocation}.${containerNote}

What it means

applyNodeConfig validates that every skill explicitly declared on an AI node resolves to an enabled Claude-native skill directory. Declared skills are supposed to be node-scoped and explicitly installed; if a declared skill is not reachable, the provider throws rather than silently dropping it, because an unknown name would just be ignored by the SDK.

Source

Thrown at packages/providers/src/claude/provider.ts:552

        );

        if (unreachable.length > 0) {
          const enabledRoots = [
            ...(skillSearch.includeProject ? ['project-local .claude/skills/'] : []),
            ...(skillSearch.includeUser ? ['the effective Claude config directory skills/'] : []),
          ];
          const installLocation =
            enabledRoots.length > 0
              ? enabledRoots.join(' or ')
              : 'an enabled Claude setting source (effective settingSources currently enables none)';
          const containerNote = skillSearch.isContainer
            ? ' Container workflows cannot use host user-global skills.'
            : '';
          getLog().error(
            { nodeId: nodeConfig.nodeId, unreachable, skillSearch },
            'claude.declared_skills_unreachable'
          );
          throw new Error(
            `Claude skill${unreachable.length === 1 ? '' : 's'} not found in an enabled Claude-native skill directory: ${unreachable.join(', ')}. Install ${unreachable.length === 1 ? 'it' : 'them'} under ${installLocation}.${containerNote}`
          );
        }

        getLog().warn(
          { nodeId: nodeConfig.nodeId, missing, skillSearch },
          'claude.declared_skills_unresolved'
        );
        warnings.push({
          code: 'claude_skills_unresolved',
          message: `Claude skill${missing.length === 1 ? '' : 's'} not found on disk: ${missing.join(', ')}. This is expected for Claude's built-in skills and for plugin-qualified names (plugin:skill), which the SDK resolves itself. If you meant an installed skill, check the name — an unknown name is ignored rather than loaded.`,
        });
      }
    }
  }

  // allowed_tools → tools. `Skill` is re-added only on the workflow path, which
  // is the only one that narrows `options.skills`; adding it for a non-workflow

View on GitHub (pinned to 0773b97458)

Solutions

  1. Install the named skill under the reported installLocation (enabled Claude-native skill directory).
  2. For container runs, install the skill into the container image — container workflows cannot use host user-global skills.
  3. Fix the skill name in the workflow YAML to match an installed skill.

Example fix

// before (workflow YAML)
skills: [code-review]
// error: skill not found in enabled directory
// after: install it first
cp -r my-skills/code-review ~/.claude/skills/
skills: [code-review]  # now resolves
Defensive patterns

Strategy: validation

Validate before calling

import { fs, path } from '...';
const dir = path.join(process.env.HOME!, '.claude', 'skills');
for (const s of node.skills ?? []) {
  if (!fs.existsSync(path.join(dir, s, 'SKILL.md'))) {
    throw new Error(`skill '${s}' not installed under ${dir}`);
  }
}

Try / catch

try {
  await provider.sendQuery(...);
} catch (e) {
  if (e.message.includes('not found in an enabled Claude-native skill directory')) {
    // install the listed skills or fix the node's skill names
  }
  throw e;
}

Prevention

When it happens

Trigger: A workflow node names a skill under `skills:` that is not installed under the enabled Claude skill directory (installLocation), or the workflow runs inside a container where only host user-global skills exist and container isolation blocks them.

Common situations: Typo in the skill name; skill installed in a project dir that is not enabled; running containerized workflows that reference host user-global skills (explicitly unsupported); skill removed after the workflow was authored.

Related errors


AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01). Data as JSON: /api/errors/d51c77ba243f6e95. Report an issue: GitHub.