Guidelines for Flask Python development with best practices for blueprints, RESTful APIs, and application factories.
Install
npx skills add https://github.com/mindrally/skills --skill flask-pythonSKILL.md
Flask Python Development
You are an expert in Flask and Python web development. Follow these guidelines when writing Flask code.
Key Principles
- Write concise, technical responses with accurate Python examples
- Use functional, declarative programming; avoid classes except for Flask views
- Prefer iteration and modularization over code duplication
- Use descriptive variable names with auxiliary verbs (e.g.,
is_active,has_permission) - Use lowercase with underscores for directories and files (e.g.,
blueprints/user_routes.py) - Favor named exports for routes and utility functions
- Apply the Receive an Object, Return an Object (RORO) pattern where applicable
Python/Flask Standards
- Use
deffor function definitions - Implement type hints for all function signatures where possible
- Structure: Flask app initialization, blueprints, models, utilities, config
- Omit unnecessary curly braces in conditionals
- Use concise one-line syntax for simple conditional statements
Error Handling and Validation
- Handle errors and edge cases at function entry points
- Use early returns for error conditions to prevent deep nesting
- Place successful logic last in functions for improved readability
- Avoid unnecessary
elsestatements; use if-return pattern instead - Employ guard clauses for preconditions and invalid states
- Implement proper error logging with user-friendly messages
- Use custom error types or error factories for consistent handling
Required Dependencies
- Flask
- Flask-RESTful (RESTful API development)
- Flask-SQLAlchemy (ORM)
- Flask-Migrate (database migrations)
- Marshmallow (serialization/deserialization)
- Flask-JWT-Extended (JWT authentication)
Flask-Specific Guidelines
- Use Flask application factories for modularity and testing
- Organize routes using Flask Blueprints
- Leverage Flask-RESTful for class-based views
- Implement custom error handlers for different exception types
- Use Flask decorators:
before_request,after_request,teardown_request - Utilize Flask extensions for common functionalities
- Manage configurations via Flask's config object (development, testing, production)
- Implement logging using Flask's
app.logger - Handle authentication/authorization with Flask-JWT-Extended
Performance Optimization
- Use Flask-Caching for frequently accessed data
- Implement database query optimization (eager loading, indexing)
- Apply connection pooling for database connections
- Manage database sessions properly
- Use background tasks for time-consuming operations (e.g., Celery)
Key Conventions
- Use Flask's application context and request context appropriately
- Prioritize API performance metrics (response time, latency, throughput)
- Structure application with blueprints, clear separation of concerns, and environment variables
Database Interaction
- Use Flask-SQLAlchemy for ORM operations
- Implement database migrations via Flask-Migrate
- Properly manage SQLAlchemy sessions, ensuring closure after use
Serialization and Validation
- Use Marshmallow for object serialization/deserialization and input validation
- Create schema classes for each model for consistent handling
Authentication and Authorization
- Implement JWT-based authentication using Flask-JWT-Extended
- Use decorators for protecting routes requiring authentication
Testing
- Write unit tests using pytest
- Use Flask's test client for integration testing
- Implement test fixtures for database and application setup
API Documentation
- Use Flask-RESTX or Flasgger for Swagger/OpenAPI documentation
- Document all endpoints with request/response schemas
Deployment
- Use Gunicorn or uWSGI as WSGI HTTP Server
- Implement proper logging and monitoring in production
- Use environment variables for sensitive information and configuration
Related skills
entra-app-registrationmicrosoft606KGuides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.azure-messagingmicrosoft595KTroubleshoot and resolve issues with Azure Messaging SDKs for Event Hubs and Service Bus. Covers connection failures, authentication errors, message processing issues, and SDK configuration problems. WHEN: event hub SDK error, service bus SDK issue, messaging connection failure, AMQP error, event processor host issue, message lock lost, message lock expired, lock renewal, lock renewal batch, send timeout, receiver disconnected, SDK troubleshooting, azure messaging SDK, event hub consumer, servicentra-agent-idmicrosoft328KProvision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmi_path, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmi_path token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registsupabasesupabase298KUse when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, declarative schemas, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector); deb