python-guidelines について
python-guidelinesは、既存のコードベースでPythonを開発する際のコーディングとテストの規約を定めるスキルです。既存構造に沿った簡潔な変更、動作の検証、Googleスタイルのドキュメント文字列を重視し、実装判断の参考資料も提供します。
主な機能
- 01既存コードのパターンに沿った統合
- 02単純で目的の明確な関数を優先
- 03パッケージ管理に`uv`を使用
- 04Pythonコマンドによる動作確認
- 05Googleスタイルのドキュメント文字列規約
- 06用途別の参考ガイド
活用シーン
- 01既存のPythonプロジェクトで機能を実装
- 02不要な抽象化をコードレビュー
- 03Googleスタイルのドキュメント文字列を作成・修正
- 04変更案の提示前に動作を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fcakyon/ claude-codex-settings --skill python-guidelinesインストール後、Claude Code で/python-guidelinesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/effective-python-tips.mdgoogle-style-guide.mdidiomatic-patterns.mdzen-of-python.md詳細
Python ガイドライン
既存のコードに統合してください。後付けしないでください。
シンプルであることは、複雑であることに勝ります。フラットであることは、ネストされていることに勝ります。 エラーを黙って無視してはいけません。明示的に抑制する場合を除きます。 実装を説明するのが難しいなら、それは悪いアイデアです。
-- Python の禅(PEP 20)
コードの方針
- 既存の命名、インポート、シグネチャのパターンに合わせてください。既存のユーティリティとデータ構造を使用してください。
- 関数の目的は1つにしてください。汎用性を損なうような動作をハードコードしないでください。
- 2行以下の単純なラッパーは作成しないでください。インライン化してください。
- 1回しか使わない変数は、使用箇所にインライン化してください。
- 重大な理由がない限り、try/exceptを使わないでください。エラーは表面化させてください。
- コードを重複させないでください。
- 関数は独自に入力を検証してください。メイン処理にif-elseチェックを置かないでください。
- os.pathではなくpathlibを使用してください。
- MongoDB/Gemini/OpenAI/Claude/VoyageのAPIと時間のコストを考慮してください。
次のようにしないでください。
# Generate comment report only if requested
if include_comments:
comment_report = generate_comments_report(start_date, end_date, team, verbose)
else:
comment_report = ""
print(" Skipping comment analysis (disabled)")
次のようにしてください。
comment_report = generate_comments_report(start_date, end_date, team, verbose) if include_comments else ""
自問してください。「コードを追加しているのか、それとも既存のものに統合しているのか?」
抽象化よりシンプルさを優先
YAGNI:今は必要ないものは作らない。
仮定上の将来の要件に備えて作らないでください。現在のタスクで必要な場合にのみ、複雑さを加えてください。
次のことは避けてください。
- 実装が1つしかないのに抽象基底クラスを作成する
- 誰にも求められていない設定オプション
- 起こり得ない状況へのエラー処理
- 1つの関数を囲むラッパークラス
- 直接呼び出しで十分なのに依存性注入を使う
- 具体的な型が1つしかないのにジェネリック型パラメーターを使う
似たコードが3行あるほうが、時期尚早な抽象化より優れています。実際に3つ目のユースケースが現れてからリファクタリングしてください。それまでは行わないでください。
ただし、シンプルさは無秩序を意味しません。常に次の点を維持してください。
- 関数の内容を明確に示す名前
- 関連するコードをモジュール内で論理的にまとめる
- プロジェクト全体で一貫した命名規則
- I/Oとロジックを明確に分離する
- グローバル状態や副作用よりも明示的なパラメーターを使う
自問してください。「この抽象化は、今まさに抱えている問題を解決しているのか、それとも想像上の問題を解決しているのか?」
環境
- パッケージマネージャー:uv(pipではありません)
- 仮想環境:
source .venv/bin/activateまたはuv run python -c "..." - サードパーティ製パッケージ:
python -c "import pkg; print(pkg.__file__)"でソースを探し、Readしてください。
テストの規律
何事も決めつけないでください。コードの動作、パッケージ関数、データ構造に関する仮説を検証してから、計画を提案したりプランモードを終了したりするために、python -c "..." を実行してください。
自問してください。「これを前提に進める前に、python -c で検証したか?」
Googleスタイルのdocstring
- 要約:命令形(「Calculate」。 「Calculates」ではありません)
- Args:すべてのパラメーターについて、型と説明を記載します。デフォルト値は記載しません。インデントは4スペースです。
- 型:
int | strのようなユニオン、(N, M)のような大文字の形状、list/dict/tupleのような小文字の組み込み型、Any/Pathは大文字で始めます - Optional:
name (type, optional): 説明 - Returns:必ず
(type)の形式で括弧内に記載します。タプル型は使いません。複数の戻り値には名前を付けて個別に記載します。 - セクション:Examples(>>>)、Notes、References(プレーンテキストのみ)。セクションタイトルのインデントは0です。
- 省略するもの:何も返さない場合は「Returns:」、引数がない場合は「Args:」、重大な理由がない限り「Raises:」を省略します
- クラス:Attributesセクションのみを記載し、Methods/Argsは省略します。1行の記述を複数行に変更しないでください。
__init__:Argsのみを記載します。Examples/Notes/Methods/Referencesは記載しません。- テスト:docstringは1行のみとします。
- 既存の引数説明からデフォルト値を削除してください。最小限のExamplesは任意で追加できます。
自問してください。「新しい開発者は、このdocstringだけで関数を理解できるか?」
参照ファイル
コードを書く前に、該当するファイルを読んでください。書いた後ではありません。
references/idiomatic-patterns.md-- ループ、内包表記、アンパッキング、コンテキストマネージャー、データクラスを書くときに読みます。前後のコード例を含む 18 のイディオムreferences/zen-of-python.md-- 2 つの設計から選ぶときや、抽象化に存在意義があるか判断するときに読みます。注釈付きの PEP 20references/google-style-guide.md-- 例外、ミュータブルなデフォルト値、インポートのスタイル、命名、コメントについて判断するときに読みますreferences/effective-python-tips.md-- 既存のコードをレビューまたはリファクタリングするときに読みます。「Effective Python」(Brett Slatkin)からの重要なヒント