원클릭으로
uv
Manage Python dependencies, lock files, and project environments using the uv package manager.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Manage Python dependencies, lock files, and project environments using the uv package manager.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
ALWAYS use this skill whenever you would otherwise ask the user a question in free-form chat -- for clarifications, confirmations (especially destructive actions), missing parameters, multiple-choice decisions, or structured form input. Elicitations are routed through the Unique AI Platform UI via `unique-cli elicit create` + `elicit wait` (or `elicit ask` outside an agent harness) so the user gets a proper structured prompt and you get a structured answer back. Do NOT ask the user in plain chat when you can use this skill instead.
Read Agentic Table (magic table / due-diligence) sheets through the unique-cli agentic-table command. Use when the user or task involves inspecting an Agentic Table: a sheet's state and metadata, a specific cell's value or lock state, a cell's edit/answer history, or the sheet's generated export artifacts (reports, question exports). These are read-only (Tier 0) commands — they never modify the sheet and never require confirmation. Access to each sheet is enforced by the platform; a denial is reported as `agentic-table: permission denied`.
Call MCP (Model Context Protocol) server tools on the Unique AI Platform using the unique-cli mcp command. Use when the user asks to invoke, call, or execute an MCP tool, or when they need to send a JSON payload to an MCP server through the CLI. The JSON payload is forwarded 1:1 to the platform's MCP call-tool API.
Invoke connected Unique spaces/subagents through the unique-cli subagent command. Use when the workspace exposes connected-space tools and you need to delegate a question or task to one of those configured assistants.
Search the Unique AI Platform knowledge base using the unique-cli search command, with automatic per-turn citation tracking so cited facts render as clickable reference chips and `<sup>N</sup>` footnotes on the Unique platform. Use whenever the user asks to find, search, or query documents or content on Unique, including filtering by folder or metadata. Also covers `unique-cli read <cont_id>` for reading the full indexed text of a document when its content ID is already known. NOTE: This search uses combined vector + full-text indexing. Excel (.xlsx/.xls), CSV (.csv), and image files are NOT full-text indexed, so they will not appear in search results. To locate these file types, use the unique-cli-file-management skill instead (browse folders with `unique-cli ls` to find them by name).
Search the documents uploaded for the CURRENT task/row (e.g. an Agentic Table row's attached files) via the `unique-cli uploaded-search "<query>"` command, with the same per-turn citation tracking as `unique-cli search` so cited facts render as `<sup>N</sup>` footnotes and clickable reference chips on the Unique platform. ALWAYS use this skill when the user refers to documents they uploaded/attached to this task, or when you need facts from the task's own attached files. These uploaded files are scoped to the chat, NOT to a knowledge-base folder, so they will NEVER appear in `unique-cli search` results no matter the folder or metadata filters. Use `unique-cli search` for the knowledge base and this command for the task's uploaded documents; the two are complementary and citation numbering is shared across them within a turn.
| name | uv |
| description | Manage Python dependencies, lock files, and project environments using the uv package manager. |
| license | MIT |
| compatibility | claude cursor opencode |
| metadata | {"version":"1.0.0","languages":"python","audience":"developers","workflow":"automation","since":"2026-02-25"} |
I handle the full uv dependency-management lifecycle:
pyproject.toml and uv.lock in one steppyproject.toml, safely re-resolve without unintended upgradessource .venv/bin/activate neededpyproject.toml and uv.lock from scratch, or migrate from requirements.txtuv.lock exists, or the team standard is uv).pyproject.toml directly and need the lock file regeneratedpoetry when the project is Poetry-managed (for example, poetry.lock is the lockfile of record).ci-fix when your primary goal is diagnosing/remediating a failing CI run instead of general dependency work./uv add requests
/uv add --dev pytest
/uv remove httpx
/uv sync
/uv lock
/uv run pytest
/uv init
Add a runtime dependency (goes into [project] dependencies in pyproject.toml):
uv add <package> # e.g. uv add requests
uv add "<package>>=2.0" # with version constraint
Add a dev dependency (goes into [dependency-groups] dev — PEP 735, uv's preferred format):
uv add --dev <package> # e.g. uv add --dev pytest ruff
Dev dependencies are installed in the development environment only and are excluded from production installs. Use --dev for test runners, linters, formatters, and other tooling.
Remove a dependency:
uv remove <package> # removes from pyproject.toml and updates uv.lock
After every add or remove, uv automatically:
pyproject.tomluv.lockVersion resolution summary: uv prints the resolved version for each new package, e.g. + requests==2.32.3. If a conflict is detected (a new package's constraints clash with existing ones), uv reports the conflict with the involved packages and constraints — fix the version bounds in pyproject.toml and retry.
uv sync installs exactly what uv.lock specifies — no more, no less. It is the canonical way to bring an environment into alignment with the lock file.
uv sync
When to use it:
git pull when teammates updated uv.lockpyproject.toml followed by uv lock (run sync to apply)Already in sync: If the environment already matches the lock file, uv sync exits cleanly with no output. It is safe to run on every git pull as a habit.
Dev vs production sync: By default, uv sync includes dev dependencies. Pass --no-dev to sync only runtime dependencies (mirrors production).
uv sync --no-dev # production-only install
Use uv lock after editing pyproject.toml directly — for example, changing a version constraint, adding a new dependency entry by hand, or removing one.
Safe default — no unintended upgrades:
uv lock
By default, uv lock resolves only what has changed. Packages already in the lock file are preserved at their current versions if they still satisfy the updated constraints. This is safe to run after any pyproject.toml edit.
Upgrade all dependencies to latest compatible versions:
uv lock --upgrade
This re-resolves all packages to the latest versions permitted by the constraints in pyproject.toml. Review the lock diff carefully before committing.
Upgrade a single package:
uv lock --upgrade-package <package> # e.g. uv lock --upgrade-package requests
Upgrades only the named package (and its transitive dependencies if required). All other resolved versions remain unchanged.
When to use each variant:
| Scenario | Command |
|---|---|
Edited version constraint in pyproject.toml | uv lock |
Removed a dependency from pyproject.toml | uv lock |
| Want to pick up security patch for one package | uv lock --upgrade-package <pkg> |
| Periodic refresh of all deps to latest | uv lock --upgrade |
After regenerating the lock file, run uv sync to apply the changes to your environment.
uv run executes any command inside the project's virtual environment — without requiring manual activation.
uv run <command>
Examples:
uv run pytest # run tests
uv run pytest tests/unit/ -v # with arguments
uv run python src/main.py # run a script
uv run ruff check . # run a tool
uv run python -m mypackage # module invocation
Auto-sync behaviour: Before running the command, uv automatically syncs the environment if uv.lock has changed since the last sync. This means you never need to remember to run uv sync before executing a command — uv run handles it.
uv run pytest is equivalent to:
source .venv/bin/activate
uv sync
pytest
...but in a single command, with no shell state side-effects.
Replaces manual venv activation: Use uv run <cmd> instead of source .venv/bin/activate && <cmd>. This works consistently across platforms and CI environments.
Start a new uv-managed project in the current directory:
uv init
This creates:
pyproject.toml with a minimal [project] sectionuv.lock (empty lock, ready for uv add).python-version (if Python is pinned)Pin a specific Python version:
uv python pin 3.12 # writes .python-version with "3.12"
uv reads .python-version automatically on every operation. Pin the version early to ensure consistency across machines and CI.
Migrate from requirements.txt:
pyproject.toml if it doesn't exist: uv init[project] dependencies:
[project]
dependencies = [
"requests>=2.28",
"click>=8.0",
]
uv lockuv syncrequirements.txt once the migration is verifiedFor dev requirements (from requirements-dev.txt), add them with uv add --dev <package> instead of copying manually, so they land in [dependency-groups] dev.
uv run replaces venv activation — always use uv run <cmd> instead of activating .venv manually. It works in CI without any setup steps.
uv lock is safe by default — it will not upgrade packages that already satisfy your constraints. Run it freely after any pyproject.toml edit.
Always review the lock diff after --upgrade — uv lock --upgrade can pull in breaking changes. Check git diff uv.lock before committing and run your test suite.
Use uv add --dev for test and lint tools — keeping pytest, ruff, mypy, and similar tools in [dependency-groups] dev ensures they are never installed in production.
Run uv sync after every git pull — or just use uv run <cmd> and let auto-sync handle it. Either way, your environment will always match the lock file.
Check uv is installed before starting: uv --version. Install with curl -LsSf https://astral.sh/uv/install.sh | sh or brew install uv if missing.
Commit uv.lock to version control — the lock file is the source of truth for reproducible environments. Never add it to .gitignore.