python-pypi-package-builder
End-to-end skill for building, testing, linting, versioning, and publishing a production-grade Python library to PyPI.
Skill by mouadja02
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mouadja02-python-pypi-package-builder
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, backend, testing, devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 3
badge.fury.io· found in codecodeload.github.com· found in install commandgithub.com· found in code
Files it touches
~/.claude/skills/python-pypi-package-builder
What's inside
- Skill name
python-pypi-package-builder- Description
- End-to-end skill for building, testing, linting, versioning, and publishing a production-grade Python library to PyPI. Covers all four build backends (setuptools+setuptools_scm, hatchling, flit, poetry), PEP 440 versioning, semantic versioning, dynamic git-tag versioning, OOP/SOLID design, type hints (PEP 484/526/544/561), Trusted Publishing (OIDC), and the full PyPA packaging flow. Use for: creating Python packages, pip-installable SDKs, CLI tools, framework plugins, pyproject.toml setup, py.typed, setuptools_scm, semver, mypy, pre-commit, GitHub Actions CI/CD, or PyPI publishing.
- License
- MIT
- Instructions
- 443 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (12)
- LICENSE
- SKILL.md
- architecture-patterns.md · references/
- ci-publishing.md · references/
- community-docs.md · references/
- library-patterns.md · references/
- pyproject-toml.md · references/
- release-governance.md · references/
- testing-quality.md · references/
- tooling-ruff.md · references/
- versioning-strategy.md · references/
- scaffold.py · scripts/
SKILL.md (first lines)
> **Attribution:** Sourced from [github/awesome-copilot](https://github.com/github/awesome-copilot) by [GitHub Community](https://github.com/github), licensed MIT. Modified for this collection.
# Python PyPI Package Builder Skill
A complete, battle-tested guide for building, testing, linting, versioning, typing, and
publishing a production-grade Python library to PyPI — from first commit to community-ready
release.
> **AI Agent Instruction:** Read this entire file before writing a single line of code or
> creating any file. Every decision — layout, backend, versioning strategy, patterns, CI —
> has a decision rule here. Follow the decision trees in order. This skill applies to any
> Python package type (utility, SDK, CLI, plugin, data library). Do not skip sections.
---
## Quick Navigation
| Section in this file | What it covers |
|---|---|
| [1. Skill Trigger](#1-skill-trigger) | When to load this skill |
| [2. Package Type Decision](#2-package-type-decision) | Identify what you are building |
| [3. Folder Structure Decision](#3-folder-structure-decision) | src/ vs flat vs monorepo |
| [4. Build Backend Decision](#4-build-backend-decision) | setuptools / hatchling / flit / poetry |
| [5. PyPA Packaging Flow](#5-pypa-packaging-flow) | The canonical publish pipeline |
| [6. Project Structure Templates](#6-project-structure-templates) | Full layouts for every option |
| [7. Versioning Strategy](#7-versioning-strategy) | PEP 440, semver, dynamic vs static |
| Reference file | What it covers |
|---|---|
| `references/pyproject-toml.md` | All four backend templates, `setuptools_scm`, `py.typed`, tool configs |
| `references/library-patterns.md` | OOP/SOLID, type hints, core class design, factory, protocols, CLI |
| `references/testing-quality.md` | `conftest.py`, unit/backend/async tests, ruff/mypy/pre-commit |
| `references/ci-publishing.md` | `ci.yml`, `publish.yml`, Trusted Publishing, TestPyPI, CHANGELOG, release checklist |
| `references/community-docs.md` | README, docstrings, CONTRIBUTING, SECURITY, anti-patterns, master checklist |
| `references/architecture-patterns.md` | Backend system (plugin/strategy), config layer, transport layer, CLI, backend injection |
| `references/versioning-strategy.md` | PEP 440, SemVer, pre-release, setuptools_scm deep-dive, flit static, decision engine |
| `references/release-governance.md` | Branch strategy, branch protection, OIDC, tag author validation, prevent invalid tags |
| `references/tooling-ruff.md` | Ruff-only setup (replaces black/isort), mypy config, pre-commit, asyncio_mode=auto |
**Scaffold script:** run `python skills/python-pypi-package-builder/scripts/scaffold.py --name your-package-name`
to generate the entire directory layout, stub files, and `pyproject.toml` in one command.
---
## 1. Skill Trigger
Load this skill whenever the user wants to:
- Create, scaffold, or publish a Python package or library to PyPI
- Build a pip-installable SDK, utility, CLI tool, or framework extension
- Set up `pyproject.toml`, linting, mypy, pre-commit, or GitHub Actions for a Python project
- Understand versioning (`setuptools_scm`, PEP 440, semver, static versioning)
- Understand PyPA specs: `py.typed`, `MANIFEST.in`, `RECORD`, classifiers
- Publish to PyPI using Trusted Publishing (OIDC) or API tokens
- Refactor an existing package to follow modern Python packaging standards
- Add type hints, protocols, ABCs, or dataclasses to a Python library
- Apply OOP/SOLID design patterns to a Python package
- Choose between build backends (setuptools, hatchling, flit, poetry)
**Also trigger for phrases like:** "build a Python SDK", "publish my library", "set up PyPI CI",
"create a pip package", "how do I publish to PyPI", "pyproject.toml help", "PEP 561 typed",
"setuptools_scm version", "semver Python", "PEP 440", "git tag release", "Trusted Publishing".
---
## 2. Package Type Decision
Identify what the user is building **before** writing any code. Each type has distinct patterns.
### Decision Table
| Type | Core Pattern | Entry Point | Key Deps | Example Packages |
|---|---|---|---|---|
| **Utility library** | Module of pure functions + helpers | Import API only | Minimal | `arrow`, `humanize`, `boltons`, `more-itertools` |
| **API client / SDK** | Class with methods, auth, retry logic | Import API only | `httpx` or `requests` | `boto3`, `stripe-python`, `openai` |
| **CLI tool** | Command functions + argument parser | `[project.scripts]` or `[project.entry-points]` | `click` or `typer` | `black`, `ruff`, `httpie`, `rich` |
| **Framework plugin** | Plugin class, hook registration | `[project.entry-points."framework.plugin"]` | Framework dep | `pytest-*`, `django-*`, `flask-*` |
| **Data processing library** | Classes + functional pipeline | Import API only | Optional: `numpy`, `pandas` | `pydantic`, `marshmallow`, `cerberus` |
| **Mixed / generic** | Combination of above | Varies | Varies | Many real-world packages |
**Decision Rule:** Ask the user if unclear. A package can combine types (e.g., SDK with a CLI
entry point) — use the primary type for structural decisions and add secondary type patterns on top.
For implementation patterns of each type, see `references/library-patterns.md`.
### Package Naming Rules
- PyPI name: all lowercase, hyphens — `my-python-library`
- Python import name: underscores — `my_python_library`
- Check availability: https://pypi.org/search/ before starting
- Avoid shadowing popular packages (verify `pip install <name>` fails first)
---
## 3. Folder Structure Decision
### Decision Tree
```
Does the package have 5+ internal modules OR multiple contributors OR complex sub-packages?
├── YES → Use src/ layout
│ Reason: prevents accidental import of uninstalled code during development;
│ separates source from project root files; PyPA-recommended for large projects.
│
├── NO → Is it a single-module, focused package (e.g., one file + helpers)?
│ ├── YES → Use flat layout
│ └── NO (medium complexity) → Use flat layout, migrate to src/ if it grows
│
└── Is it multiple related packages under one namespace (e.g., myorg.http, myorg.db)?
└── YES → Use namespace/monorepo layout
```
### Quick Rule Summary
| Situation | Use |
|---|---|
| New project, unknown future size | `src/` layout (safest default) |
| Single-purpose, 1–4 modules | Flat layout |
| Large library, many contributors | `src/` layout |From mouadja02/skills, MIT.
More from mouadja02/skills
- 0.637score
eval-driven-dev
mouadja02
Improve AI application with evaluation-driven development.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
semantic-kernel
mouadja02
Create, update, refactor, explain, or review Semantic Kernel solutions using shared guidance plus language-specific references for .NET and Python.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
ai-team-orchestration
mouadja02
Bootstraps and runs a multi-agent development team with roles (dev, QA, DevOps), parallel work, and sprint plans that survive context resets.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
gdpr-compliant
mouadja02
Apply GDPR-compliant engineering practices across your codebase.
SkillAFreshness: A★ 11Claude Code +9 - 0.634score
nano-banana-pro-openrouter
mouadja02
Generate or edit images via OpenRouter with the Gemini 3 Pro Image model.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
autoresearch
luiscantero
Runs an autonomous experiment loop on any programming task: you define the goal, metric, and eval command; the agent edits code, measures, and keeps or…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
structured-autonomy-plan
mouadja02
Use when an autonomous agent run needs a plan before execution — decomposing the goal, setting explicit boundaries and stop conditions, and defining what the…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
create-agentsmd
mouadja02
Generates a complete AGENTS.md at the repository root following the agents.md format: setup, build, test, style, and PR conventions coding agents need.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
rich-claude-code-tui-clone
mouadja02
Use when building a Python terminal UI inspired by Claude Code with Rich.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
memory-merger
mouadja02
Merges mature lessons from a domain memory file into its instruction file.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
bmm-skills
mouadja02
Routes requests to the BMad Method (v6.12.4) agile framework: persona agents, planning skills (brief, PRFAQ, PRD, UX, spec, architecture, epics, sprint…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
ai-ready
mouadja02
Installs John Papa's ai-ready skill, which makes a repository AI-ready by generating AGENTS.md, copilot-instructions.md, CI workflows, and issue templates.
SkillAFreshness: A★ 11Claude Code +9
Signals
- Stars
- 11
- Forks
- 5
- Open issues
- 25
- Last commit (this folder)
- Oct 20, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/mouadja02/skills
- Website
- mouadja02.github.io/skills/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from mouadja02
- 0.637score
ai-team-orchestration
mouadja02
Bootstraps and runs a multi-agent development team with roles (dev, QA, DevOps), parallel work, and sprint plans that survive context resets.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
gdpr-compliant
mouadja02
Apply GDPR-compliant engineering practices across your codebase.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
eval-driven-dev
mouadja02
Improve AI application with evaluation-driven development.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
semantic-kernel
mouadja02
Create, update, refactor, explain, or review Semantic Kernel solutions using shared guidance plus language-specific references for .NET and Python.
SkillAFreshness: A★ 11Claude Code +9 - 0.634score
nano-banana-pro-openrouter
mouadja02
Generate or edit images via OpenRouter with the Gemini 3 Pro Image model.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
rich-claude-code-tui-clone
mouadja02
Use when building a Python terminal UI inspired by Claude Code with Rich.
SkillAFreshness: A★ 11Claude Code +9
Cite this page
python-pypi-package-builder skill. Agent Mart. https://agentmart.dev/skills/mouadja02-python-pypi-package-builder (last updated 2026-10-24)