Files
vibe_coding/.cursor/rules/skill-component-scaffold.mdc
2026-03-05 21:27:11 +08:00

62 lines
2.5 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: >
Vue 3 组件脚手架技能。新建 Vue SFC 组件、拆分子组件、
创建复合组件时激活。含模板生成、命名规范、Prop 设计。
globs:
- "**/components/**/*.vue"
- "**/composables/**/*.ts"
alwaysApply: false
---
# Component Scaffold
> 本文件是精简执行摘要。完整流程、模板和深度参考见:
> Read `.cursor/skills/component-scaffold/SKILL.md`
> **适用性**(双模式):
> - **新建**组件/重大拆分走完整执行流程Step 1-7
> - **修改**已有组件:跳过脚手架步骤,完成后走「验证」清单
依赖技能:`vue-testing`Cursor 已通过 `skill-vue-testing` 规则自动加载)
## 前端识别(必须先确认)
- **管理端** (`Case-Database-Frontend-admin/`)Element Plus + Tailwind
- **用户端** (`Case-Database-Frontend-user/`)Headless UI + Tailwind**禁止 Element Plus**
## 执行流程
1. 加载规范Read `010-typescript.mdc`、`011-vue.mdc`、`019-modular.mdc`
2. 扫描 `src/components/core/` 和 `src/components/custom/`,避免重复造轮子
3. 重复 UI 检测:同一结构 >=3 次 → 提取基础组件
4. **输出文件结构**(写代码前必须先输出):
```
src/components/<type>/<ComponentName>/
├── <ComponentName>.vue (行数限制见 011-vue.mdc)
├── <ComponentName>.test.ts
└── index.ts
```
5. 确认组件规格名称、类型、目录、Props/Emits
6. 生成组件代码(`<script setup lang="ts">` + `defineProps`
7. 生成测试和 barrel export
## 质量约束
行数限制和设计决策树已下沉到 `011-vue.mdc`(编辑任何 .vue 文件时自动生效),
此处不再重复。脚手架生成的组件同样受 `011-vue.mdc` 约束。
## 验证
- [ ] Props 使用对象语法 `defineProps({ key: { type, default } })`**script 中若不访问 `props.xxx` 则不保存返回值**(直接写 `defineProps(...)` 而非 `const props = defineProps(...)`,避免 `unused-vars` lint 报错)
- [ ] **`catch` 块中不使用异常参数时写 `catch {}` 而非 `catch (e) {}`**,避免 `unused-vars` 报错
- [ ] 包含 `data-testid`
- [ ] 测试至少一个渲染测试
- [ ] barrel export 正确
- [ ] 符合 `011-vue.mdc` 的 SFC 行数限制和设计决策规则
- [ ] composable 参数有类型注解、ref 有泛型
## 深度参考
- `.cursor/skills/component-scaffold/references/component-templates.md`
- `.cursor/skills/component-scaffold/references/naming-conventions.md`