Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

modern-python

`uv`・`ruff`・`ty` などのモダンなツールチェーンでPythonプロジェクトを構成します。新規プロジェクトの作成、スタンドアロンスクリプトの作成、または `pip` / `Poetry` / `mypy` / `black` からの移行時に使用してください。

description の原文を見る

Configures Python projects with modern tooling (uv, ruff, ty). Use when creating projects, writing standalone scripts, or migrating from pip/Poetry/mypy/black.

SKILL.md 本文

Modern Python

最新のPythonツーリングとベストプラクティスの ガイドです。trailofbits/cookiecutter-python に基づいています。

このスキルを使用する場合

  • 新しいPythonプロジェクトやパッケージを作成する場合
  • pyproject.toml の設定を行う場合
  • 開発ツール (linting、formatting、testing) を設定する場合
  • 外部依存関係を持つPythonスクリプトを記述する場合
  • レガシーツールからの移行を行う場合 (ユーザーが明示的に要求した場合)

このスキルを使用しない場合

  • ユーザーがレガシーツールを維持したい場合: 明示的に要求されている場合は既存のワークフローを尊重する
  • Python < 3.11 が必須の場合: これらのツールは最新のPythonを対象としている
  • 非Pythonプロジェクト: Pythonがメインではない混在するコードベース

避けるべきアンチパターン

避けるべき代わりに使用する
[tool.ty] python-version[tool.ty.environment] python-version
uv pip installuv adduv sync
依存関係を追加するために pyproject.toml を手動編集uv add <pkg> / uv remove <pkg>
hatchling ビルドバックエンドuv_build (シンプルで、ほとんどのケースに十分)
Poetryuv (高速、シンプル、優れたエコシステム統合)
requirements.txtスクリプトの場合は PEP 723、プロジェクトの場合は pyproject.toml
mypy / pyrightty (高速、Astral チームより)
[project.optional-dependencies] でのdev ツール管理[dependency-groups] (PEP 735)
仮想環境の手動アクティベーション (source .venv/bin/activate)uv run <cmd>
pre-commitprek (高速、Python ランタイムが不要)

主な原則:

  • 常に uv adduv remove を使用して依存関係を管理する
  • 仮想環境を手動でアクティベートまたは管理しない。すべてのコマンドで uv run を使用する
  • dev/test/docs 依存関係には [dependency-groups] を使用し、[project.optional-dependencies] は使用しない

デシジョンツリー

何を行っていますか?
│
├─ 依存関係を持つシングルファイルスクリプト?
│   └─ PEP 723 インラインメタデータを使用 (./references/pep723-scripts.md)
│
├─ 新しいマルチファイルプロジェクト (配布しない)?
│   └─ 最小限の uv セットアップ (下記の「クイックスタート」を参照)
│
├─ 新しい再利用可能なパッケージ/ライブラリ?
│   └─ 完全なプロジェクトセットアップ (下記の「フルセットアップ」を参照)
│
└─ 既存プロジェクトの移行?
    └─ 下記の「移行ガイド」を参照

ツール概要

ツール目的置き換える
uvパッケージ/依存関係管理pip、virtualenv、pip-tools、pipx、pyenv
ruffLinting と formattingflake8、black、isort、pyupgrade、pydocstyle
ty型チェックmypy、pyright (高速な代替手段)
pytestカバレッジ付きテストunittest
prekpre-commit フック (セットアップ)pre-commit (高速、Rust ネイティブ)

セキュリティツール

ツール目的実行タイミング
shellcheckシェルスクリプト lintingpre-commit
detect-secretsシークレット検出pre-commit
actionlintワークフロー構文検証pre-commit、CI
zizmorワークフローセキュリティ監査pre-commit、CI
pip-audit依存関係の脆弱性スキャンCI、手動
Dependabot依存関係の自動更新スケジュール実行

設定と使用方法については security-setup.md を参照してください。

クイックスタート: 最小プロジェクト

配布を目的としない単純なマルチファイルプロジェクト向け:

# uv でプロジェクトを作成
uv init myproject
cd myproject

# 依存関係を追加
uv add requests rich

# 開発用依存関係を追加
uv add --group dev pytest ruff ty

# コードを実行
uv run python src/myproject/main.py

# ツールを実行
uv run pytest
uv run ruff check .

フルプロジェクトセットアップ

ゼロから始める場合は、ユーザーに Trail of Bits の cookiecutter テンプレートを使用して、すでに設定されている完全なプロジェクトを起動するかどうかを確認してください。

uvx cookiecutter gh:trailofbits/cookiecutter-python

1. プロジェクト構造を作成

uv init --package myproject
cd myproject

以下の構造を作成します:

myproject/
├── pyproject.toml
├── README.md
├── src/
│   └── myproject/
│       └── __init__.py
└── .python-version

2. pyproject.toml を設定

完全な設定リファレンスについては pyproject.md を参照してください。

主要なセクション:

[project]
name = "myproject"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = []

[dependency-groups]
dev = [{include-group = "lint"}, {include-group = "test"}, {include-group = "audit"}]
lint = ["ruff", "ty"]
test = ["pytest", "pytest-cov"]
audit = ["pip-audit"]

[tool.ruff]
line-length = 100
target-version = "py311"

[tool.ruff.lint]
select = ["ALL"]
ignore = ["D", "COM812", "ISC001"]

[tool.pytest]
addopts = ["--cov=myproject", "--cov-fail-under=80"]

[tool.ty.terminal]
error-on-warning = true

[tool.ty.environment]
python-version = "3.11"

