vue-patterns
Faz seu agente trabalhar com padrões do Vue.js 3, incluindo a Composition API e gerenciamento de estado. É útil para criar ou revisar código em projetos Vue, Nuxt ou Pinia.
O que ela faz
Este guia ensina as melhores práticas para construir aplicações com Vue.js 3, Nuxt e Pinia. Ele cobre como organizar seu código, criar componentes reutilizáveis e gerenciar o estado da sua aplicação.
Quando usar
- ✓Ao iniciar um novo projeto Vue.js ou Nuxt.
- ✓Quando você precisar organizar melhor o código do seu projeto.
- ✓Ao criar componentes reutilizáveis ou gerenciar dados globais.
Exemplo do que pedir para a IA
“Como devo organizar os arquivos em um projeto Vue.js?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A IA usa as diretrizes fornecidas para sugerir estruturas de pastas, convenções de nomenclatura e a ordem correta dos elementos dentro dos arquivos `.vue`.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill vue-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/vue-patterns/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões e Melhores Práticas do Vue.js
Guia abrangente para desenvolvimento Vue.js 3 usando Composition API (<script setup>), cobrindo design de componentes, reatividade, gerenciamento de estado, roteamento, testes e padrões SSR. Orientação específica para Nuxt é incluída onde difere do Vue puro.
Quando Ativar
Ative esta habilidade quando:
- O projeto usa Vue.js (qualquer versão), Nuxt, Vite + Vue ou Pinia.
- O usuário pergunta sobre arquitetura de componentes Vue, composables, reatividade ou gerenciamento de estado.
- Revisando Componentes de Arquivo Único Vue (arquivos
.vue). - Configurando Vue Router, stores Pinia ou configuração Vite/Vitest.
- Discutindo padrões específicos de desempenho, segurança ou SSR do Vue.
1. Estrutura do Projeto
Layout Recomendado (Orientado a Funcionalidades)
src/
├── api/ # API client and endpoint definitions
├── assets/ # Static assets (images, fonts, icons)
├── components/ # Shared/reusable components
│ ├── base/ # Base UI primitives (Button, Input, Modal)
│ └── features/ # Feature-specific shared components
├── composables/ # Reusable Composition API logic
├── layouts/ # Page layouts (optional)
├── pages/ # Route-level page components
├── router/ # Vue Router configuration
├── stores/ # Pinia stores
├── types/ # TypeScript type definitions
├── utils/ # Pure utility functions
└── App.vue # Root component
Nomenclatura de Arquivos
| Convenção | Quando Usar |
|---|---|
PascalCase.vue |
Todos os componentes (imposto por vue/multi-word-component-names) |
useCamelCase.ts |
Composables |
camelCase.ts |
Utilitários, clientes de API, tipos |
diretórios kebab-case |
Segmentos de rota, pastas de funcionalidades |
2. Arquitetura de Componentes
Ordem do Componente de Arquivo Único
<script setup lang="ts">
// 1. Imports (vue → ecosystem → absolute → relative)
// 2. Props & Emits & Slots
// 3. Composables
// 4. Local state (ref/reactive)
// 5. Computed properties
// 6. Methods
// 7. Watchers
// 8. Lifecycle hooks
</script>
<template>
<!-- Template content -->
</template>
<style scoped>
/* Scoped styles */
</style>
Apresentacional vs. Container
- Componentes Container: Possuem busca de dados, estado e efeitos colaterais. Renderizam componentes apresentacionais.
- Componentes Apresentacionais: Recebem props, emitem eventos. Sem chamadas de API, sem acesso a store. Renderização pura.
Melhores Práticas de Props
// Type-based props with defaults
interface Props {
label: string;
variant?: "primary" | "secondary";
disabled?: boolean;
items: Item[];
}
const props = withDefaults(defineProps<Props>(), {
variant: "primary",
disabled: false,
});
- Sempre forneça
type, erequired/defaultonde apropriado. - Props booleanas:
isXxx,hasXxx,canXxx. - Nunca modifique props — emita eventos em vez disso.
- Para vinculação v-model, use
defineModel()(Vue 3.4+) oumodelValue+update:modelValue.
Eventos
const emit = defineEmits<{
submit: [];
"update:modelValue": [value: string];
select: [id: string, index: number];
}>();
- Use kebab-case em templates (
@update:model-value). - Use camelCase em script (
emit("update:modelValue", val)).
3. Composables (Lógica Reutilizável)
Estrutura
// composables/useDebounce.ts
export function useDebounce<T>(value: MaybeRef<T>, delay: number): Ref<T> {
const debounced = ref(toValue(value)) as Ref<T>;
let timer: ReturnType<typeof setTimeout>;
watch(
() => toValue(value),
(newVal) => {
clearTimeout(timer);
timer = setTimeout(() => { debounced.value = newVal; }, delay);
}
);
onUnmounted(() => clearTimeout(timer));
return readonly(debounced);
}
Regras
- Deve começar com o prefixo
use. - Retorne valores reativos (
ref,computed,reactive), nunca primitivos simples. - Aceite entradas reativas via
MaybeRef/toRef()/toValue(). - Limpe efeitos colaterais em
onUnmountedou watcheronCleanup. - Sem efeitos colaterais no escopo do módulo.
vs. Mixins
Composables substituem completamente os mixins do Vue 2:
- Mixins: Fluxo de dados opaco, colisões de fonte de verdade, conflitos de nome.
- Composables: Importações explícitas, valores de retorno claros, composable e "tree-shakable".
4. Gerenciamento de Estado
Quando Usar o Quê
| Padrão | Caso de Uso |
|---|---|
ref() / reactive() |
Estado local do componente |
| Props + Emits | Comunicação pai-filho |
| Provide / Inject | Tema, configuração, API de plugin |
…
Perguntas frequentes
O que é Composition API?
É uma forma mais flexível de organizar a lógica do seu código em Vue.js, usando funções como `ref`, `reactive` e `watch`.
Qual a diferença entre Presentational e Container components?
Componentes Container gerenciam dados e lógica, enquanto Presentational apenas exibem informações e recebem comandos.
Quando devo usar Pinia em vez de `ref` ou `reactive`?
Use Pinia para gerenciar dados que precisam ser compartilhados entre muitas partes da sua aplicação, enquanto `ref` e `reactive` são para dados locais de um componente.
Detalhes
Descrição original do autor
Vue.js 3 Composition API patterns, component architecture, reactivity best practices, Pinia state management, Vue Router navigation, and Nuxt SSR patterns. Activates for Vue, Nuxt, Vite, or Pinia projects. Use when building or reviewing Vue 3, Nuxt, or Pinia code — Composition API, reactivity, or router navigation.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #132
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
web-artifacts-builder
Ajuda seu agente a construir artefatos HTML complexos com tecnologias modernas. Ideal para interfaces com gerenciamento de estado e componentes avançados.
anthropics/skills
frontend-ui-engineering
Ajuda seu agente a criar interfaces de usuário bonitas e fáceis de usar. Faz com que o resultado pareça profissional e funcione bem em diferentes dispositivos.
addyosmani/agent-skills
export-nextjs-handoff
Faz seu agente transformar designs em código Next.js. Ele cria componentes, estilos e notas para facilitar o trabalho do desenvolvedor.
nexu-io/open-design