mcpField
P
python-project

python-project

github.com/julianobarbosa開発1553 回インストール1 週間前に更新
リポジトリ

python-project について

python-projectは、uvによるパッケージ管理とFlaskによるWebアプリ開発を扱う、現代的なPython開発向けスキルです。プロジェクト初期化とFlaskのひな形を作るスクリプトも含まれます。

主な機能

  1. 01uvでPythonプロジェクトと依存関係を管理
  2. 02Flaskアプリ開発のパターンを提示
  3. 03Ruffのチェックとフォーマットを設定
  4. 04mypyによる型チェック
  5. 05プロジェクトとFlaskの初期化スクリプト

活用シーン

  1. 01uvでPythonプロジェクトを開始
  2. 02Flaskアプリの構成を作成
  3. 03プロジェクトのlintとフォーマット
  4. 04mypyでPythonコードを型チェック

インストール

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

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill python-project

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
flask-patterns.md
uv-commands.md
scripts/
init-project.sh

詳細

Python プロジェクトスキル

uv パッケージマネージャーと Flask を使用した、Web コンポーネント向けのモダンな Python プロジェクト開発です。

クイックスタート

uv で新規プロジェクトを作成
# Initialize new project
uv init my-project
cd my-project

# Add dependencies
uv add flask pytest ruff mypy

# Run application
uv run python app.py

# Run with Flask
uv run flask run --debug

パッケージマネージャー:uv

すべての Python パッケージ管理に uv (astral-sh/uv) を使用します。pip、poetry、pyenv、virtualenv を置き換えるツールです。

よく使うコマンド
# Project management
uv init <name>              # Initialize project
uv add <package>            # Add dependency
uv remove <package>         # Remove dependency
uv sync                     # Sync dependencies from lockfile
uv lock                     # Generate lockfile

# Running
uv run <command>            # Run in project environment
uv run python script.py     # Run Python script
uv run pytest               # Run tests

# Tools (like pipx)
uvx <tool>                  # Run tool in ephemeral env
uv tool install <tool>      # Install tool globally

# Python versions
uv python install 3.12      # Install Python version
uv python pin 3.12          # Pin version for project

Web フレームワーク:Flask

Web アプリケーションには、軽量な WSGI マイクロフレームワークである Flask を使用します。

最小限の Flask アプリ
# app.py
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/api/data", methods=["GET", "POST"])
def api_data():
    if request.method == "POST":
        data = request.get_json()
        return jsonify({"status": "ok", "received": data})
    return jsonify({"message": "Hello, API!"})

if __name__ == "__main__":
    app.run(debug=True)
Flask プロジェクトの構成
my_flask_app/
├── app.py                  # Application entry
├── pyproject.toml          # uv project config
├── static/                 # CSS, JS, images
│   ├── css/
│   └── js/
├── templates/              # Jinja2 templates
│   ├── base.html
│   └── index.html
└── tests/
    └── test_app.py
Flask の実行
# Development
uv run flask run --debug

# With specific host/port
uv run flask run --host=0.0.0.0 --port=8080

プロジェクト設定

pyproject.toml
[project]
name = "my-project"
version = "0.1.0"
description = "Project description"
requires-python = ">=3.11"
dependencies = [
    "flask>=3.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=8.0",
    "ruff>=0.5",
    "mypy>=1.10",
]

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

[tool.ruff.lint]
select = ["E", "F", "I", "UP"]

[tool.mypy]
python_version = "3.11"
strict = true

[tool.pytest.ini_options]
testpaths = ["tests"]

コード品質

# Linting and formatting with ruff
uv run ruff check .          # Check for issues
uv run ruff check . --fix    # Auto-fix issues
uv run ruff format .         # Format code

# Type checking
uv run mypy .

# Testing
uv run pytest
uv run pytest -v --cov=src

スクリプト

  • scripts/init-project.sh - 標準的な構成で新しい Python プロジェクトを初期化します
  • scripts/setup-flask.sh - Flask アプリケーションのボイラープレートをセットアップします

参考資料

  • uv の完全なリファレンスについては、references/uv-commands.md を参照してください
  • Flask のベストプラクティスについては、references/flask-patterns.md を参照してください

コメント