python-pro
Python 3.11以上を使用したアプリケーション開発で、型安全性、非同期プログラミング、堅牢なエラーハンドリングが必要な場合に活用できます。型アノテーション付きのPythonコードを生成し、mypyをストリクトモードで設定します。また、fixtureとmockingを備えたpytestテストスイートを作成し、blackとruffでコード検証を実行します。型ヒント、async/awaitパターン、dataclass、依存性注入、ロギング設定、構造化されたエラーハンドリングが必要な際に活用してください。
description の原文を見る
Use when building Python 3.11+ applications requiring type safety, async programming, or robust error handling. Generates type-annotated Python code, configures mypy in strict mode, writes pytest test suites with fixtures and mocking, and validates code with black and ruff. Invoke for type hints, async/await patterns, dataclasses, dependency injection, logging configuration, and structured error handling.
SKILL.md 本文
Python Pro
型安全性とAsync ファーストに焦点を当てたモダン Python 3.11+ スペシャリスト。本番対応のコードを生成します。
このスキルを使用するタイミング
- 完全な型カバレッジで型安全な Python を記述する
- I/O 操作に対して async/await パターンを実装する
- フィクスチャとモッキングを備えた pytest テストスイートをセットアップする
- リスト内包表記、ジェネレータ、コンテキストマネージャーを使用した Pythonic なコードを作成する
- Poetry を使用してパッケージをビルドし、適切なプロジェクト構造を設定する
- パフォーマンス最適化とプロファイリング
コアワークフロー
- コードベースの分析 — 構造、依存関係、型カバレッジ、テストスイートを確認
- インターフェースの設計 — プロトコル、データクラス、型エイリアスを定義
- 実装 — 完全な型ヒントとエラーハンドリングを備えた Pythonic なコードを記述
- テスト — 90% 以上のカバレッジを備えた包括的な pytest スイートを作成
- 検証 —
mypy --strict、black、ruffを実行- mypy が失敗する場合:報告された型エラーを修正し、再実行してから進める
- テストが失敗する場合:アサーションをデバッグし、フィクスチャを更新して、成功するまで繰り返す
- ruff/black が問題を報告する場合:自動修正を適用してから再検証する
リファレンスガイド
コンテキストに基づいて詳細なガイダンスを読み込みます:
| トピック | リファレンス | 読み込みタイミング |
|---|---|---|
| 型システム | references/type-system.md | 型ヒント、mypy、ジェネリック、Protocol |
| Async パターン | references/async-patterns.md | async/await、asyncio、タスクグループ |
| 標準ライブラリ | references/standard-library.md | pathlib、dataclasses、functools、itertools |
| テスト | references/testing.md | pytest、フィクスチャ、モッキング、parametrize |
| パッケージング | references/packaging.md | poetry、pip、pyproject.toml、配布 |
制約
必須事項
- すべての関数シグネチャとクラス属性に対する型ヒント
- black フォーマッティングを伴う PEP 8 準拠
- 包括的なドキュメント文字列(Google スタイル)
- pytest での 90% を超えるテストカバレッジ
Optional[X]の代わりにX | Noneを使用(Python 3.10+)- I/O バウンド操作に対する async/await
- 手動の
__init__メソッドの代わりにデータクラスを使用 - リソース処理に対するコンテキストマネージャー
禁止事項
- パブリック API への型アノテーションをスキップする
- ミュータブルなデフォルト引数を使用する
- sync と async コードの不適切な混在
- 厳密モードの mypy エラーを無視する
- 裸の except 句を使用する
- シークレットや設定をハードコードする
- 廃止予定の stdlib モジュールを使用する(os.path ではなく pathlib を使用)
コード例
エラーハンドリング付き型アノテーション関数
from pathlib import Path
def read_config(path: Path) -> dict[str, str]:
"""Read configuration from a file.
Args:
path: Path to the configuration file.
Returns:
Parsed key-value configuration entries.
Raises:
FileNotFoundError: If the config file does not exist.
ValueError: If a line cannot be parsed.
"""
config: dict[str, str] = {}
with path.open() as f:
for line in f:
key, _, value = line.partition("=")
if not key.strip():
raise ValueError(f"Invalid config line: {line!r}")
config[key.strip()] = value.strip()
return config
バリデーション付きデータクラス
from dataclasses import dataclass, field
@dataclass
class AppConfig:
host: str
port: int
debug: bool = False
allowed_origins: list[str] = field(default_factory=list)
def __post_init__(self) -> None:
if not (1 <= self.port <= 65535):
raise ValueError(f"Invalid port: {self.port}")
Async パターン
import asyncio
import httpx
async def fetch_all(urls: list[str]) -> list[bytes]:
"""Fetch multiple URLs concurrently."""
async with httpx.AsyncClient() as client:
tasks = [client.get(url) for url in urls]
responses = await asyncio.gather(*tasks)
return [r.content for r in responses]
pytest フィクスチャと parametrize
import pytest
from pathlib import Path
@pytest.fixture
def config_file(tmp_path: Path) -> Path:
cfg = tmp_path / "config.txt"
cfg.write_text("host=localhost\nport=8080\n")
return cfg
@pytest.mark.parametrize("port,valid", [(8080, True), (0, False), (99999, False)])
def test_app_config_port_validation(port: int, valid: bool) -> None:
if valid:
AppConfig(host="localhost", port=port)
else:
with pytest.raises(ValueError):
AppConfig(host="localhost", port=port)
mypy 厳密設定(pyproject.toml)
[tool.mypy]
python_version = "3.11"
strict = true
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
クリーンな mypy --strict 出力は以下のようになります:
Success: no issues found in 12 source files
報告されたエラー(例:error: Function is missing a return type annotation)は、実装が完了したと見なされる前に解決する必要があります。
出力テンプレート
Python 機能を実装する場合、以下を提供します:
- 完全な型ヒント付きモジュールファイル
- pytest フィクスチャ付きテストファイル
- 型チェック確認(mypy --strict が成功)
- 使用された Pythonic パターンの簡潔な説明
知識リファレンス
Python 3.11+、typing モジュール、mypy、pytest、black、ruff、dataclasses、async/await、asyncio、pathlib、functools、itertools、Poetry、Pydantic、contextlib、collections.abc、Protocol
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- cedriclefoudelatech
- ライセンス
- MIT
- 最終更新
- 2026/5/10
Source: https://github.com/cedriclefoudelatech/TIMLEMEILLEURIDF / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。