V
vue3-naiveui-fsd
About vue3-naiveui-fsd
A development skill for building Vue 3 applications with Naive UI, Feature-Sliced Design, and TypeScript. It provides conventions and reference patterns for architecture, API services, state, forms, routing, and shared UI.
Key features
- 01Feature-Sliced Design layer rules
- 02TypeScript strict-mode conventions
- 03Pinia store patterns
- 04API and composable guidance
- 05Form, page, and shared UI patterns
- 06Router and internationalization guidance
Use cases
- 01Structuring a Vue 3 app with FSD
- 02Defining typed API services and stores
- 03Building forms and paginated pages
- 04Applying shared UI and routing conventions
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ shohzod-abdusamatov-7777777/ agent-skills --skill vue3-naiveui-fsdAfter installing, type/vue3-naiveui-fsdin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/api-layer.mdcomposables.mdforms.mdfsd-architecture.mdpages.mdrouter.mdshared-ui.mdstores.mdtypes.mdutilities.mdDetails
From the project READMEVue 3 + Naive UI + FSD Senior Development Skill
Expert-level skill for building production-ready Vue 3 applications with Naive UI, Feature-Sliced Design architecture, TypeScript, and industry best practices.
Tech Stack
- Vue 3 with Composition API (
<script setup>) - Naive UI v2.43+ component library
- Feature-Sliced Design (FSD) architecture
- TypeScript with strict mode
- Pinia for state management
- Vue Router 4 for routing
- Tailwind CSS v4 for utility styles
- Axios for HTTP requests
- Day.js for date handling
- Lucide Vue Next for icons
- Vue I18n for internationalization
References
Detailed documentation is organized in the references/ folder:
| File | Description |
|---|---|
| fsd-architecture.md | FSD directory structure and layer rules |
| api-layer.md | Axios setup, interceptors, service pattern |
| types.md | TypeScript patterns, I-prefix convention |
| stores.md | Pinia global stores (auth, operation) |
| composables.md | usePagination, useValidationRules, useTheme |
| forms.md | Form composable pattern (useXxxForm) |
| pages.md | Page component with table, CRUD |
| shared-ui.md | BaseTable, BaseModal, buttons |
| utilities.md | Formatters, helpers |
| router.md | Router config, guards, loading bar |
Quick Start Patterns
Component Structure
<script setup lang="ts">
import { ref, computed, onMounted } from 'vue'
import { NCard, NButton } from 'naive-ui'
import type { IUser } from '@/entities/user'
const props = defineProps<{ userId: number }>()
const emit = defineEmits<{ success: [] }>()
const loading = ref(false)
// ... logic
</script>
<template>
<NCard>
<!-- content -->
</NCard>
</template>
FSD Layer Import Rules
app → pages, features, entities, shared
pages → features, entities, shared
features → entities, shared
entities → shared only
shared → nothing (self-contained)
Type Naming Convention
IUser // Base entity
IUserList // List item (simplified)
IUserDetail // Full detail
IUserForm // Form data
IUserListParams // Query params
Code Quality Checklist
- TypeScript strict mode passes
- Types use
Iprefix convention - FSD layer boundaries respected
- API services in
shared/api/ - Form logic in composables (
useXxxForm) - Pagination uses
usePagination - Validation uses
useValidationRules - i18n for all user-facing text
- Loading/error states handled
Comments
Markdown supported