Python Packaging

Create distributable Python packages with proper project structure, setup.py/pyproject.toml…

Everything needed to turn Python code into a clean, installable, distributable package using modern standards, pyproject.toml as a single source of truth, src-layout structure, wheel and sdist builds, CLI entry points, and publishing to PyPI. It covers the full lifecycle from project scaffolding to automated, secure releases, so your library installs cleanly for everyone and your CLI tools land on the user's PATH on first install.

$15 one-time
Add to a kit →

Prices include 20% VAT. · Forged on real agency work · one-time, no lock-in

  • Type Skill
  • Category Development
  • Delivery Email · instant
  • License One-time
Run preview
forgehouse, python-packaging

Inside the run · no black box

See the actual work before you buy it.

From source tree to PyPI release, the skill runs one disciplined pipeline. Every gate exists because skipping it produces a broken install somewhere:

  1. Scaffold the src layout (src/my_package/, tests/, pyproject.toml) so tests run against the installed package, not the loose source, which catches missing-file packaging bugs before release
  2. Write pyproject.toml as the single source of truth in 4 layers: build-system backend, project metadata with versioned dependency ranges, optional-dependencies groups (dev, docs), and tool config for ruff, mypy and pytest
  3. Register CLI entry points under [project.scripts] and plugin hooks under [project.entry-points], then verify with an editable install that the command lands on PATH
  4. Build both artifacts with python -m build: a wheel for fast installs and an sdist as the source fallback, using cibuildwheel for platform-specific wheels when C extensions are involved
  5. Validate before publishing: twine check on the dist metadata, install the wheel into a clean venv, import the package and run the CLI to prove it actually works outside the dev machine
  6. Release through TestPyPI first, then production PyPI via CI with trusted publishing (OIDC instead of stored tokens), tagging the release so setuptools-scm derives the version from git
Use cases · what happens when you plug it in

One power source. 6 lines out.

python-packaging · core

core active · 6 lines

  1. Package a Python library for PyPI distribution

    ✓ package a python library
  2. Build a CLI tool with entry points (Click or argparse)

    ✓ build a cli tool with en…
  3. Write a complete pyproject.toml with metadata and tooling config

    ✓ write a complete pyproje…
  4. Set up dynamic git-tag-based versioning

    ✓ set up dynamic git-tag-b…
  5. Automate publishing with GitHub Actions and trusted publishing

    ✓ automate publishing with
  6. Create namespace packages split across repositories

    ✓ create namespace packages
Benefits · what you walk away with

Yours to keep.

Drag time forward. Watch what stays.

Forever

That's what owning means.

The rented stack

ai writing tool: subscription

expired · access lost

analytics suite: subscription

expired · access lost

design platform: subscription

expired · access lost

(nothing left)

Your forge

  1. Ship packages that install fast and reliably with both wheel and sdist

    license: perpetual
  2. Catch packaging bugs early by testing the installed package, not the source

    license: perpetual
  3. Eliminate credential leaks using OIDC trusted publishing over stored tokens

    license: perpetual
  4. Make CLI commands available on PATH automatically the moment users install

    license: perpetual

subscriptions expire · deeds don't

What's included · the full manifest

Everything in the box.

Pick a piece up. Watch it work.

Minimal and full-featured pyproject.toml templates with classifiers, URLs, and tool config

part 01 of 06 · in the box

6 parts · one working system · ships instantly by email

Who it's for

This wasn't forged for everyone.

  • Not for you if you'd rather rent a tool than own one.
  • Not for you if you want someone else to run your stack.
  • Not for you if you're happy guessing.
Still here? Good.

Python developers distributing libraries or CLI tools who want modern, reproducible, and secure packaging instead of legacy setup.py guesswork.

then this was forged for you.

Works with

Universal by design: these run in any AI. Delivered in the open Agent Skills + MCP format (native in Claude); ChatGPT, Gemini, Cursor and Copilot adapt the same files their own way.

  • Claude Native format
  • ChatGPT Adapts via open standards
  • Gemini Adapts via open standards
  • Cursor Adapts via open standards
  • Copilot Adapts via open standards
Questions · still in the air

Catch what's on your mind.

the air is clear. nothing between you and the forge.
catch a spark: the forge will answer

  1. I have a legacy setup.py project, does this only apply to new packages?

    It works for both. The modern standard is pyproject.toml as the single source of truth, and migrating an existing setup.py project onto the minimal or full-featured templates is a core use case. The src-layout guidance helps restructure older flat projects too.

  2. How does the publishing flow avoid me leaking a PyPI token?

    The GitHub Actions workflow uses OIDC trusted publishing, so no long-lived token is stored in repo secrets at all. The release path also runs python -m build, twine check, and a TestPyPI rehearsal before anything touches real PyPI.

  3. Will it write the actual library code or my package's tests?

    No. It handles the packaging shell: project structure, pyproject.toml, entry points, versioning with setuptools-scm, and the publish pipeline. The functionality inside the package and its test suite are yours to write.

  4. How is it delivered?

    By email right after purchase: ready to run, downloaded instantly, no setup wait.

  5. One-time or subscription?

    A one-time purchase; no subscription or hidden fees. VAT (20%) is included.

  6. Can I get a refund?

    As a digital product, it can’t be refunded once downloaded. That’s why we show exactly what’s inside and who it’s for, right here.