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)
- 已有文件:是否已有部分文件,仅补全缺失部分
2. 生成目录结构
按 references/REFERENCE.md 的「推荐目录结构」创建完整目录树,保证以下存在:
app/:__init__.py(应用工厂)、config.py、extensions.pyapp/routes/:__init__.py、main_api.py,业务模块*_api.pyapp/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。
3. 核心文件内容要点
- 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。
4. 分层与约定
- 路由层:不直接访问 DB/Model;仅解析请求、调用 Service、返回统一结构。
- Service 层:业务逻辑、事务、外部调用;不依赖
request/g,通过参数接收上下文,便于单测。 - Model 层:仅负责 ORM 与持久化。
- 权限:JWT 在 before_request 或中间件中解析并写入
g.current_user;Resource 方法上使用@permission_required等装饰器做鉴权。
5. 钩子与可观测性
- 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。
6. 交付物清单
生成或补全后,应包含:
- 完整目录与占位
__init__.py/空文件 app/__init__.py(create_app + register_all_blueprints + 钩子)app/config.py、app/extensions.pyapp/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
More from hillstone-networks/agent-skills
project-initializer
Scaffolds new projects with README.md, AGENTS.md, and CI/CD (GitLab CI, GitHub Actions). Handles project type (generic / Flask backend / React frontend / Taro miniapp), tech stack, coding standards, quality level, and SDD (OpenSpec, SpecKit, GSD). All init flows (Flask, React, Taro) and conventions (backend-python-cicd, frontend-codegen, flask-backend-codegen, QA/testing, agent-roles/subagents) are built-in; no separate skills. Docs default to Chinese. Use when creating a project, initializing a repo, or setting up CI/CD/SDD.
13init-taro-miniapp
Initializes a Taro mini-program with npx @tarojs/cli init <projectName>; after init requires npm install, then creates directories under src, configures dev proxy for API, and may add/update README and AGENTS.md. No other file or config changes. Use when scaffolding a Taro/mini-program project.
8frontend-codegen
Generates React frontend code following project conventions: reuse-first (utils/components), UI vs business component split, data-driven routes, test-first (red/green), function components. When adding third-party libs, presents 3 options with pros/cons for user confirmation. Use when implementing features, pages, or components in a React + Ant Design + TypeScript + Vite project.
7flask-backend-codegen
项目规范生成 Flask API 后端代码(路由、Service、Model、Schema、权限策略与测试);开发中优先使用常见中间件,配置写入 .env.example、用法在 .env 补充。在用户要新增接口、新资源模块、或按规范生成/补全后端代码时使用。
7init-react-frontend
Scaffolds a new React frontend with Vite (Rolldown), React Compiler, TypeScript, Ant Design, react-router, Zustand, Vitest, jsdom, Tailwind CSS, Axios. Uses create-vite in Rolldown form with React + Compiler + TS by default. Creates utils, consts, route, components, test directories (route separate from consts); includes unit/component tests and end-to-end (e2e) testing. Optional CI/CD: defaults to GitLab CI, frontend built as nginx Docker image. All dependencies use latest versions. Use when initializing a frontend project or setting up React + TypeScript + Vite stack.
7backend-python-cicd
根据 GitLab CI 与 Docker 多阶段构建规范,生成或校验 .gitlab-ci.yml、分支约定与部署脚本;强调先本地 Docker 构建测试、再 Git 提交触发流水线;必须使用私有镜像源参考(尤其 Python 基础镜像与 pip/uv 源)。文档中的 Docker 与 Git 命令均可直接执行。在用户要配置 GitLab CI、Docker 流水线、分支策略或部署流程时使用。
4