Version-aware BAD/GOOD pattern guides that help AI coding agents generate modern Python
Project description
modern-python-guidance
Stop your AI from writing typing.List, @validator, and setup.py. 41 version-aware BAD/GOOD pattern guides that teach AI coding agents to write modern Python — delivered via MCP, CLI, or Agent Skills.
Highlights
- Measurable impact: AI writes modern Python 98% of the time with mpg, vs 79% without — even with vague prompts (Opus 4.8, V5 benchmark details)
- 41 guides across stdlib, Pydantic, FastAPI, Django, SQLAlchemy, pytest, and toolchain
- Version-aware: auto-detects your project's Python version and filters guides accordingly
- 3 delivery methods: MCP server, CLI, Agent Skills plugin
- Not Ruff: Ruff auto-fixes syntax (
List→list). mpg guides design decisions that Ruff can't touch —TaskGroupovergather, Pydantic V2 migration, SQLAlchemy 2.0 style
Note: The tool itself requires Python 3.11+ to run. Guides cover patterns from Python 3.9 onward, and
--python-versionfilters guides for your target environment.
Quick start
Claude Code (recommended)
pip install modern-python-guidance
mpg setup
This registers the MCP server and links Agent Skills in one command. Start a new Claude Code session afterwards — newly registered MCP servers and skills take effect on the next launch.
CLI
pip install modern-python-guidance
mpg search "pydantic validator"
mpg retrieve pydantic-v2-validators
mpg is the short alias for modern-python-guidance. Both work.
Manual setup / other agents
MCP registration (Claude Code):
claude mcp add mpg -- mpg mcp
Other MCP-compatible agents (Cursor, Windsurf, etc.) — add to your MCP config:
{
"mcpServers": {
"mpg": {
"command": "mpg",
"args": ["mcp"]
}
}
}
Agent Skills symlink (Claude Code):
mpg setup --skills-only
mpg setup flags:
| Flag | Purpose |
|---|---|
--mcp-only |
MCP registration only |
--skills-only |
Agent Skills symlink only |
--scope {user,local} |
MCP scope (default: user) |
--project-dir PATH |
Target project for Skills symlink |
--dry-run |
Show what would be done |
Uninstall — reverse mpg setup (deregister the MCP server and unlink Agent Skills):
mpg uninstall # remove both
mpg uninstall --dry-run # preview what would be removed
| Flag | Purpose |
|---|---|
--mcp-only |
MCP deregistration only |
--skills-only |
Agent Skills unlink only |
--project-dir PATH |
Target project for the Skills symlink |
--dry-run |
Show what would be done |
mpg uninstall clears the MCP registration from every scope setup can write to (user and local), removes only the symlink mpg created (never its target or other skills), and is idempotent — running it on an already-clean state is a harmless no-op.
CLI usage
# Search guides by keyword
mpg search "pydantic validator"
# Retrieve a specific guide (full BAD/GOOD content)
mpg retrieve use-builtin-generics
# List all guides compatible with your Python version
mpg list --python-version 3.11
# Auto-detect project Python version from pyproject.toml / .python-version
mpg detect-version
# Filter by category
mpg search "timeout" --category async
# JSON output (default when piped, explicit with --format)
mpg search "typing" --format json | jq '.[0].id'
Guide coverage
41 guides across 3 layers:
| Layer | Categories | Count | Examples |
|---|---|---|---|
| 1 — stdlib | typing, async, stdlib, data-structures | 18 | list over List, match/case, TaskGroup, deferred annotations, t-strings |
| 2 — frameworks | pydantic, fastapi, httpx, django, sqlalchemy, pytest | 18 | Pydantic V2 migration, SQLAlchemy 2.0 style, Annotated[Depends] |
| 3 — toolchain | toolchain | 5 | uv over pip, ruff over flake8, pickle avoidance |
Run mpg list to see all 41 guides, or browse them on GitHub.
Version-aware filtering
Guides specify their minimum Python version. The CLI auto-detects your project's version from (in order):
--python-versionflagpyproject.tomlrequires-python.python-versionfile- Default: 3.11
# Only shows guides compatible with Python 3.9
mpg list --python-version 3.9
# Excludes: TaskGroup (3.11+), match/case (3.10+), etc.
Development
git clone https://github.com/yottayoshida/modern-python-guidance.git
cd modern-python-guidance
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
See CONTRIBUTING.md for project structure and guide authoring details.
License
Apache-2.0 OR MIT — see LICENSE and LICENSE-MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file modern_python_guidance-0.3.5.tar.gz.
File metadata
- Download URL: modern_python_guidance-0.3.5.tar.gz
- Upload date:
- Size: 128.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
713e7b37eee433261b0925e6ae792815f7579a95827051f4b9f48b783b0ce135
|
|
| MD5 |
e25c109ec4f57829db5fccb745cf5087
|
|
| BLAKE2b-256 |
5303852bb7082c02fc8fdb72e0ea7c0ed0768cb12b14620a06e817cdcaa1ded5
|
Provenance
The following attestation bundles were made for modern_python_guidance-0.3.5.tar.gz:
Publisher:
publish.yml on yottayoshida/modern-python-guidance
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
modern_python_guidance-0.3.5.tar.gz -
Subject digest:
713e7b37eee433261b0925e6ae792815f7579a95827051f4b9f48b783b0ce135 - Sigstore transparency entry: 1674911803
- Sigstore integration time:
-
Permalink:
yottayoshida/modern-python-guidance@3cf04aca3220ff0500dc21b53563765f364a960c -
Branch / Tag:
refs/tags/v0.3.5 - Owner: https://github.com/yottayoshida
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3cf04aca3220ff0500dc21b53563765f364a960c -
Trigger Event:
release
-
Statement type:
File details
Details for the file modern_python_guidance-0.3.5-py3-none-any.whl.
File metadata
- Download URL: modern_python_guidance-0.3.5-py3-none-any.whl
- Upload date:
- Size: 73.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b94a1d2d084db4db25e8fce78e7999903c823fd81f1ebb4ce3c6defa4b1be19f
|
|
| MD5 |
0aad0e576bda40089bb0f4f6e26dd14f
|
|
| BLAKE2b-256 |
6cfea3f92cd816b44e8023b0ef81e2bcb99e2f332992ba5a36729a7bfacd015d
|
Provenance
The following attestation bundles were made for modern_python_guidance-0.3.5-py3-none-any.whl:
Publisher:
publish.yml on yottayoshida/modern-python-guidance
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
modern_python_guidance-0.3.5-py3-none-any.whl -
Subject digest:
b94a1d2d084db4db25e8fce78e7999903c823fd81f1ebb4ce3c6defa4b1be19f - Sigstore transparency entry: 1674911815
- Sigstore integration time:
-
Permalink:
yottayoshida/modern-python-guidance@3cf04aca3220ff0500dc21b53563765f364a960c -
Branch / Tag:
refs/tags/v0.3.5 - Owner: https://github.com/yottayoshida
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3cf04aca3220ff0500dc21b53563765f364a960c -
Trigger Event:
release
-
Statement type: