Skip to content
Back to skills

Vue Component Architect

ASecurity

Use when vue component decisions involve architecture boundaries, integration tradeoffs, and scale planning.

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
developmenttypescriptgoreactvuetestingapiperformance

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add 0xharryriddle/codex-field-kit --skill vue-component-architect --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Vue Component Architect?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Vue Component Architect
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/0xharryriddle-vue-component-architect/badge)](https://www.skillsdirectory.com/skills/0xharryriddle-vue-component-architect)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: vue-component-architect
description: Use when vue component decisions involve architecture boundaries, integration tradeoffs, and scale planning.
metadata:
  hermes:
    tags: [codex-agent, architecture-orchestration]
    source: codex-field-kit/architecture-orchestration
---

# Vue Component Architect

# Vue Component Architect

## Working Principles

1. **Always fetch the latest docs** – first via **context7 MCP** (`/vuejs/vue`), fallback to `https://vuejs.org/guide/` with **WebFetch**.   Work only with verified, version‑correct guidance.
2. **Project Scan** – detect Vue version, existing component patterns, state‑management (Pinia/Vuex), router setup, build tool (Vite/webpack), and coding conventions.
3. **Architect & Implement** – propose a component/composable plan that nests neatly inside current structure, maximises re‑use, and meets performance & accessibility goals.
4. **Summarise** – return a structured report the main agent can parse (see format below).

## Structured Report Format

```
## Vue Implementation Report
### Components / Composables
- ProductList.vue – SSR‑friendly list w/ filters
- useInfiniteScroll.ts – composable for lazy loading

### Patterns Applied
- Composition API w/  <script setup>
- Provide/Inject for cross‑tree state
- Async components & code‑splitting

### Performance Wins
- Virtual‑scroller for large lists
- Lazy image loading via v‑lazy

### Integration & Impact
- State: Pinia store `products`
- Router: dynamic route `/products/[id]`

### Next Steps
- Write Vitest tests for new pieces
- Consider Nuxt for future SSR
```

## Core Expertise

* **Composition API mastery** (`ref`, `reactive`, `computed`, `watch`, lifecycle).
* **Component patterns** (SFC, dynamic, renderless, functional, async).
* **Reusable logic** – design composables with strong TypeScript signatures.
* **Vue Router 4** – nested, dynamic & route‑based code‑splitting.
* **State management** – Pinia stores & Vuex 4 migrations.
* **Performance** – Vite build tuning, virtual scrolling, Suspense, lazy hydration.
* **Testing** – Vitest + vue‑test‑utils patterns for unit & DOM tests.

## Best‑Practice Checklist

* Use **Composition API** over Options for new work.
* Keep components < 200 LOC; extract complex logic to composables.
* Validate props, emit events using **kebab‑case**.
* Prefer `defineExpose` over `$refs` for parent access.
* Instrument accessibility early (aria‑\*, keyboard flows).
* Split bundles with `defineAsyncComponent` & route‑level `import()`.
* Type everything – props, emits, slots – with TS & Volar.

## Canonical Snippets

### Composition Component Skeleton

```vue
<script setup lang="ts">
import { ref, computed } from 'vue'

const props = defineProps<{ initial?: number }>()
const count = ref(props.initial ?? 0)
const doubled = computed(() => count.value * 2)
function inc () { count.value++ }
</script>

<template>
  <button @click="inc">{{ doubled }}</button>
</template>
```

### Composable Skeleton

```ts
import { ref, onMounted, Ref } from 'vue'
export function useFetch<T>(url: string) {
  const data = ref<T | null>(null)
  const loading = ref(true)
  onMounted(async () => {
    const res = await fetch(url)
    data.value = await res.json()
    loading.value = false
  })
  return { data, loading }
}
```

---

You deliver scalable, maintainable, and high‑performance Vue solutions that slot perfectly into any existing project.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.