name: yy-create-vue3
description: >
创建基于当前技能 scripts/ 参考工程的 Vue 3 + TypeScript + Vite 项目骨架,或按同一结构补齐空白/轻量项目。
当用户需要快速落地统一目录、配置和页面骨架时触发,不用于复杂迁移、重构或通用 Vue 问答。
yy-create-vue3
描述
基于当前技能目录下 scripts/ 的权威参考工程,创建或补齐 Vue 3 + TypeScript + Vite 项目。优先复用现成参考文件,只做与项目名称、页面列表、可选目录和验证动作直接相关的最小调整。
使用场景
- 用户需要新建 Vue 3 + TypeScript + Vite 前端项目
- 用户需要生成与当前技能
scripts/参考工程一致的目录结构、配置文件和源码骨架 - 用户需要在空白或轻量项目中补齐标准化的 Vue 3 工程基础设施
不应触发:
- 用户只需要单个组件、页面或样式片段
- 用户要处理 React、Vue 2、Angular 或非 Vite 项目
- 用户要对成熟现有项目做大规模迁移、重构或架构改造
- 用户只是询问 Vue 3、TypeScript 或 Vite 的概念和用法
指令
步骤 1. 确认任务边界与最小输入
收集完成任务所需的最小信息:
- 项目名称,使用英文短横线命名,如
my-app - 目标目录
- 项目标题
- 页面列表,默认至少包含
HomeView - 是否需要
public/mock/,默认否 - 是否需要
src/languages/,默认否 - 是否执行依赖安装与验证
- 目标目录是新目录、空目录还是已有项目目录
决策分支:
- 用户已提供关键信息:直接进入步骤 2
- 仅缺少少量必要信息:只追问缺失项,不重复确认已明确内容
- 目标目录已有内容但处理边界不明:先确认只做补齐或对齐,不默认覆盖、删除或清空现有文件
步骤 2. 判定生成模式
以当前技能目录下的 scripts/ 为唯一权威参考,以 templates/ 中的轻量说明为快速校准材料。
决策分支:
- 目标目录不存在或为空目录:按“新建项目”模式处理,复制参考工程的基础骨架,再做最小定制
- 目标目录已有少量工程文件,且用户明确要求对齐结构:按“补齐项目”模式处理,只新增缺失文件或修改与本次目标直接相关的文件
- 目标目录已有成熟工程内容:说明该技能只适合脚手架创建和轻量对齐,要求用户缩小范围后再继续
步骤 3. 复制参考工程并过滤无效产物
从 scripts/ 复制项目骨架时,只保留可作为脚手架的一次性源文件,不复制缓存和安装产物。
决策分支:
- 新建项目模式:复制
scripts/中的基础目录和配置文件,保留public/、src/、tests/、构建脚本和根配置 - 补齐项目模式:逐项对照
scripts/,只补齐缺失的目录、配置和基础源码文件
禁止复制的内容:
node_modules/.eslintcache- 其他缓存、临时目录和本地安装产物
建议处理方式:
package-lock.json默认不复制,优先通过后续npm install重新生成package.json、vite.config.ts、vite.shared.ts、tsconfig*.json、eslint.config.ts、.prettierrc.json、.editorconfig、.gitignore、index.html直接以scripts/同名文件为基准
步骤 4. 生成目录结构与基础配置
确保目标项目至少具备与参考工程一致的基础目录结构:
project-name/
├── public/
├── scripts/
├── src/
│ ├── apis/
│ ├── components/
│ ├── composables/
│ ├── router/
│ ├── utils/
│ ├── stores/
│ ├── styles/
│ ├── typings/
│ └── views/
└── tests/
决策分支:
- 用户需要 Mock 数据目录:补充
public/mock/ - 用户需要国际化目录:补充
src/languages/ - 用户未提出额外目录要求:保持与
scripts/参考工程一致,不自行扩展更多目录
配置文件处理规则:
- 复制
scripts/package.json后,仅调整项目名称和用户明确要求的元数据 - 复制
scripts/vite.config.ts与scripts/vite.shared.ts,保持base: "./"和@src -> ./src别名不变 - 整组复制
scripts/tsconfig*.json,不要手写拆分 - 复制
scripts/eslint.config.ts、scripts/.prettierrc.json、scripts/.editorconfig、scripts/.gitignore - 若用户需要环境变量文件,再按
vite.shared.ts使用到的运行时常量创建最小.env,不要凭空扩展字段
步骤 5. 生成源码骨架与页面
优先复制 scripts/src/ 和 scripts/tests/ 的基础文件,再围绕用户输入做最小定制。
必须完成的调整:
index.html的<title>使用用户提供的项目标题package.json的name使用项目名称- 路由配置与页面目录根据页面列表同步生成
- 默认页面至少保证存在
HomeView
页面生成规则:
- 页面目录与页面文件同名,使用 PascalCase,例如
HomeView/HomeView.vue - 页面专属子组件放在
_components/目录下 - 如果用户未提供页面列表,默认只生成
HomeView
决策分支:
- 参考工程已有可复用页面:复制后做最小改名或内容替换
- 参考工程缺少用户指定页面:按现有页面结构补齐同构目录和基础页面文件
- 用户要求保留已有页面:仅新增缺失页面,不重写无关页面
步骤 6. 安装依赖并执行验证
在目标项目根目录执行安装和验证,默认使用 npm。
决策分支:
- 用户未禁止安装与验证:执行
npm install、npm run type-check、npm run test - 用户明确要求启动开发环境:额外执行
npm run dev:test,以短时启动并确认可正常进入开发态 - 用户明确要求跳过安装或当前环境不适合联网安装:跳过命令执行,并在结果中说明未验证项
验证时保持以下约束:
- 包管理工具使用
npm,不改成pnpm - 路径别名保持
@src,不改成@ - 不额外执行
build:*、部署或发布命令,除非用户明确要求
步骤 7. 补齐 lint 支持
在项目创建或补齐完成后,检测当前环境是否可用 yy-enable-lint 技能,并在可用时触发该技能为项目添加 npm run lint 支持。
决策分支:
- 当前环境可用
yy-enable-lint:在目标项目目录触发yy-enable-lint,使其按项目技术栈补齐 lint 支持 - 当前环境不可用
yy-enable-lint:不阻塞项目生成,跳过 lint 补齐 - 用户明确要求不补齐 lint 支持:跳过,仅在交付结果中说明
yy-enable-lint执行失败:记录失败原因,不扩大处理范围
步骤 8. 输出结果
输出以下内容:
- 项目结构,使用
tree或text代码块展示 - 本次创建或补齐的核心文件与目录
- 验证结果,区分已执行、跳过和失败项
- 关键注意事项,包括包管理工具、路径别名、后续新增页面时需要同步更新路由
安全边界
- 不修改当前技能目录下的
scripts/参考工程本身 - 不删除目标目录中的无关现有文件
- 未获用户明确授权时,不覆盖与本次目标无关的已有实现
- 不执行部署、发布、推送或其他与脚手架创建无关的高影响操作
相关资源
templates/package-json.md:package.json轻量引用说明,权威来源为scripts/package.jsontemplates/vite-config.md:Vite 轻量引用说明,权威来源为scripts/vite.config.ts和scripts/vite.shared.tstemplates/tsconfig-templates.md:TypeScript 轻量引用说明,权威来源为scripts/tsconfig*.jsontemplates/eslint-prettier.md:代码检查轻量引用说明,权威来源为scripts/eslint.config.ts、scripts/.prettierrc.json、scripts/.editorconfigscripts/:完整参考工程,也是目录结构、配置和基础源码的唯一权威来源