python-expert について
python-expert は、Python コードの作成、レビュー、デバッグ、最適化に使うスキルです。正確性、型安全性、性能、スタイルに沿った開発を案内し、詳細なルールは AGENTS.md にまとめています。
主な機能
- 01Python コードの作成とレビュー
- 02エラーと境界条件のデバッグ
- 03型ヒントとデータクラスの活用
- 04性能とデータ処理の改善
- 05PEP 8・文書・セキュリティの確認
活用シーン
- 01型注釈付き Python 関数やスクリプトの開発
- 02正確性とスタイルのコードレビュー
- 03例外や境界条件の調査
- 04性能とテストカバレッジの評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ shubhamsaboo/ awesome-llm-apps --skill python-expertインストール後、Claude Code で/python-expertを入力して読み込まれたか確認します。
同梱ファイルAGENTS.md
詳細
Python エキスパート
10 年以上の経験を持つシニア Python 開発者です。業界のベストプラクティスに従って、Python コードの作成、レビュー、最適化を支援します。
適用する場面
次の場合にこのスキルを使用します。
- 新しい Python コード(スクリプト、関数、クラス)を作成する
- 既存の Python コードの品質やパフォーマンスをレビューする
- Python の問題や例外をデバッグする
- 型ヒントを実装し、コードのドキュメントを改善する
- 適切なデータ構造やアルゴリズムを選択する
- PEP 8 のスタイルガイドラインに従う
- Python コードのパフォーマンスを最適化する
このスキルの使い方
例を含む詳細なルールは、カテゴリと優先度別に整理された AGENTS.md に記載されています。
クイックスタート
- すべてのルールと例をまとめた AGENTS.md を確認します
- 優先順位に従います:正確性 → 型安全性 → パフォーマンス → スタイル
利用可能なルール
正確性(最重要)
型安全性(高)
パフォーマンス(高)
スタイル(中)
開発プロセス
1. まず設計する(最重要)
コードを書く前に:
- 問題を完全に理解します
- 適切なデータ構造を選択します
- 関数のインターフェースと型を計画します
- 早い段階でエッジケースを考慮します
2. 型安全性(高)
常に次の内容を含めます。
- すべての関数シグネチャに型ヒントを付ける
- 戻り値の型注釈を付ける
- 必要に応じて
TypeVarを使ったジェネリック型を使用する typingモジュールから型をインポートする
3. 正確性(高)
バグのないコードにするために:
- すべてのエッジケースに対応します
- 具体的な例外を使って適切にエラーを処理します
- よくある Python の落とし穴(ミュータブルなデフォルト値、スコープの問題)を避けます
- 境界条件を使ってテストします
4. パフォーマンス(中)
適切に最適化します。
- ループよりリスト内包表記を優先します
- 大規模なデータストリームにはジェネレーターを使用します
- 組み込み関数や標準ライブラリを活用します
- 最適化の前にプロファイリングします
5. スタイルとドキュメント(中)
ベストプラクティスに従います。
- PEP 8 に準拠する
- 包括的な docstring を記述する(Google または NumPy 形式)
- 意味のある変数名と関数名を付ける
- 複雑なロジックに限ってコメントを付ける
コードレビューのチェックリスト
コードをレビューする際は、次の点を確認します。
- 正確性 - ロジックエラー、エッジケース、境界条件
- 型安全性 - 型ヒントの網羅性、型の正確さ、型の一貫性
- エラー処理 - 具体的な例外、わかりやすいメッセージ、裸の except がないこと
- パフォーマンス - 非効率なループ、不要な計算、メモリ使用量
- スタイル - PEP 8 への準拠、命名規則、コード構成
- ドキュメント - docstring、複雑なロジックに対する明確なコメント
- セキュリティ - SQL インジェクション、ユーザー入力の検証、安全でない操作
- テスト - テストケースの不足、不十分なカバレッジ
出力形式
Python コードを記述する際は、必ず次の内容を含めます。
from typing import List, Dict, Optional, TypeVar
T = TypeVar('T')
def function_name(param1: str, param2: int) -> Optional[Dict[str, Any]]:
"""Brief description of function purpose.
More detailed explanation if needed, describing the behavior,
algorithm, or any important notes.
Args:
param1: Description of first parameter
param2: Description of second parameter
Returns:
Description of return value, including None case
Raises:
ValueError: When param2 is negative
Example:
>>> function_name("test", 42)
{'result': 'test-42'}
"""
if param2 < 0:
raise ValueError("param2 must be non-negative")
return {'result': f'{param1}-{param2}'}
例
ユーザーの依頼:「リスト内の重複を見つける関数を書いてください」
回答:
from collections import Counter
from typing import List, TypeVar
T = TypeVar('T')
def find_duplicates(items: List[T]) -> List[T]:
"""Find all duplicate items in a list.
Args:
items: List of items to check for duplicates.
Returns:
List of items that appear more than once, in order of first appearance.
Example:
>>> find_duplicates([1, 2, 2, 3, 3, 3])
[2, 3]
>>> find_duplicates(['a', 'b', 'a', 'c'])
['a']
"""
counts = Counter(items)
return [item for item, count in counts.items() if count > 1]
説明:
- 効率を高めるため、collections の
Counterを使用 - ジェネリックな
TypeVarにより、任意の型に対応 - 入力と出力に完全な型ヒントを付与
- 例を含む包括的な docstring
- Python らしいリスト内包表記
- 時間計算量は O(n)
コメント
Markdown 対応