python-skills: Packaging Library Development as Claude Skills

Last year I wrote a comprehensive guide to Python library development covering everything from project setup to PyPI publishing to security auditing. It’s thorough, but it has a limitation: it’s a document you have to go read and then apply yourself.

So I packaged the whole thing into python-skills, a set of 12 Claude skills that you can install and immediately have that expertise applied automatically when you’re working on Python libraries. Ask Claude to set up a new library, and it knows about pyproject.toml, uv, ruff, pre-commit, and GitHub Actions. Ask it to review your test suite, and it knows about fixtures, parametrization, and property-based testing with Hypothesis.

But before I get into the specifics, let me back up for anyone who hasn’t used skills or marketplaces yet.

What Are Claude Skills?

I wrote a longer post about skills when they first came out, but the short version: a skill is a markdown file that teaches Claude domain-specific expertise. It has a name, a description of when it should activate, and then the actual knowledge you want Claude to have.

---
name: setting-up-python-libraries
description: Activates when setting up new Python library projects...
---

# Project Setup Guide

Use uv for dependency management...
Configure ruff for linting...

When you’re working in Claude Code and ask it to do something that matches a skill’s description, the skill activates and Claude applies that expertise. You don’t have to prompt it or remember the details yourself. The skill handles it.

Skills live in .claude/skills/ in your project directory, or in ~/.claude/skills/ for global availability across all your projects.

How Marketplaces Work

Installing skills one at a time from random repos would be annoying. That’s where marketplaces come in.

A skill marketplace is just a GitHub repository that packages up a collection of related skills. You register the marketplace once, and then you can install individual skills or bundles from it using Claude Code’s plugin system.

For python-skills, that looks like:

# Add the marketplace (one time)
/plugin marketplace add wdm0006/python-skills

# Install everything
/plugin install python-library-complete@wdm0006-python-skills

# Or install just what you need
/plugin install python-library-foundations@wdm0006-python-skills
/plugin install python-library-distribution@wdm0006-python-skills
/plugin install python-library-quality@wdm0006-python-skills

After that, the skills are available whenever you’re working in Claude Code. Updates to the marketplace flow through when you update your plugins.

The marketplace model is nice because it solves the discovery and distribution problem without requiring anything heavyweight. It’s just a git repo with a known structure. Anyone can publish one.

Why Skills Are Useful for Developers

The honest answer is that skills encode decisions you’ve already made so you don’t have to make them again every time. If you’ve settled on ruff over flake8, uv over pip, Google-style docstrings over NumPy-style, you shouldn’t have to re-specify that in every conversation.

Without skills, a conversation with Claude about setting up a Python library starts with a blank slate. Claude will make reasonable choices, but they might not be your choices. You end up either writing a long prompt every time or cleaning up after the fact.

With skills, Claude starts from your established preferences and practices. It’s the difference between handing someone a style guide and hoping they read it, versus having the style guide built into the tool.

The other thing skills do well is encode expertise that’s hard to remember completely. My security audit skill covers Bandit, pip-audit, Semgrep, and detect-secrets with specific configuration for each. I don’t want to remember all of that every time I audit a project. I want Claude to know it and apply it systematically.

What’s in python-skills

The repo has 12 skills organized into bundles:

Foundations (starting projects):

  • setting-up-python-libraries - pyproject.toml, uv, ruff, pytest, pre-commit, GitHub Actions. Includes a complete Makefile template and CI configuration.
  • improving-python-code-quality - Ruff linting rules, mypy type checking with strict configuration, Pythonic idioms, and common refactoring patterns.
  • testing-python-libraries - Pytest fundamentals, fixture patterns, parametrization, conftest setup, and Hypothesis property-based testing.

Distribution (getting your library out there):

  • packaging-python-libraries - Modern pyproject.toml configuration, build backends, PyPI trusted publishing, wheel building, and conda packaging.
  • managing-python-releases - Semantic versioning, changelog generation, release automation scripts, deprecation workflows, and migration guides.
  • building-python-clis - Click and Typer frameworks, command groups, shell completion, and CLI-specific testing patterns.

Quality (making it good):

  • auditing-python-security - Bandit configuration, pip-audit, Semgrep rules, detect-secrets, and CI security workflows.
  • optimizing-python-performance - Profiling with cProfile and line_profiler, memory analysis with tracemalloc, benchmarking with pytest-benchmark, and optimization strategies.
  • designing-python-apis - Naming conventions, parameter design, deprecation patterns, error handling, and API evolution strategies.

Everything else:

  • documenting-python-libraries - Google-style docstrings, Sphinx setup, ReadTheDocs configuration, and tutorial writing.
  • building-python-communities - CONTRIBUTING.md, CODE_OF_CONDUCT.md, issue templates, PR templates, and GitHub automation.
  • reviewing-python-libraries - A comprehensive review framework that evaluates a library across all the dimensions above.

Each skill has a main SKILL.md plus supporting reference files. The project-setup skill, for example, has separate detailed references for pyproject.toml configuration, Makefile patterns, and CI setup. The skills are meant to be thorough enough that Claude can do the work without you having to fill in gaps.

The Manual Alternative

If you don’t want to use the marketplace system, you can also just clone the repo and copy the skills you want:

git clone https://github.com/wdm0006/python-skills.git
mkdir -p .claude/skills
cp -r python-skills/skills/* .claude/skills/

Or for global installation:

mkdir -p ~/.claude/skills
cp -r python-skills/skills/* ~/.claude/skills/

Nothing fancy. They’re markdown files in a directory.

Building Your Own

If you have a domain where you’ve accumulated expertise and find yourself repeating the same instructions to Claude, packaging that into skills is worth the effort. The format is simple: markdown with frontmatter. The hard part isn’t the technology, it’s deciding what knowledge is worth encoding.

My advice: start with whatever you find yourself correcting Claude on most often. If you keep saying “no, use uv not pip” or “we use Google-style docstrings here,” that’s a skill waiting to be written.

The python-skills repo is MIT licensed if you want to fork it as a starting point for your own collection.