用途
该技能定位为 Vue.js 生态系统专家,用于在审查或编写代码时提供规范化的指导准则,覆盖 Vue 3、Composition API、Nuxt 与 Pinia。
主要能力与准则
Vue 3 附加说明
- 需要时使用 Vue 3 的 Teleport 组件;
- 对异步组件使用 Suspense;
- 实现恰当的错误处理;
- 遵循 Vue 3 风格指南与命名约定;
- 使用 Vite 进行快速开发与构建。
Composition API:Composables 与通用用法
- 使用 setup() 函数承载组件逻辑;
- 使用 ref 与 reactive 管理响应式状态;
- 使用 computed() 实现计算属性;
- 使用 watch 与 watchEffect 处理副作用;
- 使用 onMounted、onUpdated 等实现生命周期钩子;
- 使用 provide/inject 进行依赖注入。
项目结构
推荐的目录结构为 src/ 下包含 components/、composables/、views/、router/、store/、assets/,以及 App.vue 与 main.js。
TypeScript 准则
- 使用 TypeScript 获得类型安全;
- 实现规范的 props 与 emits 定义。
组件规则
- 目录使用小写加短横线(例如 components/auth-wizard);
- 函数优先使用具名导出;
- 始终使用 Vue Composition API 的 script setup 风格;
- 使用 DaisyUI 与 Tailwind 构建组件与样式;
- 使用 Tailwind CSS 实现响应式设计,采用移动优先的方式。
约定
- 遵循 Vue.js 官方文档的最佳实践;
- 以一致的顺序组织组件选项(如 data、computed、methods、watch、生命周期钩子);
- 使用 v-bind 与 v-on 指令进行数据绑定和事件处理;
- Composition API 组件优先使用 <script setup> 语法;
- 使用 Pinia 进行全局状态管理;
- 使用 Vue Router 进行导航,并使用带类型的路由参数。
强制规则与反模式
强制规则(Iron Laws):
- 新的 Vue 3 组件始终使用 Composition API 与 <script setup> 语法;
- 新组件绝不使用 Options API;
- 共享应用状态始终使用 Pinia,而非 Vuex 或 provide/inject;
- 绝不在 actions 之外直接修改 Pinia store 状态;
- 组件边界始终使用带 TypeScript 类型的 defineProps 与 defineEmits。
列出的反模式与正确做法:
- 新组件使用 Options API —— 属于被取代的模式、类型推断较差,应改用 Composition API 与 <script setup>;
- 使用 Vuex 做状态管理 —— 在 Vue 3 生态中已废弃,应改用 Pinia(更简单、TypeScript 支持更好);
- 直接修改 Pinia store 状态 —— 会破坏响应式追踪与 devtools,应仅通过 store actions 修改状态;
- 缺少 defineProps 的 TypeScript 类型 —— 会导致运行时 props 错误、IDE 支持差,应始终为 props 与 emits 提供 TypeScript 类型;
- 对响应式对象进行解构 —— 解构会丢失响应性,应使用 toRefs() 或保持响应式对象完整。
使用方式
该技能以代码规范准则的形式在审查或编写代码时应用。资料同时给出了一个强制性的记忆协议(Memory Protocol)作为使用流程的一部分:开始前执行 cat .claude/context/memory/learnings.md,完成后记录任何新发现的模式或例外;并提示假定中断可能发生,若未写入记忆则视为未发生。
适用场景
适用于需要遵循上述 Vue 3 规范的代码编写与代码审查工作,涉及 Composition API、Nuxt、Pinia、TypeScript、Tailwind 与 DaisyUI 等场景。
限制
该技能为 1 个单独技能的合并结果(vue-expert)。资料未提供价格、平台支持范围、版本要求或效果数据,这些信息暂未提供。Nuxt 与 Pinia 仅作为覆盖范围被提及,未展开具体指令。