Skip to content

Interpreter-detection in SKILL.md silently falls back to system python3 (uv tool run graphifyy python is invalid) #1735

Description

@mohammedMsgm

What happened

Installed via the documented path:

uv tool install graphifyy
graphify install --platform claude

Then ran /graphify . on a repo. Step 1 of the shipped SKILL.md resolves the interpreter with:

_UV_PY=$(uv tool run graphifyy python -c "import sys; print(sys.executable)" 2>/dev/null)
if [ -n "$_UV_PY" ]; then PYTHON="$_UV_PY"; fi
...
if [ -z "$PYTHON" ]; then PYTHON="python3"; fi

uv tool run graphifyy python -c "..." does not do what's intended. Since the package name (graphifyy) differs from the installed executable name (graphify), uv interprets python as an argument to a command named after the package, not as "run the python executable inside the graphifyy environment":

$ uv tool run graphifyy python -c "import sys; print(sys.executable)"
An executable named `graphifyy` is not provided by package `graphifyy`.
The following executables are available:
- graphify
- graphify-mcp

Use `uv tool run --from graphifyy <EXECUTABLE-NAME>` instead.

Because the script redirects stderr to /dev/null, this failure is invisible. _UV_PY ends up empty, PYTHON falls through to bare python3, which resolves to the system interpreter (Homebrew python3.14 on macOS) — not the graphifyy tool venv. graphify-out/.graphify_python then gets written with a path that can't import graphify:

$ /opt/homebrew/opt/python@3.14/bin/python3.14 -c "import graphify"
ModuleNotFoundError: No module named 'graphify'

Every subsequent step in the skill that shells out via $(cat graphify-out/.graphify_python) breaks immediately (detect, extract, build all fail with ModuleNotFoundError).

Environment

  • macOS (Darwin), uv 0.11.17
  • uv tool install graphifyy (fresh install, no prior tool state)
  • which graphify~/.local/bin/graphify, shebang → ~/.local/share/uv/tools/graphifyy/bin/python (the correct interpreter — this one works)

Expected

Step 1's uv-detection branch should either:

  • use uv tool run --from graphifyy python -c "..." (the syntax uv's own error message suggests), or
  • skip straight to the shebang-parsing fallback (branch 2), which already works correctly and is more robust for asymmetric package/executable names.

Suggested fix

In SKILL.md Step 1, replace:

_UV_PY=$(uv tool run graphifyy python -c "import sys; print(sys.executable)" 2>/dev/null)

with:

_UV_PY=$(uv tool run --from graphifyy python -c "import sys; print(sys.executable)" 2>/dev/null)

Happy to send a PR if that's useful — this bit me on a first-time install so it's likely hitting other users silently (the 2>/dev/null masks it completely; you just get confusing ModuleNotFoundErrors three steps later with no clue why).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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