poetry-rye-dependency-management

Poetry / Rye Dependency Management Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "poetry-rye-dependency-management" with this command: npx skills add oimiragieo/agent-studio/oimiragieo-agent-studio-poetry-rye-dependency-management

Poetry / Rye Dependency Management Skill

Overview

Poetry and Rye are Python dependency managers that enforce lockfile-driven, deterministic builds. Both use pyproject.toml as the single configuration file. Poetry is the established standard (since 2018); Rye is a newer Astral tool that bridges to uv. For greenfield projects, consider modern-python skill (uv-native). This skill covers Poetry/Rye for existing codebases and teams already invested in these tools.

When to Use

  • When maintaining existing Poetry or Rye projects

  • When a team has standardized on Poetry and migration to uv is not planned

  • When publishing Python packages to PyPI (Poetry has mature publishing support)

  • When managing monorepo Python workspaces

  • When auditing or upgrading dependency lockfiles

Iron Laws

  • ALWAYS commit the lockfile (poetry.lock or requirements.lock ) -- without it, builds are non-deterministic and CI/CD will resolve different versions than development.

  • NEVER use pip install in a Poetry/Rye-managed project -- it bypasses the resolver and creates ghost dependencies invisible to the lockfile.

  • ALWAYS use poetry add /rye add to add dependencies -- manual pyproject.toml edits without re-locking create stale lockfiles.

  • NEVER pin transitive dependencies manually -- let the solver manage the full dependency graph; pinning transitive deps causes resolver conflicts.

  • ALWAYS separate runtime and development dependencies into groups -- shipping dev/test dependencies in production images wastes space and expands attack surface.

Anti-Patterns

Anti-Pattern Why It Fails Correct Approach

Editing pyproject.toml deps without running poetry lock

Lockfile becomes stale; CI installs different versions than intended Always run poetry lock or rye lock after any dependency change

Using poetry install without --no-root in CI Installs the project in editable mode unnecessarily; slower CI builds Use poetry install --no-root for library deps only, --only main for production

Committing .venv/ directory to version control Bloats repo; virtualenvs are platform-specific and non-portable Add .venv/ to .gitignore ; recreate with poetry install or rye sync

Mixing pip and Poetry in the same project Creates two dependency graphs; pip-installed packages invisible to Poetry Use only poetry add /rye add for all dependency changes

Using * version constraints for all dependencies No upper bound protection; major version bumps break silently Use compatible release (^ in Poetry) or upper-bounded ranges

Workflow

Poetry Project Setup

Initialize new project

poetry init --name my-project --python ">=3.12"

Add dependencies by group

poetry add requests httpx poetry add --group dev ruff pytest pytest-cov poetry add --group docs sphinx

Install all groups

poetry install

Install production only

poetry install --only main

Rye Project Setup

Initialize new project

rye init my-project cd my-project

Add dependencies

rye add requests httpx rye add --dev ruff pytest pytest-cov

Sync (install) dependencies

rye sync

pyproject.toml Configuration (Poetry)

[tool.poetry] name = "my-project" version = "0.1.0" description = "Project description" authors = ["Team <team@example.com>"] readme = "README.md"

[tool.poetry.dependencies] python = ">=3.12" requests = "^2.31" httpx = "^0.27"

[tool.poetry.group.dev.dependencies] ruff = "^0.9" pytest = "^8.0" pytest-cov = "^6.0"

[build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"

CI/CD Integration (GitHub Actions)

name: CI on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install Poetry run: pipx install poetry - name: Cache dependencies uses: actions/cache@v4 with: path: ~/.cache/pypoetry key: poetry-$HASH_OF_LOCKFILE - name: Install dependencies run: poetry install --no-root - name: Lint run: poetry run ruff check . - name: Test run: poetry run pytest --cov

Security Audit

Poetry: audit dependencies for known CVEs

poetry audit

Rye: use pip-audit integration

rye run pip-audit

Migration to uv

When ready to migrate from Poetry/Rye to uv:

Export Poetry dependencies

poetry export -f requirements.txt --output requirements.txt

Initialize uv project

uv init uv add $(grep -v '^#' requirements.txt | grep -v '^-' | cut -d'=' -f1)

Verify

uv sync uv run pytest

See modern-python skill for the complete uv workflow.

Complementary Skills

Skill Relationship

modern-python

uv-native workflow (recommended for greenfield projects)

python-backend-expert

Framework-specific patterns (Django, FastAPI, Flask)

tdd

Test-driven development methodology

comprehensive-unit-testing-with-pytest

Testing strategies and patterns

Memory Protocol (MANDATORY)

Before starting:

Read .claude/context/memory/learnings.md for prior Python packaging decisions.

After completing: Record any migration issues, version constraints, or resolver conflicts to .claude/context/memory/learnings.md .

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

filesystem

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

slack-notifications

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

chrome-browser

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

text-to-sql

No summary provided by upstream source.

Repository SourceNeeds Review