rtk-ai/rtk

Unwrap uv run <tool> and uvx <tool> before registry lookup

Open

#1.205 aberto em 10 de abr. de 2026

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)Rust (2.914 forks)batch import
area:clieffort-mediumenhancementhelp wantedpriority:high

Métricas do repositório

Stars
 (48.085 stars)
Métricas de merge de PR
 (Mesclagem média 11d 1h) (45 fundiu PRs em 30d)

Description

Problem

When commands are wrapped with uv run or uvx, RTK fails to rewrite them even when it has a filter for the underlying tool.

Repros (rtk 0.35.0):

$ rtk rewrite "uv run pytest -q"
# exit 1 — no rewrite, even though rtk pytest exists

$ rtk rewrite "uvx ruff check ."
# exit 1 — no rewrite, even though rtk ruff exists

$ rtk rewrite "uv run python3 -c 'print(1)'"
# exit 1 — acceptable, python3 -c has no generic filter

$ rtk rewrite "uv sync"
# exit 3 → rtk uv sync  (uv sync is handled correctly)

Edge cases to consider:

  • uv run -- separator before tool name: uv run -- pytest
  • uv run --with <pkg> <tool>: uv run --with pytest-cov pytest
  • uvx --from <pkg> <tool>: uvx --from ruff ruff check .
  • Nested wrapping: uv run uv run pytest (probably just handle one level)

Expected behavior

uv run pytest -qrtk pytest -q (strip the uv run wrapper, look up pytest in registry) uvx ruff check .rtk ruff check . (same for uvx)

If the unwrapped tool has no RTK filter, fall through to passthrough as today.

Impact

In this project alone: 3,523 uv run invocations and 99 uvx invocations per rtk discover -a — all currently passing through unfiltered.

Guia do colaborador