一键导入
vue-35
Build and refactor Vue.js 3.5 applications with Composition API, script setup, TypeScript, Vapor-ready patterns, SSR, and performance-focused reactivity.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Build and refactor Vue.js 3.5 applications with Composition API, script setup, TypeScript, Vapor-ready patterns, SSR, and performance-focused reactivity.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
ALWAYS use this skill when committing code changes — never commit directly without it. Creates commits following Sentry conventions with proper conventional commit format and issue references. Trigger on any commit, git commit, save changes, or commit message task.
Create a git branch following Sentry naming conventions. Use when asked to "create a branch", "new branch", "start a branch", "make a branch", "switch to a new branch", or when starting new work on the default branch.
Alias for sentry-skills:pr-writer. Use when users explicitly ask for "create-pr" or reference the legacy skill name. Redirects to the canonical PR writing workflow.
Use the `gh` CLI for issues, pull requests, Actions runs, and GitHub API queries.
Use when executing implementation plans with independent tasks in the current session
Coordinate quota-aware parallel subagents for large, multi-file Antigravity tasks.
| name | vue-35 |
| description | Build and refactor Vue.js 3.5 applications with Composition API, script setup, TypeScript, Vapor-ready patterns, SSR, and performance-focused reactivity. |
| metadata | {"category":"JS:TS","source":"self","date_added":"2026-06-04"} |
Use this skill for production Vue 3.5 work with the Composition API,
<script setup>, TypeScript, modern reactivity primitives, server rendering,
and maintainable component architecture.
ref, reactive, computed, watch, Pinia,
or VueUsejavascript-pro or typescript-pro<script setup>, typed props and
emits, composables for reusable logic, and explicit async states.ref for primitives and replaceable values,
reactive for stable object models, computed for derivation, and watch
only for side effects.<script setup lang="ts"> unless the
project uses another established convention.defineProps, defineEmits, defineModel, and withDefaults instead of
runtime prop boilerplate when TypeScript support is available.computed instead of watchers for derived values.watchEffect sparingly; prefer explicit watch sources for side effects
that need control.shallowRef or markRaw for large immutable objects, third-party
instances, maps, charts, editors, and non-reactive class objects.toRef or toRefs when destructuring reactive objects that must remain
reactive.onWatcherCleanup for cancelling async effects started inside watchers.useTemplateRef for typed template refs in Vue 3.5.<script setup lang="ts">
import { computed } from 'vue';
type UserCardProps = {
id: string;
name: string;
role?: string;
selected?: boolean;
};
const props = withDefaults(defineProps<UserCardProps>(), {
role: 'Member',
selected: false,
});
const emit = defineEmits<{
select: [id: string];
}>();
const label = computed(() => `${props.name} (${props.role})`);
</script>
<template>
<article :class="['user-card', { 'is-selected': selected }]">
<h3>{{ label }}</h3>
<button type="button" @click="emit('select', id)">Select</button>
</article>
</template>
defineModel for intentional
two-way binding.props unless using compiler-supported reactive props
destructure or toRefs in projects configured for it.idle, loading, success, and error states
when the result drives visible UI.onWatcherCleanup and
AbortController.import { onWatcherCleanup, ref, watch } from "vue";
const userId = ref("");
const user = ref<User | null>(null);
const error = ref<Error | null>(null);
watch(userId, async (id) => {
if (!id) return;
const controller = new AbortController();
onWatcherCleanup(() => controller.abort());
try {
error.value = null;
const response = await fetch(`/api/users/${id}`, {
signal: controller.signal,
});
user.value = await response.json();
} catch (err) {
if (!controller.signal.aborted) error.value = err as Error;
}
});
:key values for v-for and avoid index keys for mutable lists.v-show for frequently toggled elements and v-if for conditional
branches that should not mount until needed.v-memo only for proven hot render paths with stable dependencies.defineAsyncComponent and route-level dynamic imports for heavy or rarely
used components.shallowRef,
shallowReactive, or raw objects when appropriate.for, aria-describedby, and
clear validation messages.references/vue-35-patterns.md for deeper examples and review checklists