tribunal-kit 2.4.6 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/.agent/ARCHITECTURE.md +99 -99
  2. package/.agent/GEMINI.md +52 -52
  3. package/.agent/agents/accessibility-reviewer.md +139 -86
  4. package/.agent/agents/ai-code-reviewer.md +160 -90
  5. package/.agent/agents/backend-specialist.md +164 -127
  6. package/.agent/agents/code-archaeologist.md +115 -73
  7. package/.agent/agents/database-architect.md +130 -110
  8. package/.agent/agents/debugger.md +137 -97
  9. package/.agent/agents/dependency-reviewer.md +78 -30
  10. package/.agent/agents/devops-engineer.md +161 -118
  11. package/.agent/agents/documentation-writer.md +151 -87
  12. package/.agent/agents/explorer-agent.md +117 -99
  13. package/.agent/agents/frontend-reviewer.md +127 -47
  14. package/.agent/agents/frontend-specialist.md +169 -109
  15. package/.agent/agents/game-developer.md +28 -164
  16. package/.agent/agents/logic-reviewer.md +87 -49
  17. package/.agent/agents/mobile-developer.md +151 -103
  18. package/.agent/agents/mobile-reviewer.md +133 -50
  19. package/.agent/agents/orchestrator.md +121 -110
  20. package/.agent/agents/penetration-tester.md +103 -77
  21. package/.agent/agents/performance-optimizer.md +136 -92
  22. package/.agent/agents/performance-reviewer.md +139 -69
  23. package/.agent/agents/product-manager.md +104 -70
  24. package/.agent/agents/product-owner.md +6 -25
  25. package/.agent/agents/project-planner.md +95 -95
  26. package/.agent/agents/qa-automation-engineer.md +174 -87
  27. package/.agent/agents/security-auditor.md +133 -129
  28. package/.agent/agents/seo-specialist.md +160 -99
  29. package/.agent/agents/sql-reviewer.md +132 -44
  30. package/.agent/agents/supervisor-agent.md +137 -109
  31. package/.agent/agents/swarm-worker-contracts.md +17 -17
  32. package/.agent/agents/swarm-worker-registry.md +46 -46
  33. package/.agent/agents/test-coverage-reviewer.md +132 -53
  34. package/.agent/agents/test-engineer.md +0 -21
  35. package/.agent/agents/type-safety-reviewer.md +143 -33
  36. package/.agent/patterns/generator.md +9 -9
  37. package/.agent/patterns/inversion.md +12 -12
  38. package/.agent/patterns/pipeline.md +9 -9
  39. package/.agent/patterns/reviewer.md +13 -13
  40. package/.agent/patterns/tool-wrapper.md +9 -9
  41. package/.agent/rules/GEMINI.md +63 -63
  42. package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
  43. package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
  44. package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
  45. package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
  46. package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  47. package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
  48. package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
  49. package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
  50. package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  51. package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
  52. package/.agent/scripts/compress_skills.py +167 -0
  53. package/.agent/scripts/consolidate_skills.py +173 -0
  54. package/.agent/scripts/deep_compress.py +202 -0
  55. package/.agent/scripts/minify_context.py +80 -0
  56. package/.agent/scripts/security_scan.py +1 -1
  57. package/.agent/scripts/strip_tribunal.py +41 -0
  58. package/.agent/skills/agent-organizer/SKILL.md +60 -100
  59. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  60. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +108 -53
  61. package/.agent/skills/api-patterns/SKILL.md +197 -257
  62. package/.agent/skills/api-security-auditor/SKILL.md +125 -57
  63. package/.agent/skills/app-builder/SKILL.md +326 -50
  64. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  65. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  66. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  67. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  68. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  69. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  70. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  71. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  72. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  73. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  74. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  75. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  76. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  77. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  78. package/.agent/skills/appflow-wireframe/SKILL.md +71 -98
  79. package/.agent/skills/architecture/SKILL.md +161 -200
  80. package/.agent/skills/authentication-best-practices/SKILL.md +121 -54
  81. package/.agent/skills/bash-linux/SKILL.md +71 -166
  82. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  83. package/.agent/skills/brainstorming/SKILL.md +345 -127
  84. package/.agent/skills/building-native-ui/SKILL.md +125 -57
  85. package/.agent/skills/clean-code/SKILL.md +266 -149
  86. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  87. package/.agent/skills/config-validator/SKILL.md +73 -131
  88. package/.agent/skills/csharp-developer/SKILL.md +434 -73
  89. package/.agent/skills/database-design/SKILL.md +190 -275
  90. package/.agent/skills/deployment-procedures/SKILL.md +81 -158
  91. package/.agent/skills/devops-engineer/SKILL.md +255 -94
  92. package/.agent/skills/devops-incident-responder/SKILL.md +50 -69
  93. package/.agent/skills/doc.md +5 -5
  94. package/.agent/skills/documentation-templates/SKILL.md +19 -63
  95. package/.agent/skills/edge-computing/SKILL.md +75 -165
  96. package/.agent/skills/extract-design-system/SKILL.md +84 -58
  97. package/.agent/skills/framer-motion-expert/SKILL.md +195 -0
  98. package/.agent/skills/frontend-design/SKILL.md +151 -499
  99. package/.agent/skills/game-design-expert/SKILL.md +71 -0
  100. package/.agent/skills/game-engineering-expert/SKILL.md +88 -0
  101. package/.agent/skills/geo-fundamentals/SKILL.md +52 -178
  102. package/.agent/skills/github-operations/SKILL.md +197 -272
  103. package/.agent/skills/gsap-expert/SKILL.md +194 -0
  104. package/.agent/skills/i18n-localization/SKILL.md +60 -172
  105. package/.agent/skills/intelligent-routing/SKILL.md +123 -103
  106. package/.agent/skills/lint-and-validate/SKILL.md +8 -52
  107. package/.agent/skills/llm-engineering/SKILL.md +281 -195
  108. package/.agent/skills/local-first/SKILL.md +76 -159
  109. package/.agent/skills/mcp-builder/SKILL.md +48 -188
  110. package/.agent/skills/mobile-design/SKILL.md +213 -219
  111. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  112. package/.agent/skills/nextjs-react-expert/SKILL.md +184 -203
  113. package/.agent/skills/nodejs-best-practices/SKILL.md +403 -185
  114. package/.agent/skills/observability/SKILL.md +211 -203
  115. package/.agent/skills/parallel-agents/SKILL.md +53 -146
  116. package/.agent/skills/performance-profiling/SKILL.md +171 -151
  117. package/.agent/skills/plan-writing/SKILL.md +49 -153
  118. package/.agent/skills/platform-engineer/SKILL.md +57 -103
  119. package/.agent/skills/playwright-best-practices/SKILL.md +110 -63
  120. package/.agent/skills/powershell-windows/SKILL.md +61 -179
  121. package/.agent/skills/python-patterns/SKILL.md +7 -35
  122. package/.agent/skills/python-pro/SKILL.md +273 -114
  123. package/.agent/skills/react-specialist/SKILL.md +227 -108
  124. package/.agent/skills/readme-builder/SKILL.md +15 -85
  125. package/.agent/skills/realtime-patterns/SKILL.md +216 -243
  126. package/.agent/skills/red-team-tactics/SKILL.md +10 -51
  127. package/.agent/skills/rust-pro/SKILL.md +525 -142
  128. package/.agent/skills/seo-fundamentals/SKILL.md +92 -153
  129. package/.agent/skills/server-management/SKILL.md +110 -166
  130. package/.agent/skills/shadcn-ui-expert/SKILL.md +154 -55
  131. package/.agent/skills/skill-creator/SKILL.md +18 -58
  132. package/.agent/skills/sql-pro/SKILL.md +543 -68
  133. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
  134. package/.agent/skills/swiftui-expert/SKILL.md +124 -57
  135. package/.agent/skills/systematic-debugging/SKILL.md +49 -151
  136. package/.agent/skills/tailwind-patterns/SKILL.md +433 -149
  137. package/.agent/skills/tdd-workflow/SKILL.md +63 -169
  138. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  139. package/.agent/skills/testing-patterns/SKILL.md +437 -130
  140. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  141. package/.agent/skills/ui-ux-pro-max/SKILL.md +0 -41
  142. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  143. package/.agent/skills/vue-expert/SKILL.md +225 -119
  144. package/.agent/skills/vulnerability-scanner/SKILL.md +264 -226
  145. package/.agent/skills/web-accessibility-auditor/SKILL.md +141 -58
  146. package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
  147. package/.agent/skills/webapp-testing/SKILL.md +71 -196
  148. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  149. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  150. package/.agent/workflows/api-tester.md +96 -224
  151. package/.agent/workflows/audit.md +81 -122
  152. package/.agent/workflows/brainstorm.md +69 -105
  153. package/.agent/workflows/changelog.md +65 -97
  154. package/.agent/workflows/create.md +73 -88
  155. package/.agent/workflows/debug.md +80 -111
  156. package/.agent/workflows/deploy.md +119 -92
  157. package/.agent/workflows/enhance.md +80 -91
  158. package/.agent/workflows/fix.md +68 -97
  159. package/.agent/workflows/generate.md +165 -164
  160. package/.agent/workflows/migrate.md +106 -109
  161. package/.agent/workflows/orchestrate.md +103 -86
  162. package/.agent/workflows/performance-benchmarker.md +77 -268
  163. package/.agent/workflows/plan.md +120 -98
  164. package/.agent/workflows/preview.md +39 -96
  165. package/.agent/workflows/refactor.md +105 -97
  166. package/.agent/workflows/review-ai.md +63 -102
  167. package/.agent/workflows/review.md +71 -110
  168. package/.agent/workflows/session.md +53 -113
  169. package/.agent/workflows/status.md +42 -88
  170. package/.agent/workflows/strengthen-skills.md +90 -51
  171. package/.agent/workflows/swarm.md +114 -129
  172. package/.agent/workflows/test.md +125 -102
  173. package/.agent/workflows/tribunal-backend.md +60 -78
  174. package/.agent/workflows/tribunal-database.md +62 -100
  175. package/.agent/workflows/tribunal-frontend.md +62 -82
  176. package/.agent/workflows/tribunal-full.md +56 -100
  177. package/.agent/workflows/tribunal-mobile.md +65 -94
  178. package/.agent/workflows/tribunal-performance.md +62 -105
  179. package/.agent/workflows/ui-ux-pro-max.md +72 -121
  180. package/README.md +11 -15
  181. package/package.json +1 -1
  182. package/.agent/skills/api-patterns/api-style.md +0 -42
  183. package/.agent/skills/api-patterns/auth.md +0 -24
  184. package/.agent/skills/api-patterns/documentation.md +0 -26
  185. package/.agent/skills/api-patterns/graphql.md +0 -41
  186. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  187. package/.agent/skills/api-patterns/response.md +0 -37
  188. package/.agent/skills/api-patterns/rest.md +0 -40
  189. package/.agent/skills/api-patterns/security-testing.md +0 -122
  190. package/.agent/skills/api-patterns/trpc.md +0 -41
  191. package/.agent/skills/api-patterns/versioning.md +0 -22
  192. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  193. package/.agent/skills/app-builder/feature-building.md +0 -53
  194. package/.agent/skills/app-builder/project-detection.md +0 -34
  195. package/.agent/skills/app-builder/scaffolding.md +0 -118
  196. package/.agent/skills/app-builder/tech-stack.md +0 -40
  197. package/.agent/skills/architecture/context-discovery.md +0 -43
  198. package/.agent/skills/architecture/examples.md +0 -94
  199. package/.agent/skills/architecture/pattern-selection.md +0 -68
  200. package/.agent/skills/architecture/patterns-reference.md +0 -50
  201. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  202. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  203. package/.agent/skills/database-design/database-selection.md +0 -43
  204. package/.agent/skills/database-design/indexing.md +0 -39
  205. package/.agent/skills/database-design/migrations.md +0 -48
  206. package/.agent/skills/database-design/optimization.md +0 -36
  207. package/.agent/skills/database-design/orm-selection.md +0 -30
  208. package/.agent/skills/database-design/schema-design.md +0 -56
  209. package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
  210. package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
  211. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  212. package/.agent/skills/frontend-design/color-system.md +0 -329
  213. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  214. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  215. package/.agent/skills/frontend-design/typography-system.md +0 -363
  216. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  217. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  218. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  219. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  220. package/.agent/skills/game-development/SKILL.md +0 -236
  221. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  222. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  223. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  224. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  225. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  226. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  227. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  228. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
  229. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  230. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  231. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  232. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  233. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  234. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  235. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  236. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  237. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  238. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  239. package/.agent/skills/mobile-design/platform-android.md +0 -666
  240. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  241. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  242. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  243. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  244. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  245. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  246. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  247. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  248. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  249. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  250. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -1,119 +1,225 @@
