python-devlisted
Install: claude install-skill iamtatsuki05/dotfiles
# Python開発スキル
Pythonコードの実装、テスト、デバッグ、リファクタリングを効率的に行うためのガイド。
## 実装前の必須確認
**pyproject.tomlを必ず確認する。** プロジェクトのコーディング規約(ruff, mypy設���等)に従う。
確認項目:
- `[tool.ruff]`: line-length, quote-style, indent-style
- `[tool.ruff.lint]`: select, ignore(有効/無効なルール)
- `[tool.ruff.format]`: quote-style(シングル/ダブル)
- `[tool.mypy]`: python_version, disallow_untyped_defs
- `[tool.pytest.ini_options]`: テスト設定
- Python バージョンと既存記法。Python 3.12+ 構文は、対象プロジェクトが対応している場合だけ使う
- 既存の依存、例外設計、テストヘルパー、型スタイル
`pyproject.toml` がない場合は、`setup.cfg`、`tox.ini`、`requirements*.txt`、`uv.lock`、`poetry.lock`、既存コードのスタイルを確認する。Pydantic / dataclass などの選択は、プロジェクトの既存方針があればそれに従い、無ければ後述の「ユーザー既定の規約」に従う。
## ユーザー既定の規約
プロジェクト側に明示の規約・既存パターンがあればそれを優先する。無い場合の既定(いずれも繰り返し指摘されてきた項目):
- `print` でなく `logging` の logger を使う。
- データ構造は `dataclass` より Pydantic を優先する(単純な dict / tuple で足りる場面まで無理に導入しない)。
- CLI は `argparse` を直接書くより、プロジェクトで採用されている宣言的ライブラリ(fire、typed-argument-parser 等)に合わせる。
- `__init__.py` は空にし、`__all__` を書かない。
- `*args` / `**kwargs` で実引数���曖昧にしない。引数は明示的に列挙する。
- `sys.path` 操作、`PYTHONPATH`、subprocess や動的 import による import ハックをしない。uv 等でパッケージとして import できる構成にする。
- 類似ケースのテストは `@pytest.mark.parametrize` にまとめ、tests も ruff / mypy の対象に含める。
- lint・型エラーは、設定の緩和や理由のない `noqa` / `cast` でなく、コード側を直して解消する。`# pragma: no cover` も安易に足さない。
## コーディング規約
### 基本スタイル
以下のサンプルは Python 3.12+ 前提(`def f[T]`、`type X = ...`)。3.11 以下では `TypeVar` / `TypeAlias` を使う。
```python
# Python 3.12+のジェネリクス記法
def process_items[T](items: list[T], predicate: Callable[[T], bool])