MCPInstall

poetry packaging

Master Python package management with Poetry, dependency resolution, publishing, and project structure

Installs
131
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/pluginagentmarketplace/custom-plugin-python --skill poetry-packaging
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads poetry packaging automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Poetry Packaging

Overview

Master modern Python dependency management and packaging with Poetry. Learn to create, manage, and publish professional Python packages with reproducible builds and clean dependency resolution.

Learning Objectives

  • Manage project dependencies with Poetry
  • Create and publish Python packages
  • Handle version constraints and dependency resolution
  • Structure projects following best practices
  • Implement semantic versioning
  • Automate packaging workflows

Core Topics

1. Poetry Basics

  • Installing Poetry
  • Creating new projects
  • Managing dependencies
  • Virtual environment management
  • Lock files and reproducibility
  • Poetry commands and workflow

Code Example:

# Install Poetry
curl -sSL https://install.python-poetry.org | python3 -

# Create new project
poetry new my-awesome-package
cd my-awesome-package

# Project structure created:
# my-awesome-package/
# ├── my_awesome_package/
# │   └── __init__.py
# ├── tests/
# │   └── __init__.py
# ├── pyproject.toml
# └── README.md

# Add dependencies
poetry add requests
poetry add pandas numpy
poetry add --group dev pytest black mypy

# Install dependencies
poetry install

# Run commands in virtual environment
poetry run python main.py
poetry run pytest

# Update dependencies
poetry update

# Show dependency tree
poetry show --tree

# Export to requirements.txt
poetry export -f requirements.txt --output requirements.txt

2. pyproject.toml Configuration

  • Project metadata
  • Dependency specification
  • Version constraints
  • Development dependencies
  • Build system configuration
  • Scripts and entry points

Code Example:

# pyproject.toml
[tool.poetry]
name = "my-awesome-package"
version = "0.1.0"
description = "An awesome Python package"
authors = ["Your Name <you@example.com>"]
license = "MIT"
readme = "README.md"
homepage = "https://github.com/username/my-awesome-package"
repository = "https://github.com/username/my-awesome-package"
documentation = "https://my-awesome-package.readthedocs.io"
keywords = ["awesome", "package", "python"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
]

[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.28.0"
pandas = "^2.0.0"
click = "^8.1.0"

[tool.poetry.group.dev.dependencies]
pytest = "^7.0.0"
pytest-cov = "^4.0.0"
black = "^23.0.0"
mypy = "^1.0.0"
ruff = "^0.1.0"

[tool.poetry.scripts]
my-cli = "my_awesome_package.cli:main"

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

# Version constraints examples:
# ^2.0.0  = >=2.0.0 <3.0.0  (caret)
# ~2.0.0  = >=2.0.0 <2.1.0  (tilde)
# 2.0.*   = >=2.0.0 <2.1.0  (wildcard)
# >=2.0.0 = 2.0.0 or higher (range)

3. Package Structure & Publishing

  • Package layout best practices
  • Versioning with semantic versioning
  • Building distributions (sdist, wheel)
  • Publishing to PyPI/TestPyPI
  • Package metadata
  • Documentation generation

Code Example:

# Recommended package structure
my-awesome-package/
├── my_awesome_package/
│   ├── __init__.py           # Package initialization
│   ├── core.py               # Core functionality
│   ├── utils.py              # Utility functions
│   ├── cli.py                # Command-line interface
│   └── py.typed              # Type hints marker
├── tests/
│   ├── __init__.py
│   ├── test_core.py
│   └── test_utils.py
├── docs/
│   ├── index.md
│   └── api.md
├── examples/
│   └── basic_usage.py
├── pyproject.toml
├── README.md
├── LICENSE
├── CHANGELOG.md
└── .gitignore

# my_awesome_package/__init__.py
"""
My Awesome Package

A comprehensive package for doing awesome things.
"""

__version__ = "0.1.0"
__author__ = "Your Name"
__email__ = "you@example.com"

from .core import main_function
from .utils import helper_function

__all__ = ["main_function", "helper_function"]

# Publishing workflow
# 1. Update version in pyproject.toml
poetry version patch  # 0.1.0 -> 0.1.1
poetry version minor  # 0.1.1 -> 0.2.0
poetry version major  # 0.2.0 -> 1.0.0

# 2. Build package
poetry build
# Creates dist/my_awesome_package-0.1.0.tar.gz
# Creates dist/my_awesome_package-0.1.0-py3-none-any.whl

# 3. Publish to TestPyPI first
poetry config repositories.testpypi https://test.pypi.org/legacy/
poetry publish -r testpypi

# 4. Test installation
pip install --index-url https://test.pypi.org/simple/ my-awesome-package

# 5. Publish to PyPI
poetry publish

# 6. Create git tag
git tag v0.1.0
git push origin v0.1.0

4. Advanced Features

  • Monorepo management
  • Plugin systems
  • Custom build scripts
  • Private package repositories
  • CI/CD integration
  • Dependency groups

Code Example:

# Advanced pyproject.toml configuration

[tool.poetry]
name = "advanced-package"
version = "1.0.0"
description = "Advanced packaging example"

# Include/exclude files
include = ["my_package/data/*.json"]
exclude = ["my_package/tests/*"]

[tool.poetry.dependencies]
python = "^3.9"

# Optional dependencies (extras)
psycopg2 = { version = "^2.9", optional = true }
mysqlclient = { version = "^2.1", optional = true }

[tool.poetry.extras]
postgresql = ["psycopg2"]
mysql = ["mysqlclient"]
all = ["psycopg2", "mysqlclient"]

# Multiple dependency groups
[tool.poetry.group.test.dependencies]
pytest = "^7.0.0"
pytest-cov = "^4.0.0"

[tool.poetry.group.docs.dependencies]
sphinx = "^5.0.0"
sphinx-rtd-theme = "^1.0.0"

[tool.poetry.group.lint.dependencies]
black = "^23.0.0"
ruff = "^0.1.0"
mypy = "^1.0.0"

# Platform-specific dependencies
[tool.poetry.dependencies.pywin32]
version = "^305"
platform = "win32"

# Plugins
[tool.poetry.plugins."my_package.plugins"]
plugin1 = "my_package.plugins:plugin1"

# CI/CD with GitHub Actions
# .github/workflows/publish.yml
name: Publish to PyPI

on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      - name: Install Poetry
        run: curl -sSL https://install.python-poetry.org | python3 -
      - name: Build and publish
        env:
          POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
        run: |
          poetry build
          poetry publish

Hands-On Practice

Project 1: CLI Tool Package

Create a command-line tool and publish to PyPI.

Requirements:

  • Build CLI with Click/Typer
  • Add multiple subcommands
  • Include configuration file support
  • Write comprehensive tests
  • Generate documentation
  • Publish to PyPI

Key Skills: Poetry, CLI development, packaging

Project 2: Library Package

Develop a reusable library with clean API.

Requirements:

  • Design public API
  • Type hints throughout
  • Comprehensive docstrings
  • Unit and integration tests
  • API documentation
  • Versioning strategy

Key Skills: API design, documentation, testing

Project 3: Plugin System

Create package with plugin architecture.

Requirements:

  • Plugin discovery mechanism
  • Entry points configuration
  • Plugin API specification
  • Example plugins
  • Plugin documentation
  • Distribution strategy

Key Skills: Advanced packaging, architecture

Assessment Criteria

  • Create projects with Poetry
  • Manage dependencies effectively
  • Understand version constraints
  • Build and publish packages
  • Structure projects professionally
  • Write clear package metadata
  • Implement semantic versioning

Resources

Official Documentation

Learning Platforms

Tools

Next Steps

After mastering Poetry, explore:

  • Docker - Containerized packaging
  • GitHub Actions - Automated publishing
  • Read the Docs - Documentation hosting
  • Pre-commit - Code quality automation

FAQ

What does the poetry packaging skill do?

Master Python package management with Poetry, dependency resolution, publishing, and project structure

How do I install poetry packaging?

Run npx skills add https://github.com/pluginagentmarketplace/custom-plugin-python --skill poetry-packaging in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/poetry-packaging/ (personal) or .claude/skills/poetry-packaging/ (project).

Which AI agents can use poetry packaging?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is poetry packaging safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains poetry packaging?

It is published by pluginagentmarketplace in pluginagentmarketplace/custom-plugin-python. It has 131 recorded installs.

More from pluginagentmarketplace/custom-plugin-python

View all →

pandas data analysis

pluginagentmarketplace/custom-plugin-python

Master data manipulation, analysis, and visualization with Pandas, NumPy, and Matplotlib

Data & Databases1.1K installs

pytest testing

pluginagentmarketplace/custom-plugin-python

Master test-driven development with pytest, fixtures, mocking, and CI/CD integration

Testing & QA525 installs

machine learning

pluginagentmarketplace/custom-plugin-python

Python machine learning with scikit-learn, PyTorch, and TensorFlow

debugging

pluginagentmarketplace/custom-plugin-python

Python debugging techniques, pdb, and IDE debugging tools

python fundamentals

pluginagentmarketplace/custom-plugin-python

Master Python syntax, data types, control flow, functions, OOP, and standard library

221 installs

python performance

pluginagentmarketplace/custom-plugin-python

Master Python optimization techniques, profiling, memory management, and high-performance computing

Popular other skills

View category →

hyperframes-cli

heygen-com/hyperframes

The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.

1.3M installs

triage

mattpocock/skills

Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.

1M installs

ask-matt

mattpocock/skills

Ask which skill or flow fits your situation. A router over the skills in this repo.

778.4K installs

to-questionnaire

mattpocock/skills

Turn a decision you can't fully answer into a questionnaire for someone else to fill in.

508.9K installs

wait-what

mattpocock/skills

Stop. That last message did not land: re-pitch it.

459.7K installs

loop-me

mattpocock/skills

Grill me about specs for the workflows I want to build, within this workspace.

447.9K installs