[tool.ty.rules]
# 新しいプロジェクトから厳密性を維持
possibly-unresolved-reference = "error"
unused-ignore-comment = "warn"

3. 依存関係をインストール

# すべての依存関係グループをインストール
uv sync --all-groups

# または特定のグループをインストール
uv sync --group dev

4. Makefile を追加

.PHONY: dev lint format test build

dev:
	uv sync --all-groups

lint:
	uv run ruff format --check && uv run ruff check && uv run ty check src/

format:
	uv run ruff format .

test:
	uv run pytest

build:
	uv build

移行ガイド

ユーザーがレガシーツールからの移行を要求した場合:

requirements.txt + pip からの移行

まず、コードの性質を決定します:

スタンドアロンスクリプトの場合: PEP 723 インラインメタデータに変換 (pep723-scripts.md を参照)

プロジェクトの場合:

# 既存プロジェクトで uv を初期化
uv init --bare

# uv を使用して依存関係を追加 (pyproject.toml を手動編集しない)
uv add requests rich  # 各パッケージを追加

# または requirements.txt からインポート (各パッケージを確認してから追加)
# 注: 複雑なバージョン指定子は手動対応が必要な場合があります
grep -v '^#' requirements.txt | grep -v '^-' | grep -v '^\s*$' | while read -r pkg; do
    uv add "$pkg" || echo "Failed to add: $pkg"
done

uv sync

その後:

  1. requirements.txtrequirements-dev.txt を削除
  2. 仮想環境を削除 (venv/.venv/)
  3. uv.lock をバージョン管理に追加

setup.py / setup.cfg からの移行

  1. uv init --bare を実行して pyproject.toml を作成
  2. uv add を使用して install_requires から各依存関係を追加
  3. 開発用依存関係に uv add --group dev を使用
  4. 非依存メタデータ (name、version、description など) を [project] にコピー
  5. setup.pysetup.cfgMANIFEST.in を削除

flake8 + black + isort からの移行

  1. uv remove で flake8、black、isort を削除
  2. .flake8、pyproject.toml の [tool.black][tool.isort] 設定を削除
  3. ruff を追加: uv add --group dev ruff
  4. ruff 設定を追加 (ruff-config.md を参照)
  5. uv run ruff check --fix . を実行して修正を適用
  6. uv run ruff format . を実行してフォーマット

mypy / pyright からの移行

  1. uv remove で mypy/pyright を削除
  2. mypy.inipyrightconfig.json、または [tool.mypy]/[tool.pyright] セクションを削除
  3. ty を追加: uv add --group dev ty
  4. uv run ty check src/ を実行

クイックリファレンス: uv コマンド

コマンド説明
uv init新しいプロジェクトを作成
uv init --package配布可能なパッケージを作成
uv add <pkg>依存関係を追加
uv add --group dev <pkg>依存関係グループに追加
uv remove <pkg>依存関係を削除
uv sync依存関係をインストール
uv sync --all-groupsすべての依存関係グループをインストール
uv run <cmd>venv でコマンドを実行
uv run --with <pkg> <cmd>一時的な依存関係で実行
uv buildパッケージをビルド
uv publishPyPI に公開

--with を使用したアドホック依存関係

プロジェクトに含まれていないパッケージが必要なワンオフコマンドに uv run --with を使用します:

# 一時的なパッケージで Python を実行
uv run --with requests python -c "import requests; print(requests.get('https://httpbin.org/ip').json())"

# 一時的な依存関係でモジュールを実行
uv run --with rich python -m rich.progress

# 複数のパッケージ
uv run --with requests --with rich python script.py

# プロジェクト依存関係と組み合わせ (既存の venv に追加)
uv run --with httpx pytest  # プロジェクト依存関係 + httpx

--withuv add をどちらを使用するか:

  • uv add: パッケージがプロジェクト依存関係 (pyproject.toml/uv.lock に追加)
  • --with: ワンオフ使用、テスト、またはプロジェクト外のスクリプト

完全なリファレンスについては uv-commands.md を参照してください。

クイックリファレンス: 依存関係グループ

[dependency-groups]
dev = ["ruff", "ty"]
test = ["pytest", "pytest-cov", "hypothesis"]
docs = ["sphinx", "myst-parser"]

インストール: uv sync --group dev --group test

ベストプラクティスチェックリスト

  • パッケージに src/ レイアウトを使用
  • requires-python = ">=3.11" を設定
  • select = ["ALL"] と明示的な無視で ruff を設定
  • 型チェックに ty を使用
  • テストカバレッジの最小値を強制 (80% 以上)
  • dev ツールには extras ではなく依存関係グループを使用
  • uv.lock をバージョン管理に追加
  • スタンドアロンスクリプトに PEP 723 を使用

次のステップ

  • migration-checklist.md - ステップバイステップの移行クリーンアップ
  • pyproject.md - 完全な pyproject.toml リファレンス
  • uv-commands.md - uv コマンドリファレンス
  • ruff-config.md - Ruff linting/formatting 設定
  • testing.md - pytest とカバレッジセットアップ
  • pep723-scripts.md - PEP 723 インラインスクリプトメタデータ
  • prek.md - prek を使用した高速 pre-commit フック
  • security-setup.md - セキュリティフックと依存関係スキャン
  • dependabot.md - 依存関係の自動更新

ライセンス: CC-BY-SA-4.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
trailofbits
リポジトリ
trailofbits/skills
ライセンス
CC-BY-SA-4.0
最終更新
不明

Source: https://github.com/trailofbits/skills / ライセンス: CC-BY-SA-4.0

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: trailofbits · trailofbits/skills · ライセンス: CC-BY-SA-4.0