1
- ---
2
- name: vue-expert
3
- description: Vue 3 Composition API and modern Vue ecosystem expert. Use when building Vue applications, optimizing reactivity, component architecture, Nuxt 3 development, performance tuning, and State Management (Pinia).
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 1.0.0
6
- last-updated: 2026-03-12
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # Vue Expert - Claude Code Sub-Agent
11
-
12
- You are a senior Vue expert with expertise in Vue 3 Composition API and the modern Vue ecosystem. Your focus spans reactivity mastery, component architecture, performance optimization, and full-stack development with emphasis on creating maintainable applications that leverage Vue's elegant simplicity.
13
-
14
- ## Configuration & Context Assessment
15
- When invoked:
16
- 1. Query context manager for Vue project requirements and architecture
17
- 2. Review component structure, reactivity patterns, and performance needs
18
- 3. Analyze Vue best practices, optimization opportunities, and ecosystem integration
19
- 4. Implement modern Vue solutions with reactivity and performance focus
20
-
21
- ---
22
-
23
- ## The Vue Excellence Checklist
24
- - Vue 3 best practices followed completely
25
- - Composition API utilized effectively
26
- - TypeScript integration proper maintained
27
- - Component tests > 85% achieved
28
- - Bundle optimization completed thoroughly
29
- - SSR/SSG support implemented properly
30
- - Accessibility standards met consistently
31
- - Performance optimized successfully
32
-
33
- ---
34
-
35
- ## Core Architecture Decision Framework
36
-
37
- ### Reactivity Mastery & Composition API
38
- * **Composition API Patterns:** Setup function, reactive refs, reactive objects, computed properties, watchers, lifecycle hooks, provide/inject.
39
- * **Reactivity Optimization:** Ref vs reactive, shallow reactivity, computed efficiency, watch vs watchEffect, effect scope, minimal ref unwrapping, memory management.
40
-
41
- ### Component Design & Ecosystem
42
- * **Component Architecture:** Composables design, renderless components, scoped slots, dynamic/async components, teleport usage, and transition effects.
43
- * **State Management (Pinia):** Store design, actions/getters, plugins usage, devtools integration, persistence, module patterns, and type safety.
44
- * **Ecosystem Integration:** VueUse utilities, Vue Router advanced, Vite configuration, Vue Test Utils, Vitest setup.
45
-
46
- ### Extreme Performance Optimization
47
- * Component lazy loading
48
- * Tree shaking & Bundle splitting
49
- * Virtual scrolling & Memoization
50
- * Reactive optimization & Render optimization
51
-
52
- ---
53
-
54
- ## Nuxt 3 Development
55
-
56
- Build universal Vue applications that excel in speed and SEO:
57
- - Universal rendering & Edge caching strategies
58
- - File-based routing & Auto imports
59
- - Server API routes (Nitro server)
60
- - Data fetching & SEO optimization
61
- - Monitoring setup & Analytics integrated
62
-
63
- ---
64
-
65
- ## Testing & Quality Assurance
66
-
67
- * **Testing Coverage:** Component testing, Composable testing, Store testing, E2E (Cypress), Visual regression, Performance, Accessibility.
68
- * **TypeScript Accuracy:** Component typing, Props validation, Emit typing, Ref typing, Composable types, Store typing, Strict mode.
69
- * **Enterprise Patterns:** Micro-frontends, Design systems, Error handling, Logging systems, CI/CD integration.
70
-
71
- ---
72
-
73
- ## Output Format
74
-
75
- When this skill produces or reviews code, structure your output as follows:
76
-
77
- ```
78
- ━━━ Vue Expert Report ━━━━━━━━━━━━━━━━━━━━━━━━
79
- Skill: Vue Expert
80
- Language: [detected language / framework]
81
- Scope: [N files · N functions]
82
- ─────────────────────────────────────────────────
83
- Passed: [checks that passed, or "All clean"]
84
- ⚠️ Warnings: [non-blocking issues, or "None"]
85
- ❌ Blocked: [blocking issues requiring fix, or "None"]
86
- ─────────────────────────────────────────────────
87
- VBC status: PENDING → VERIFIED
88
- Evidence: [test output / lint pass / compile success]
89
- ```
90
-
91
- **VBC (Verification-Before-Completion) is mandatory.**
92
- Do not mark status as VERIFIED until concrete terminal evidence is provided.
93
-
94
-
95
- ---
96
-
97
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
98
-
99
- **Slash command: `/tribunal-frontend`**
100
- **Active reviewers: `logic` · `security` · `frontend` · `type-safety`**
101
-
102
- ### ❌ Forbidden AI Tropes in Vue
103
- 1. **Sloppy Layout Generation** — never build UI without explicit dimensional boundaries. You MUST apply strict numeric design tokens (e.g. 4px grid spacing) and explicit flex/grid layouts.
104
- 2. **Using Options API inappropriately** — always prefer Composition API (`<script setup>`) in Vue 3 projects.
105
- 3. **Mutating props directly** — never mutate props; always emit updates using `defineEmits` or implement `v-model`.
106
- 4. **Overusing Vuex** — never hallucinate Vuex in a modern Vue 3 project; Pinia is the standard.
107
- 4. **Losing reactivity** — destructuring reactive objects without `toRefs()` or pulling store state without `storeToRefs()`.
108
- 5. **Missing `key` in `v-for`** — always provide a unique, stable key. No using iteration index as the key.
109
-
110
- ### Pre-Flight Self-Audit
111
-
112
- Review these questions before generating Vue/Nuxt code:
113
- ```text
114
- Did I maximize Composition API and `<script setup>` usage?
115
- ✅ Are there any reactivity losses in destructured props or state?
116
- ✅ Did I ensure no sensitive environment variables leak to the client (`useRuntimeConfig` private keys)?
117
- Did I use proper async component loading for heavy dependencies?
118
- Did I implement complete TypeScript coverage (emit types, prop types, refs)?
119
- ```
1
+ ---
2
+ name: vue-expert
3
+ description: Vue 3.5+ Composition API. Script setup, reactive refs, computed, watchers, composables, Pinia, Vue Router 4, Nuxt 4. Use when building Vue/Nuxt applications.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 3.1.0
6
+ last-updated: 2026-04-06
7
+ ---
8
+
9
+ # Vue 3.5+ & Nuxt 4 — Dense Reference
10
+
11
+ ## Hallucination Traps (Read First)
12
+ - Options API (`data()`, `methods:`, `computed:`) `<script setup lang="ts">`
13
+ - ❌ `defineComponent()` with `<script setup>` → ✅ redundant, skip it
14
+ - `defineModel` in Vue < 3.4 → ✅ added in 3.4+
15
+ - ❌ `ref.value` in template → ✅ auto-unwrapped in template (no `.value`)
16
+ - `reactive()` for primitives use `ref()` — `reactive()` breaks on reassign
17
+ - ❌ `watch(state.count, ...)` (primitive) `watch(() => state.count, ...)`
18
+ - `onBeforeMount` for data fetch use `await` directly in `<script setup>` + `<Suspense>`
19
+ - Pinia `this.$store` `useStore()` from `pinia`
20
+ - ❌ `useRoute()` / `useRouter()` outside setup → ✅ only works inside `<script setup>` or composables
21
+
22
+ ---
23
+
24
+ ## `<script setup>` The Only Way
25
+
26
+ ```vue
27
+ <script setup lang="ts">
28
+ import { ref, computed, watch, onMounted } from "vue";
29
+
30
+ // Props
31
+ const props = defineProps<{ title: string; count?: number }>();
32
+ // With defaults:
33
+ const props = withDefaults(defineProps<{ variant?: "primary" | "secondary" }>(), { variant: "primary" });
34
+
35
+ // Emits
36
+ const emit = defineEmits<{ update: [value: string]; delete: [id: number] }>();
37
+
38
+ // v-model (Vue 3.4+)
39
+ const modelValue = defineModel<string>(); // default model
40
+ const count = defineModel<number>("count"); // named model
41
+
42
+ // Expose to parent ref
43
+ defineExpose({ reset: () => {}, focus: () => {} });
44
+ </script>
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Reactivity
50
+
51
+ ```ts
52
+ // ref — for primitives and objects (access via .value in JS, auto-unwrap in template)
53
+ const count = ref(0);
54
+ count.value++;
55
+
56
+ // reactive for objects (loses reactivity on reassign/destructure)
57
+ const state = reactive({ name: "Alice", age: 25 });
58
+ // const { name } = state; // loses reactivity
59
+ // const name = computed(() => state.name);
60
+
61
+ // computed — cached, re-runs only when deps change
62
+ const doubled = computed(() => count.value * 2);
63
+ const fullName = computed({
64
+ get: () => `${first.value} ${last.value}`,
65
+ set: (v) => { [first.value, last.value] = v.split(" "); },
66
+ });
67
+
68
+ // watch
69
+ watch(count, (newVal, oldVal) => {}); // immediate: false by default
70
+ watch(() => props.id, fetchUser, { immediate: true });
71
+ watchEffect(() => { console.log(count.value); }); // auto-tracks deps
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Composables (Custom Hooks)
77
+
78
+ ```ts
79
+ // useCounter.ts
80
+ export function useCounter(initial = 0) {
81
+ const count = ref(initial);
82
+ const increment = () => count.value++;
83
+ const reset = () => (count.value = initial);
84
+ return { count: readonly(count), increment, reset };
85
+ }
86
+
87
+ // useAsyncData.ts
88
+ export function useAsyncData<T>(fn: () => Promise<T>) {
89
+ const data = ref<T | null>(null);
90
+ const error = ref<Error | null>(null);
91
+ const loading = ref(false);
92
+ async function execute() {
93
+ loading.value = true;
94
+ try { data.value = await fn(); }
95
+ catch (e) { error.value = e as Error; }
96
+ finally { loading.value = false; }
97
+ }
98
+ execute();
99
+ return { data, error, loading, refresh: execute };
100
+ }
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Pinia
106
+
107
+ ```ts
108
+ // stores/counter.ts
109
+ import { defineStore } from "pinia";
110
+ export const useCounterStore = defineStore("counter", () => {
111
+ const count = ref(0); // Setup Store (preferred)
112
+ const doubled = computed(() => count.value * 2);
113
+ function increment() { count.value++; }
114
+ return { count, doubled, increment };
115
+ });
116
+
117
+ // Usage in component:
118
+ const store = useCounterStore();
119
+ // ❌ const { count } = store; // loses reactivity!
120
+ // ✅ const count = storeToRefs(store).count;
121
+ import { storeToRefs } from "pinia";
122
+ const { count } = storeToRefs(store);
123
+
124
+ // Persist plugin:
125
+ import { createPinia } from "pinia";
126
+ import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
127
+ const pinia = createPinia().use(piniaPluginPersistedstate);
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Vue Router 4
133
+
134
+ ```ts
135
+ // router/index.ts
136
+ import { createRouter, createWebHistory } from "vue-router";
137
+ const router = createRouter({
138
+ history: createWebHistory(),
139
+ routes: [
140
+ { path: "/", component: () => import("./views/Home.vue") }, // lazy-loaded
141
+ { path: "/user/:id", component: UserView, props: true }, // props:true passes params as props
142
+ { path: "/:pathMatch(.*)*", component: NotFound }, // 404 catch-all
143
+ ],
144
+ });
145
+ // Route guards
146
+ router.beforeEach(async (to, from) => {
147
+ if (to.meta.requiresAuth && !isLoggedIn()) return { name: "Login" };
148
+ });
149
+
150
+ // In component:
151
+ import { useRouter, useRoute } from "vue-router";
152
+ const router = useRouter();
153
+ const route = useRoute();
154
+ router.push({ name: "User", params: { id: 42 } });
155
+ const userId = route.params.id as string;
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Templates
161
+
162
+ ```vue
163
+ <template>
164
+ <!-- v-model -->
165
+ <input v-model="email" />
166
+ <MyInput v-model:title="title" v-model:count="count" /> <!-- named model -->
167
+
168
+ <!-- v-for with key (ALWAYS set key) -->
169
+ <li v-for="item in items" :key="item.id">{{ item.name }}</li>
170
+
171
+ <!-- Dynamic components -->
172
+ <component :is="currentTab" />
173
+
174
+ <!-- Teleport — render in a different DOM node -->
175
+ <Teleport to="body"><Modal v-if="showModal" /></Teleport>
176
+
177
+ <!-- Transition -->
178
+ <Transition name="fade" mode="out-in">
179
+ <component :is="view" :key="view" />
180
+ </Transition>
181
+
182
+ <!-- Suspense (async components / composables with await) -->
183
+ <Suspense><AsyncComponent /><template #fallback>Loading...</template></Suspense>
184
+ </template>
185
+
186
+ <style>
187
+ /* Transition CSS */
188
+ .fade-enter-active, .fade-leave-active { transition: opacity 0.3s; }
189
+ .fade-enter-from, .fade-leave-to { opacity: 0; }
190
+ </style>
191
+ ```
192
+
193
+ ---
194
+
195
+ ## Nuxt 4
196
+
197
+ ```
198
+ auto-imports: ref, computed, useRoute, useFetch — no imports needed
199
+ composables/: auto-imported by filename
200
+ server/api/: server routes (GET/POST)
201
+ pages/: file-based routing
202
+ layouts/: layout components
203
+ middleware/: route guards
204
+ ```
205
+
206
+ ```ts
207
+ // pages/users/[id].vue
208
+ const { id } = useRoute().params; // auto-imported
209
+ const { data, error, refresh } = await useFetch(`/api/users/${id}`, {
210
+ lazy: false, // SSR: wait for data before rendering
211
+ server: true, // fetch on server (default)
212
+ transform: (r) => r.user,
213
+ });
214
+ // ❌ TRAP: useFetch in Nuxt ≠ @tanstack/react-query. It's Nuxt-specific.
215
+ // ❌ TRAP: useAsyncData key must be UNIQUE per page/component
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Performance
221
+ - ✅ Use `v-memo` for expensive list items that rarely change
222
+ - ✅ `defineAsyncComponent(() => import("./Heavy.vue"))` for code splitting
223
+ - ✅ `:key` on `<component :is>` forces re-mount on route change (prevents stale state)
224
+ - ❌ Avoid deeply nested reactive objects — use `shallowRef`/`shallowReactive` for large data
225
+ - ❌ Never mutate props — emit events instead