init-flask-backend

根据规范文档搭建标准 Flask API 后端:应用工厂、分层架构(Routes → Permission → Service → Model)、Flask-RESTful Resource、统一响应与钩子。详细约定见 references/REFERENCE.md。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "init-flask-backend" with this command: npx skills add hillstone-networks/agent-skills/hillstone-networks-agent-skills-init-flask-backend

Flask API 后端项目生成

根据规范文档搭建标准 Flask API 后端:应用工厂、分层架构(Routes → Permission → Service → Model)、Flask-RESTful Resource、统一响应与钩子。详细约定见 references/REFERENCE.md。

何时使用

  • 用户要求「生成 Flask 后端」「搭建 REST API 项目」

  • 用户需要初始化项目规范,需要据此生成/补全项目骨架与示例代码

生成流程

  1. 确认范围

向用户确认:

  • 项目名与包名:如 my_api ,对应目录 app/

  • 是否需要权限模块:JWT + Casbin/RBAC(可选 permission/ )

  • 是否需要链路跟踪:OpenTelemetry + OTLP(可选,见 REFERENCE)

  • 已有文件:是否已有部分文件,仅补全缺失部分

  1. 生成目录结构

按 references/REFERENCE.md 的「推荐目录结构」创建完整目录树,保证以下存在:

  • app/ :init.py (应用工厂)、config.py 、extensions.py

  • app/routes/ :init.py 、main_api.py ,业务模块 *_api.py

  • app/models/ 、app/service/ 、app/schemas/

  • 可选:app/permission/ 、app/utils/

  • tests/ (含 conftest.py )、scripts/ 、docs/ 或 context/

  • 根目录:.env.example 、pyproject.toml (含 [tool.uv] 或兼容 uv)、README.md 、可选 Dockerfile

可直接参考 assets/project-structure.txt。依赖管理使用 uv,见 assets/uv-usage.md。

  1. 核心文件内容要点
  • app/init.py:create_app(config_name) 应用工厂;初始化扩展(extensions.py )、加载配置、注册 Blueprint(可调用 register_all_blueprints(app) )、注册 before_request /after_request /teardown_request /teardown_appcontext 及全局 errorhandler 。

  • app/config.py:按环境(development/test/production)加载配置,敏感项从环境变量读取。

  • app/extensions.py:集中定义 Flask-SQLAlchemy、Redis、JWT、Casbin 等扩展实例(不在此处 init_app,在 create_app 中调用)。

  • app/utils/api_util.py:统一响应格式(如 AppResponse 、{code, message, data} )、自定义 Api 的 JSON 封装、统一异常处理。

  • app/routes/main_api.py:健康检查等通用接口;Blueprint 命名与 *_api.py 约定一致,导出 *_app (如 main_app )供自动注册。

  • 业务路由:每个模块一个 *_api.py ,内部创建 Blueprint + Api,定义 Resource 类;Resource 仅做「解析参数 → 调 Service → 返回 AppResponse/字典」,不直接操作 Model。

  • register_all_blueprints:实现见 REFERENCE,扫描 app/routes 下 *_api.py ,按约定名(文件名去 _api 加 _app )自动 register_blueprint。

  1. 分层与约定
  • 路由层:不直接访问 DB/Model;仅解析请求、调用 Service、返回统一结构。

  • Service 层:业务逻辑、事务、外部调用;不依赖 request /g ,通过参数接收上下文,便于单测。

  • Model 层:仅负责 ORM 与持久化。

  • 权限:JWT 在 before_request 或中间件中解析并写入 g.current_user ;Resource 方法上使用 @permission_required 等装饰器做鉴权。

  1. 钩子与可观测性
  • before_request:将 JWT 解析结果写入 g.current_user ,不做重逻辑。

  • after_request:添加 X-Trace-Id 等响应头,可选 Token 刷新;必须返回 response。

  • teardown_request / teardown_appcontext:请求级/应用上下文级清理与日志。

  • 若启用 OpenTelemetry:在 create_app 中按 REFERENCE 初始化 TracerProvider、instrument Flask,并在 after_request 中写 X-Trace-Id 。

  1. 交付物清单

生成或补全后,应包含:

  • 完整目录与占位 init.py /空文件

  • app/init.py (create_app + register_all_blueprints + 钩子)

  • app/config.py 、app/extensions.py

  • app/utils/api_util.py (AppResponse、统一 Api)

  • app/routes/main_api.py 及至少一个业务模块示例(如 user_api.py )

  • 占位或示例的 app/models/ 、app/service/ 、app/schemas/

  • .env.example 、pyproject.toml (含 uv 可用的依赖与脚本)、README.md ,可选 Dockerfile 、CI 配置

  • tests/conftest.py 及至少一个 API 测试示例

  • README 或独立说明中包含「用户如何使用」:环境准备、uv 安装与常用命令,见 assets/uv-usage.md

依赖与 UV 项目管理

  • 使用 uv 管理依赖与虚拟环境;不生成 requirements.txt ,以 pyproject.toml
  • uv.lock 为准。
  • pyproject.toml:[project] 中声明依赖(flask、flask-restful、flask-sqlalchemy 等);可用 [project.scripts] 暴露入口如 app = "app:create_app" ;可选 [tool.uv] 配置。

  • 生成后提示用户按 assets/uv-usage.md 操作:安装 uv → 进入项目 → uv sync → uv run flask run 或 uv run pytest 。

资产与参考

  • 规范与结构详解:references/REFERENCE.md

  • 目录树清单:assets/project-structure.txt

  • 应用工厂与 Blueprint 注册示例:assets/create_app_snippet.py

  • 环境变量示例:assets/env-example.txt(生成 .env.example 时参考)

  • 用户如何使用 UV:assets/uv-usage.md(可整段写入 README 或单独提供给用户)

  • pyproject.toml 示例(uv):assets/pyproject-uv.example.toml

校验(可选)

生成后可用脚本检查必要文件与目录是否存在:

python scripts/validate_structure.py /path/to/project

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

project-initializer

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

init-taro-miniapp

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

init-react-frontend

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

backend-api-cicd

No summary provided by upstream source.

Repository SourceNeeds Review