Skip to content

Bug: Skills installed via uv not detected after installation #78

@daveonkels

Description

@daveonkels

Summary

Skills that use uv as their installer (e.g., nano-pdf) install successfully but are never marked as "eligible" because the gateway's PATH bootstrap doesn't include ~/.local/bin, which is where uv tool install places binaries.

Steps to Reproduce

  1. Have a skill with kind: "uv" installer (e.g., nano-pdf)
  2. Click "Install" in the app
  3. Installation succeeds (logs show ✓ skills.install)
  4. Skill still shows as not eligible / missing binary
  5. Running which nano-pdf in terminal shows /Users/<user>/.local/bin/nano-pdf

Root Cause

In src/infra/path-env.ts, the candidateBinDirs() function bootstraps common bin directories into PATH for the gateway process. It includes:

  • ~/.local/share/pnpm
  • ~/.bun/bin
  • ~/.yarn/bin
  • /opt/homebrew/bin

But it's missing ~/.local/bin, which is the default location where uv tool install places binaries.

The hasBinary() function in src/agents/skills.ts checks process.env.PATH to find binaries. Since ~/.local/bin isn't in the gateway's PATH, the binary is never found even though installation succeeded.

Fix

Add ~/.local/bin to the candidate directories in src/infra/path-env.ts:

// Line 77-81, add the missing path:
candidates.push(path.join(homeDir, ".local", "share", "pnpm"));
candidates.push(path.join(homeDir, ".local", "bin")); // uv tool install location
candidates.push(path.join(homeDir, ".bun", "bin"));
candidates.push(path.join(homeDir, ".yarn", "bin"));
candidates.push("/opt/homebrew/bin", "/usr/local/bin", "/usr/bin", "/bin");

Affected Skills

Any skill using kind: "uv" installer, including:

  • nano-pdf

Workaround

Manually restart the gateway after applying the fix above, or ensure ~/.local/bin is in PATH before launching the Clawdis app.

Environment

  • Clawdis version: 2.0.0-beta4
  • uv version: 0.9.21
  • macOS Sonoma

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions