Skip to content
Back to skills

Uv Advanced Dependencies

ASecurity

Advanced uv dependencies: Git deps, path deps, editable installs, groups, extras, custom indexes. Use when the user mentions git+https deps, editable installs, or private indexes.

  • 58 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
developmentpythonbashsqlfastapiflaskgitapibackend

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 3, 2026

npx -y skills add laurigates/claude-plugins --skill uv-advanced-dependencies --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Uv Advanced Dependencies?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Uv Advanced Dependencies
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/laurigates-uv-advanced-dependencies/badge)](https://www.skillsdirectory.com/skills/laurigates-uv-advanced-dependencies)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
created: 2025-12-16
modified: 2026-05-09
reviewed: 2026-04-25
name: uv-advanced-dependencies
description: "Advanced uv dependencies: Git deps, path deps, editable installs, groups, extras, custom indexes. Use when the user mentions git+https deps, editable installs, or private indexes."
user-invocable: false
allowed-tools: Bash, Read, Grep, Glob
---

# UV Advanced Dependencies

Quick reference for advanced dependency scenarios in UV projects.

## When to Use This Skill

| Use this skill when... | Use a focused sibling instead when... |
|---|---|
| Pinning a dependency to a git URL, branch, or tag, or installing in editable mode | Adding a normal PyPI dependency — use uv-project-management |
| Configuring `[tool.uv.sources]`, dependency groups, extras, or custom indexes | Sharing source declarations across workspace members — use uv-workspaces |
| Setting up private package indexes or build-time constraints | Running an ephemeral script with `--with` deps — use uv-run |

## When This Skill Applies

- Git repository dependencies
- Local path dependencies
- Editable installations
- Dependency constraints
- Custom package indexes
- Dependency groups and extras
- Build dependencies

## Quick Reference

### Git Dependencies

```bash
# Add from Git repository
uv add git+https://github.com/psf/requests
uv add git+https://github.com/pallets/flask@main
uv add git+ssh://git@github.com/user/repo.git@v1.0.0

# Specific branch, tag, or commit
uv add git+https://github.com/user/repo@feature-branch
uv add git+https://github.com/user/repo@v2.0.0
uv add git+https://github.com/user/repo@abc123
```

### Path Dependencies

```bash
# Add from local path
uv add --editable ./local-package
uv add ../another-project
uv add /absolute/path/to/package

# Non-editable path
uv add --no-editable ./local-package
```

### Dependency Groups

```bash
# Add to named group
uv add --group docs sphinx mkdocs
uv add --group test pytest pytest-cov

# Install specific groups
uv sync --group docs
uv sync --group test --group docs

# Install all groups
uv sync --all-groups
```

### Extras (Optional Dependencies)

```bash
# Install package with extras
uv add 'fastapi[all]'
uv add 'sqlalchemy[postgresql,mypy]'

# Define extras in pyproject.toml
[project.optional-dependencies]
dev = ["pytest", "ruff"]
docs = ["mkdocs", "mkdocs-material"]
```

### Constraint Files

```bash
# Apply version constraints
uv pip compile requirements.in --constraint constraints.txt

# constraints.txt example:
# numpy<2.0
# pandas==2.0.3
```

### Custom Indexes

```toml
[tool.uv]
index-url = "https://pypi.org/simple"
extra-index-url = [
    "https://custom.pypi.org/simple",
]
```

## Git Dependencies in pyproject.toml

```toml
[project]
dependencies = [
    "my-package",
]

[tool.uv.sources]
my-package = { git = "https://github.com/user/my-package" }

# With branch
my-package = { git = "https://github.com/user/my-package", branch = "main" }

# With tag
my-package = { git = "https://github.com/user/my-package", tag = "v1.0.0" }

# With commit
my-package = { git = "https://github.com/user/my-package", rev = "abc123" }
```

## Path Dependencies in pyproject.toml

```toml
[project]
dependencies = [
    "my-local-package",
]

[tool.uv.sources]
my-local-package = { path = "../my-local-package" }

# Editable (default for paths)
my-local-package = { path = "../my-local-package", editable = true }

# Non-editable
my-local-package = { path = "../my-local-package", editable = false }
```

## Dependency Groups

```toml
[dependency-groups]
dev = [
    "pytest>=7.0",
    "pytest-cov>=4.0",
    "ruff>=0.1.0",
]
docs = [
    "mkdocs-material>=9.0",
    "mkdocstrings[python]>=0.24",
]
test = [
    "pytest-asyncio>=0.21",
    "pytest-mock>=3.12",
]
```

## URL Dependencies

```bash
# Add from direct URL
uv add https://files.pythonhosted.org/packages/.../requests-2.31.0.tar.gz

# In pyproject.toml
[tool.uv.sources]
my-package = { url = "https://example.com/my-package-1.0.tar.gz" }
```

## Private Package Indexes

```toml
[tool.uv]
# Primary index
index-url = "https://pypi.org/simple"

# Additional indexes
extra-index-url = [
    "https://${PRIVATE_TOKEN}@private.pypi.org/simple",
]

# Find links
find-links = [
    "https://download.pytorch.org/whl/cu118",
]
```

```bash
# Set token via environment
export PRIVATE_TOKEN="secret"
uv sync
```

## Build Dependencies

```toml
[build-system]
requires = [
    "setuptools>=68",
    "wheel",
    "Cython>=3.0",
]
build-backend = "setuptools.build_meta"
```

## Common Patterns

### Development from Local Checkout

```bash
# Clone dependency
git clone https://github.com/user/lib.git ../lib

# Add as editable
cd my-project
uv add --editable ../lib
```

### Monorepo Path Dependencies

```toml
[tool.uv.sources]
my-core = { path = "packages/core" }
my-utils = { path = "packages/utils" }
```

### Mixed Sources

```toml
[project]
dependencies = [
    "fastapi",          # PyPI
    "my-lib",           # Git
    "my-local",         # Path
]

[tool.uv.sources]
my-lib = { git = "https://github.com/user/my-lib" }
my-local = { path = "../my-local" }
```

## Resolution Strategies

```toml
[tool.uv]
# Highest compatible (default)
resolution = "highest"

# Lowest compatible
resolution = "lowest"

# Lowest direct, highest transitive
resolution = "lowest-direct"
```

## See Also

- `uv-project-management` - Basic dependency management
- `uv-workspaces` - Workspace member dependencies
- `python-packaging` - Build system configuration

## References

- Official docs: https://docs.astral.sh/uv/concepts/dependencies/
- Detailed guide: See REFERENCE.md in this skill directory

Files in this skill

  • REFERENCE.md7.8 KB
  • SKILL.md5.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…