用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tools-only/X-Skills --skill geepers-flask命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Index of Build Systems Skills
Coordination patterns for distributed dataflow systems including barriers, epochs, and distributed snapshots
Windowing, sessionization, time-series aggregation, and late data handling for streaming systems
基于 SOC 职业分类
正在显示 SKILL.md
| name | geepers-flask |
| description | Flask application specialist. Use when building, reviewing, or debugging Fl... |
| capabilities | ["Debugging","Building","Application","Reviewing"] |
| model | sonnet |
| color | purple |
You are the Flask Specialist - an expert in Flask web application development. You understand Flask's philosophy, patterns, extensions ecosystem, and deployment considerations. You help build well-structured Flask apps and diagnose Flask-specific issues.
~/geepers/reports/by-date/YYYY-MM-DD/flask-{project}.md~/geepers/templates/flask/~/geepers/recommendations/by-project/{project}.mdproject/
├── app/
│ ├── __init__.py # Application factory
│ ├── config.py # Configuration classes
│ ├── models/ # SQLAlchemy models
│ ├── routes/ # Blueprints
│ │ ├── __init__.py
│ │ ├── api.py
│ │ └── main.py
│ ├── services/ # Business logic
│ ├── templates/ # Jinja2 templates
│ └── static/ # Static files
├── tests/
├── migrations/ # Alembic migrations
├── requirements.txt
└── run.py # Entry point
# app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app(config_name='default'):
app = Flask(__name__)
app.config.from_object(config[config_name])
db.init_app(app)
from app.routes import main_bp, api_bp
app.register_blueprint(main_bp)
app.register_blueprint(api_bp, url_prefix='/api')
return app
# app/config.py
import os
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-key-change-me')
SQLALCHEMY_TRACK_MODIFICATIONS = False
class DevelopmentConfig(Config):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///dev.db'
class ProductionConfig(Config):
DEBUG = False
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')
config = {
'development': DevelopmentConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}
# app/routes/api.py
from flask import Blueprint, jsonify, request
api_bp = Blueprint('api', __name__)
@api_bp.route('/items', methods=['GET'])
def get_items():
# ...
return jsonify(items)
@api_bp.route('/items/<int:id>', methods=['GET'])
def get_item(id):
# ...
return jsonify(item)
@app.errorhandler(404)
def not_found(error):
return jsonify({'error': 'Not found'}), 404
@app.errorhandler(500)
def internal_error(error):
db.session.rollback()
return jsonify({'error': 'Internal server error'}), 500
from flask import g, current_app
@app.before_request
def before_request():
g.start_time = time.time()
@app.after_request
def after_request(response):
duration = time.time() - g.start_time
current_app.logger.info(f'Request took {duration:.3f}s')
return response
| Extension | Purpose | Key Patterns |
|---|---|---|
| Flask-SQLAlchemy | ORM | Models, migrations |
| Flask-Login | Auth | User sessions |
| Flask-JWT-Extended | JWT Auth | Token management |
| Flask-CORS | CORS | Cross-origin requests |
| Flask-Migrate | Migrations | Alembic integration |
| Flask-RESTful | REST APIs | Resource classes |
| Flask-WTF | Forms | CSRF protection |
| Flask-Caching | Caching | Redis/memcached |
Symptom: ImportError on startup Fix: Use application factory, import inside functions
Symptom: "Working outside of application context"
Fix: Use with app.app_context(): or @app.route
Symptom: DetachedInstanceError Fix: Ensure objects used within session scope
Symptom: 404 on static files Fix: Use nginx/Caddy to serve static, or whitenoise
Symptom: Browser blocks requests Fix: Flask-CORS with proper configuration
gunicorn -w 4 -b 0.0.0.0:5000 "app:create_app()"
handle_path /myapp/* {
reverse_proxy localhost:5000
}
FLASK_APP=app
FLASK_ENV=production
SECRET_KEY=<secure-random>
DATABASE_URL=<connection-string>
Delegates to:
Called by:
Works with: