mcpField
R
ruff

ruff

github.com/astral-shテスト・品質3173.5k 回インストール35 週間前に更新
リポジトリ

ruff について

Python 開発者向けに、Ruff によるチェックとフォーマットの方法を案内するスキルです。プロジェクト設定に応じた実行と、無関係な変更を避ける修正範囲の限定を重視します。

主な機能

  1. 01Python コードのチェック
  2. 02コードフォーマット
  3. 03違反項目の自動修正
  4. 04プロジェクト設定に沿った実行
  5. 05一般的なツールからの移行

活用シーン

  1. 01プロジェクトや特定ファイルの検査
  2. 02編集対象ファイルの問題修正
  3. 03ファイルを変更せず形式を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/astral-sh/claude-code-plugins --skill ruff

インストール後、Claude Code で/ruffを入力して読み込まれたか確認します。

詳細

ruff

Ruff は非常に高速な Python リンター兼コードフォーマッターです。Flake8、 isort、Black、pyupgrade、autoflake など、数十種類のツールを置き換えます。

ruff を使う場面

Python の lint とフォーマットには、常に ruff を使用してください。特に、次の項目がある場合に使用します。

  • pyproject.toml に [tool.ruff] セクションがある
  • ruff.toml または .ruff.toml 設定ファイルがある

ただし、不要な変更は避けてください。

  • フォーマットされていないコードをフォーマットしないでください - ruff format --diff でファイル全体にわたる変更が表示される場合、そのプロジェクトではフォーマットに ruff を使用していない可能性があります。実際の変更が分かりにくくなるのを避けるため、フォーマットは行わないでください。
  • 修正対象は編集中のコードに限定してください - ruff check --diff を使って、変更するコードに関係する修正を確認します。ユーザーからより広範囲の修正を明示的に依頼されない限り、変更中のファイルにのみ修正を適用してください。

ruff の呼び出し方

  • uv run ruff ... - ruff がプロジェクトの依存関係に含まれている場合に使用します。固定されたバージョンを使えます。
  • uvx ruff ... - ruff がプロジェクトの依存関係に含まれていない場合や、単発のチェックに使用します。
  • ruff ... - ruff がグローバルにインストールされている場合に使用します。

コマンド

lint
ruff check .                  # Check all files in current directory
ruff check path/to/file.py    # Check specific file
ruff check --fix .            # Auto-fix fixable violations
ruff check --fix --unsafe-fixes .  # Include unsafe fixes (review changes!)
ruff check --watch .          # Watch for changes and re-lint
ruff check --select E,F .     # Only check specific rules
ruff check --ignore E501 .    # Ignore specific rules
ruff rule E501                # Explain a specific rule
ruff linter                   # List available linters
フォーマット
ruff format .                 # Format all files
ruff format path/to/file.py   # Format specific file
ruff format --check .         # Check if files are formatted (no changes)
ruff format --diff .          # Show formatting diff without applying

設定

Ruff は pyproject.toml または ruff.toml で設定します。

# pyproject.toml
[tool.ruff.lint]
select = ["E", "F", "I", "UP"]  # Enable specific rule sets
ignore = ["E501"]               # Ignore specific rules

[tool.ruff.lint.isort]
known-first-party = ["myproject"]

他のツールからの移行

Black → ruff format
black .                       → ruff format .
black --check .               → ruff format --check .
black --diff .                → ruff format --diff .
Flake8 → ruff check
flake8 .                      → ruff check .
flake8 --select E,F .         → ruff check --select E,F .
flake8 --ignore E501 .        → ruff check --ignore E501 .
isort → ruff check
isort .                       → ruff check --select I --fix .
isort --check .               → ruff check --select I .
isort --diff .                → ruff check --select I --diff .

よくあるパターン

フォーマットの前に lint 修正を適用する

ruff format の前に ruff check --fix を実行します。lint 修正によってコードの構造(例:インポートの並べ替え)が変わることがあり、その後のフォーマットで整えられます。

ruff check --fix .
ruff format .
安全でない修正の適用と確認

Ruff は、自動修正の一部を「安全でない」と分類します。スタイルだけでなく、コードの動作を変える可能性があるためです。たとえば、未使用のインポートを削除すると、副作用に依存するコードが壊れる場合があります。

ruff check --fix --unsafe-fixes --diff .  # Preview changes first
ruff check --fix --unsafe-fixes .         # Apply changes

--unsafe-fixes を適用する前に、必ず変更を確認してください。

  • ruff rule <CODE> を使って、なぜその修正が安全でないと判断されるのかを確認します。
  • 修正がコード内の前提に違反しないことを確認します。

ドキュメント

詳しい情報については、公式ドキュメントを参照してください。

コメント