code-quality について
Pythonプロジェクト向けのコード品質スキルです。RuffとMypyを実行し、必要に応じてpytest、自動修正、コード簡素化も行います。既定では変更済みファイルを対象とし、synapse/全体も検査できます。
主な機能
- 01Ruffによるリンティング
- 02Mypyによる型チェック
- 03pytestの任意実行
- 04Ruffによる自動修正
- 05コード簡素化の任意実行
活用シーン
- 01最近変更したPythonファイルの検査
- 02synapse/全体のチェック
- 03Ruffの問題の自動修正
- 04チェック通過後のテスト実行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ s-hiraoku/ synapse-a2a --skill code-qualityインストール後、Claude Code で/code-qualityを入力して読み込まれたか確認します。
詳細
コード品質チェック
このスキルでは、コード品質ツール(ruff、mypy、pytest)を実行し、必要に応じてコードを簡素化します。
使用方法
/code-quality [options]
オプション
--allまたは-a:すべての synapse/ ファイルに対して実行します(デフォルトでは最近変更されたファイルのみ)--no-simplify:コード簡素化エージェントをスキップします(デフォルトでは、チェックがすべて成功した後に code-simplifier を実行します)--fixまたは-f:--fixフラグを使って ruff の問題を自動修正します--testまたは-t:lint が成功した後に pytest を実行します--full:テストを含むすべてのチェックを実行します(--fix --testと同等です)
ワークフロー
ステップ 1:対象ファイルの特定
--all フラグが指定された場合:
synapse/ディレクトリ内のすべてのファイルを対象にします
それ以外の場合:
git diff --name-only HEAD~1を実行して、最近変更されたファイルを取得しますsynapse/またはtests/内の.pyファイルのみを対象にします
ステップ 2:Ruff リンターの実行
ruff check [files]
--fix フラグが指定された場合:
ruff check --fix [files]
見つかったエラーを報告します。修正後もエラーが残る場合は停止して報告します。
ステップ 3:Mypy 型チェッカーの実行
uv run mypy [files]
見つかった型エラーを報告します。エラーがある場合は停止して報告します。
ステップ 4:テストの実行(--test または --full の場合)
--test または --full フラグが指定され、かつ ruff/mypy が成功した場合:
pytest
変更されたファイルに関連する特定のテストを実行する場合:
pytest tests/ -v
テストの失敗を報告します。
ステップ 5:コード簡素化の実行(デフォルト)
デフォルトでは、すべてのチェックが成功した後に code-simplifier を実行します。--no-simplify フラグでスキップします。
code-simplifier:code-simplifier エージェントを使って、最近変更されたコードを簡素化します:
Task tool with subagent_type: code-simplifier:code-simplifier
Prompt: Simplify and refine the recently modified code in [files].
Look for opportunities to reduce duplication, simplify conditionals,
and improve readability while maintaining all functionality.
ステップ 6:結果の報告
以下をまとめます:
- チェックしたファイル数
- Ruff の結果(成功/失敗、
--fixを指定した場合は修正されたエラー) - Mypy の結果(成功/失敗)
- Pytest の結果(成功/失敗、未実行の場合はスキップ)
- コード簡素化の結果(デフォルトでは実行、
--no-simplifyを指定した場合はスキップ)
エラー処理
エラーが見つかった場合:
- Ruff のエラー:
--fixが指定されている場合は、まず自動修正を試みます。残ったエラーをファイル名:行番号の形式で報告します。 - Mypy のエラー:型エラーをファイル名:行番号の形式で報告します。エラーメッセージに基づいて修正方法を提案します。
- テストの失敗:失敗したテスト名とアサーションエラーを報告します。テストが失敗した場合、簡素化には進みません。
例
最近の変更を基本チェックする
/code-quality
自動修正を使ってすべてのファイルをチェックする
/code-quality --all --fix
テストを含む完全な品質チェック
/code-quality --full
テストのみを実行する
/code-quality --test
コードの簡素化をスキップする
/code-quality --no-simplify
省略形
/lint # Same as /code-quality (includes simplification)
/check # Same as /code-quality
/lint -a -f # All files with auto-fix
/lint -t # With tests
/lint --full # Full check (--fix --test)
/lint --no-simplify # Skip simplification
ツールの設定
このプロジェクトでは、以下の設定(pyproject.toml から取得)を使用します:
Ruff
- 対象:Python 3.10
- 行の長さ:88
- ルール:E、F、I、UP、B、SIM
- 無視するルール:E501、B008
- 除外対象:synapse/proto/a2a_pb2*.py
Mypy
- disallow_untyped_defs を有効にした strict モード
- テストには緩和されたルールを適用(ignore_errors)
- Proto ファイルは除外
Pytest
- asyncio_mode:auto
- 実行方法:
pytestまたはpytest tests/ -v
コメント
Markdown 対応