About python-project
python-project is a skill for modern Python development, using uv for package management and Flask for web applications. It also provides scripts to initialize projects and Flask boilerplate.
Key features
- 01Manage Python projects and dependencies with uv
- 02Use Flask patterns for web applications
- 03Configure Ruff linting and formatting
- 04Run mypy type checks
- 05Initialize projects and Flask boilerplate with scripts
Use cases
- 01Start a Python project with uv
- 02Set up a Flask application structure
- 03Lint and format a project
- 04Check Python code with mypy
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill python-projectAfter installing, type/python-projectin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/flask-patterns.mduv-commands.mdscripts/init-project.shDetails
From the project READMEPython Project Skill
Modern Python project development using uv package manager and Flask for web components.
Quick Start
New Project with 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
Package Manager: uv
Use uv (astral-sh/uv) for all Python package management. It replaces pip, poetry, pyenv, and virtualenv.
Common Commands
# 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 Framework: Flask
Use Flask for web applications - lightweight WSGI micro-framework.
Minimal Flask App
# 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 Project Structure
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
Run Flask
# Development
uv run flask run --debug
# With specific host/port
uv run flask run --host=0.0.0.0 --port=8080
Project Configuration
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"]
Code Quality
# 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
scripts/init-project.sh- Initialize new Python project with standard structurescripts/setup-flask.sh- Set up Flask application boilerplate
References
- See
references/uv-commands.mdfor complete uv reference - See
references/flask-patterns.mdfor Flask best practices
Comments
Markdown supported