name: python-flask-vue-creator description: "创建 Flask + Vue.js 全栈项目,采用单端口架构、uv 依赖管理、结构化日志和生产级前端设计。当用户要求以下操作时触发:创建新的 Flask+Vue 项目、搭建 Web 应用、构建全栈 Python+Vue 应用、初始化 Flask Web 项目、设置单端口 Flask 前后端项目。触发词:新建项目、创建项目、搭建项目、Flask项目、Vue项目。"
搭建 Flask 3.1 + Vue.js 全栈项目,采用单端口架构、结构化日志和独特的前端设计。
| 层级 | 技术选型 |
|---|---|
| Web 框架 | Flask 3.1.0 |
| 前端 | Vue.js (CDN, 单端口) |
| 依赖管理 | uv |
| 日志 | Python logging (TimedRotatingFileHandler) |
| 端口 | 80 (统一) |
所有请求由 Flask 在 80 端口统一处理。静态文件(HTML/CSS/JS)通过 Flask 路由从 templates/ 目录提供。
按顺序执行以下步骤:
scripts/init_project.pypyproject.toml向用户询问: - 项目名称(用于目录、文件名和应用标题) - 应用功能的简要描述 - 任何特定的设计偏好(配色方案、风格方向)
运行初始化脚本:
python scripts/init_project.py <project-name> --path <target-directory>
这将创建:
<project-name>/
├── AGENTS.md # AI Agent 项目指南(自动生成)
├── pyproject.toml # uv 项目配置
├── uv.lock # uv 锁定文件(自动生成)
├── src/
│ ├── <project-name>.py # Flask 主入口(含日志)
│ ├── templates/ # 前端资源
│ │ ├── <project-name>.html # 主页面 (Vue.js)
│ │ ├── css/ # 样式文件
│ │ ├── js/ # JavaScript 文件
│ │ └── assets/ # 静态资源(图片、字体等)
│ ├── utils/ # 核心工具模块
│ │ ├── __init__.py
│ │ └── logger.py # 日志模块
│ └── log/ # 日志输出目录
│ └── *.log # 按模块分日志文件(按天轮转)
pyproject.toml 自动生成,包含 uv 镜像配置:
[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
核心依赖:
dependencies = [
"flask>=3.1.0",
]
生成的 <project-name>.py 包含集成的日志功能:
from flask import Flask, send_from_directory, send_file
from utils.logger import get_logger
app = Flask(__name__)
logger = get_logger('<project-name>')
@app.route('/')
def index():
return send_file('templates/<project-name>.html')
# ... 静态文件路由 ...
if __name__ == '__main__':
logger.info('启动服务器,端口 80...')
app.run(host='0.0.0.0', port=80, debug=True)
创建 HTML/CSS/JS 时应用前端设计指南。完整设计系统参见 references/frontend-design.md。
核心原则:
<script setup> 模式Vue.js 集成模式:
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">
<!-- Vue 模板 -->
</div>
<script>
const { createApp, ref, computed, onMounted } = Vue
const app = createApp({
setup() {
// Composition API
return {}
}
})
app.mount('#app')
</script>
详细的 Vue.js 最佳实践参见 references/vue-guidelines.md。
重要:任何项目修改后,更新 AGENTS.md 以反映变更。
AGENTS.md 文件在项目创建时自动生成,作为 AI Agent 项目指南。必须与实际项目状态保持同步。
何时更新 AGENTS.md: - 添加新路由或 API 端点 - 添加新工具模块或文件 - 更改项目结构 - 添加新依赖 - 修改日志配置 - 任何架构变更
更新内容: - 项目结构树(添加/删除文件和目录) - 架构描述(新路由、模块、功能) - 开发指南(新约定或模式) - 更新日志表(添加日期、版本、描述条目)
更新日志格式:
## 更新日志
| 日期 | 版本 | 变更内容 |
|------|------|---------|
| 2026-06-07 | 0.1.0 | 初始项目创建 |
| 2026-06-08 | 0.2.0 | 新增用户认证模块 |
cd <project-path>
uv sync
uv run python src/<project-name>.py
src/utils/logger.pysrc/log/%(asctime)s | %(levelname)-8s | %(name)s | %(message)sfrom utils.logger import get_logger
logger = get_logger('module_name')
logger.info('操作成功完成')
logger.warning('发生了意外情况')
logger.error('发生错误: %s', error_detail)
每个日志记录器名称创建单独的日志文件:src/log/<logger_name>.log
文件在午夜轮转,命名模式:<logger_name>.log.YYYY-MM-DD
交付前验证:
pyproject.toml 包含 [tool.uv] 清华镜像配置pyproject.toml 位于项目根目录(与 src 同级)src/log/ 目录存在且包含 .gitkeepAGENTS.md 存在且反映当前项目状态cursor-pointer这个 Skill 质量不错,能帮助开发者快速搭建 Flask + Vue 项目。它把单端口架构、日志系统、前端设计等细节都考虑到了,初始化脚本也很实用。不足之处是说明文档有些分散,示例展示不够直观,对新手可能不够友好。总体适合有一定经验的开发者使用。