9.4 KiB
9.4 KiB
name, description, version
| name | description | version |
|---|---|---|
| auto-dev | zc-web 自动化开发全流程 skill。覆盖从原型图/PRD → 蓝湖 MCP 设计稿读取 → API 接口文档 → 页面代码生成 → 组件拆分 → store/api 生成 → 自动验证修正的完整链路。当用户提到"自动化开发"、"从原型生成代码"、"蓝湖设计稿生成页面"、"PRD生成页面"、"虫子开发"、"自动拆分组件"、"生成store"时使用。 | 1.0.0 |
zc-web 自动化开发全流程
本 skill 驱动从设计稿/PRD 到可运行代码的完整自动化管线。所有生成的代码必须严格遵循 vue-project-structure skill 的规范。
前置条件
- 项目结构确认:用
codegraph_files确认src/目录现有结构 - 加载 vue-project-structure skill:所有代码生成必须遵循其分层架构和数据流规范
- 蓝湖 MCP 就绪:确认
lanhuMCP 服务已启动(curl http://localhost:8000/mcp)
阶段一:PRD 生成
从原型图生成 PRD 文档
使用项目根目录的 read_prototype.js 读取原型文件:
node read_prototype.js [原型文件路径]
然后根据原型中的布局和交互逻辑,生成 PRD 文档放入 doc/ 文件夹。
PRD 内容要求:
- 页面清单及功能描述
- 每个页面的交互逻辑
- 数据字段定义
- 组件拆分建议
提示词模板:
运行 ./read_prototype.js [原型文件路径] 读取原型代码,然后根据其中的布局和交互逻辑,为我生成一份 PRD 文档。放在doc文件夹中
阶段二:蓝湖 MCP 设计稿读取
连接验证
请帮我用 MCP 看看这个蓝湖设计稿:[蓝湖链接]
批量读取设计稿数据
请通过蓝湖 MCP 读取以下设计稿的结构化数据,提取每个页面的:
- 组件尺寸、间距、色值、字体等标注参数
- 全局设计规范(颜色变量、字号体系)
- 切图资源(SVG/PNG),按图层语义化命名
- 布局嵌套结构和循环体检测
蓝湖链接:[蓝湖项目链接]
输出要求:
- 设计参数表(色值、字号、间距、圆角、阴影)
- 组件结构树(嵌套关系、循环体标记)
- 资源清单(图片/图标路径及语义化命名)
阶段三:PRD → 页面结构规划
以下是我的产品需求文档,请帮我:
- 梳理出所有需要的页面清单,按功能模块分组
- 规划 uni-app / Vue3 项目的页面路由结构
- 识别哪些模块可以复用,哪些是页面独有
- 输出每个页面的核心功能点和数据字段
PRD 内容:[PRD文件路径或内容]
输出物:
- 页面清单表(模块 → 页面 → 功能点 → 数据字段)
- 路由规划(
pages.json或router/routes.ts结构) - 复用性分析(哪些组件/逻辑可抽取为公共)
阶段四:AI 生成页面代码并自动拆分组件
基于 PRD 页面规划和蓝湖 MCP 设计稿数据,生成完整页面代码。
目录结构规范(zc-web)
views/<page>/
├── index.vue # 页面主组件(路由入口)
├── index.ts # 页面出口 barrel
└── cpns/ # 页面独有组件
├── <ComponentName>.vue
└── ...
配套文件:
api/<page>.ts # 接口层
stores/modules/<page>.ts # 数据层(Pinia)
types/business/<page>.d.ts # 实体类型
组件拆分原则
- 单一职责:一个组件只做一件事,超过 300 行必须拆分
- 三层架构:
- 页面容器(
index.vue):只负责调度和数据分发,不写业务逻辑 - 业务子组件(
cpns/):当前页面私有,只接收 props + emit 事件 - 公共基础组件(
components/):全局复用
- 页面容器(
- 按数据维度拆分:同一批接口数据渲染的区域放一个组件,不同数据源必须拆分
- 弹窗/抽屉/复杂表单:一律单独抽离为子组件
生成要求
- 父页面只做组件引入、props 分发、事件中转
- 子组件只接收 props 和通过 emit 向上抛事件,不直接调接口
- 样式使用
<style lang="less" scoped>,色值从蓝湖数据中精确提取 - 图片和图标使用蓝湖 MCP 导出的本地资源路径
- 组件统一
<script setup lang="ts">,props 用defineProps<Props>()+withDefaults,emits 用defineEmits<{事件名: [参数类型]}>()
提示词模板
基于蓝湖 MCP 返回的设计稿数据和 PRD 页面规划,帮我生成 uni-app + Vue3 + TypeScript 的完整页面代码,并按以下原则自动拆分组件:
拆分原则:
1.单一职责:一个组件只做一件事,超过 300 行必须拆分
2.三层架构:页面容器(只负责调度和数据分发)→ 业务子组件(当前页面私有)→ 公共基础组件(全局复用)
3.按数据维度拆分:同一批接口数据渲染的区域放一个组件,不同数据源的模块必须拆分
4.弹窗、抽屉、复杂表单一律单独抽离为子组件
目录结构规范:
pages/
└── <page>/
├── index.vue # 父页面(控制器层,零业务逻辑)
└── components/
├── <Page>Search.vue # 搜索筛选组件(纯 UI,只抛回调)
├── <Page>List.vue # 列表组件(纯 UI,只渲染+抛事件)
├── <Page>Card.vue # 卡片组件(可复用)
└── <Page>Detail.vue # 详情弹窗组件
生成要求:
1.父页面只做组件引入、props 分发、事件中转,不写业务逻辑
2.子组件只接收 props 和通过 emit 向上抛事件,不直接调接口
3.样式使用vue支持的写法,色值从蓝湖数据中精确提取
4.图片和图标使用蓝湖 MCP 导出的本地资源路径
阶段五:生成 API + Store(逻辑层)
为每个页面生成对应的 api 和 store 文件,遵循 zc-web 三层数据流规范(页面 → store → api)。
规范
| 层级 | 文件 | 职责 |
|---|---|---|
| API | api/<page>.ts |
封装 axios 接口,定义路径/方法/参数类型/响应类型,不写业务逻辑 |
| Store | stores/modules/<page>.ts |
管理状态 + 业务逻辑(请求、loading、分页、数据格式化),不操作 DOM |
| Views | views/<page>/ |
纯 UI 展示,调用 Store 获取数据,用户交互调用 Store 方法 |
生成要求
- store 使用 Pinia setup 写法:
ref状态 +computedgetters + 普通函数 actions - api 使用
request<T>:统一 axios 实例,不直接 import axios - 页面禁止直接 import api:获取数据必须调对应 store 的 action
- 类型定义:
types/business/<page>.d.ts定义实体类型
提示词模板
为每个页面生成对应的 api, store 文件,放在 api/ ,stores/modules/ 目录下,遵循以下规范:
- store文件统一管理状态 + 业务逻辑(请求、loading、分页、数据格式化),不直接操作 DOM、不写 UI 代码
- api文件封装 axios,定义接口路径、方法、参数类型、响应类型,不写业务逻辑、不操作状态
- views文件纯 UI 展示,调用 Store 获取数据,用户交互调用 Store 方法,不调用 API、尽量不写业务逻辑
- api, store与 UI 组件完全解耦,只通过返回值暴露数据和方法
- store 使用 Pinia setup 写法,api 使用 request<T>
阶段六:自动识别并提取公共组件
请扫描整个项目的 pages 目录,识别跨多个页面重复出现的 UI 模块(如导航栏、底部 Tab、空状态、加载动画、通用弹窗等),将它们提取到 components/common/ 目录下作为全局公共组件,并替换所有页面中的引用。
提取判定规则(与 vue-project-structure skill 一致):
- 被 ≥2 个页面使用 → 放
components/ - 仅 1 个页面使用 → 放
views/<page>/cpns/
阶段七:自动化验证与修正
逐页对比蓝湖设计稿和生成的代码,自动检查并修复:
- 间距、色值、字号是否与设计稿一致
- 布局是否正确(flex 方向、对齐方式)
- 圆角、阴影、渐变是否还原
- 图片资源路径是否正确
- 组件拆分是否合理(是否有超过 300 行的组件需要进一步拆分)
- 规范合规:是否有
as any、@ts-ignore、直接 import api 等违规
验证命令:
pnpm build # 含 vue-tsc 类型检查,零错误才算通过
完整工作流调用顺序
阶段一(PRD) → 阶段二(蓝湖MCP) → 阶段三(页面规划) → 阶段四(代码生成) → 阶段五(API+Store) → 阶段六(公共组件) → 阶段七(验证修正)
每个阶段可独立调用,也支持一键全流程。
注意事项
- 始终先加载 vue-project-structure skill:所有代码必须符合项目规范
- 每次动手前先读取项目目录:确认目标文件存在与现状
- 命名一致性:页面
home→api/home.ts+stores/modules/home.ts+types/business/home.d.ts+views/home/四者同名 - 不创建新顶层目录:在既有职责目录中创建文件
- 蓝湖 MCP 不可用时:提示用户检查 Docker 容器和 Cookie 配置,降级为手动提供设计参数