| name | vue-project-scaffolder |
| description | Scaffold a production-ready Vue 3 + Vite + Tailwind v4 project with full automation and validation. Creates properly configured projects with all dependencies validated and ready to run. Use when this capability is needed. |
| metadata | {"author":"EfeDeveloper"} |
Vue Project Scaffolder
Guide the user through setting up a production-ready Vue 3 project with Vite, Tailwind CSS v4, and shadcn/vue. Validate configurations and dependencies as they progress.
When to Use This
When user says things like:
- "vue project"
- "create vue project"
- "new vue project"
- "scaffold vue"
- "setup vue"
- "vue project my-app"
How It Works
This skill automatically creates and fully configures a production-ready Vue 3 project in 4 steps:
- Creates Vite project with TypeScript template
- Installs dependencies — Tailwind v4, utilities, and all required packages
- Runs setup script —
node scripts/setup.js handles file copying, validation, and auto-upgrades
- Reports success — Project is ready for development
Result: A fully configured, ready-to-run Vue 3 + Tailwind v4 project. No manual configuration needed.
Critical Patterns
MUST DO (Non-negotiable)
- ASK user for project name — Required for project creation
- ASK user for package manager — Never assume or default without asking
- EXECUTE all commands automatically — Don't just guide, actually run them
- Verify package manager exists on user's system before proceeding
- Validate dependencies BEFORE saying "done" — Check package.json against minimum requirements
- DO NOT run
npm run dev — User runs the dev server themselves after validation
Minimum Dependencies (Must Validate)
dependencies:
- vue >= 3.5.30
- tailwindcss >= 4.2.2
- @tailwindcss/vite >= 4.2.2
- clsx >= 2.1.1
- class-variance-authority >= 0.7.1
- tailwind-merge >= 3.5.0
- lucide-vue-next >= 1.0.0
devDependencies:
- typescript >= 5.9.3
- vite >= 8.0.1
- @vitejs/plugin-vue >= 6.0.5
- @vue/tsconfig >= 0.9.0
- @types/node >= 24.12.0
- tw-animate-css >= 1.4.0
- vite-plugin-vue-devtools >= 8.0.7
- vue-tsc >= 3.2.5
Technical
- Tailwind v4 uses
@tailwindcss/vite plugin (NOT v3 PostCSS config)
- Zero manual configuration: All files pre-configured, ready to edit
- NO
tailwind.config.js — v4 is plugin-based only
- NO
postcss.config.js — Vite plugin handles everything
Code Examples
Vite config with Tailwind v4 (most critical):
import tailwindcss from '@tailwindcss/vite'
import vue from '@vitejs/plugin-vue'
import path from 'node:path'
export default defineConfig({
plugins: [vue(), tailwindcss()],
resolve: {
alias: { '@': path.resolve(__dirname, './src') },
},
})
Style imports (only this, no PostCSS):
@import "tailwindcss";
Information to Gather
ALWAYS ask the user these questions before starting:
-
Project name (required)
- "What should the project folder be called?"
- Example: "my-app", "portfolio", "dashboard"
-
Package manager (MUST ASK)
- "Which package manager do you want to use: pnpm, npm, yarn, or bun?"
- This is CRITICAL — all subsequent commands must be adapted to the chosen manager
- If user doesn't specify: Check what's available on their system, suggest pnpm as default
- DO NOT skip this question
-
shadcn (optional, for later)
- Ask: "Do you want to add shadcn/vue components? (Optional, can add later)"
- If yes: Document the init command for them to run after project setup
- If no: Skip — user can add components anytime with
{pm} dlx shadcn-vue@latest init
Implementation Summary
YOU (the agent) EXECUTE these steps. User does NOT run commands manually.
Adapt ALL commands to the chosen package manager. Use the Package Manager Equivalents table below.
Execution Steps (Agent Runs These)
-
Verify prerequisites (Node.js >= 20.19.0, package manager available)
-
EXECUTE: Create Vite project: {pm} create vite@latest {project-name} --template vue-ts
-
EXECUTE: Navigate: cd {project-name}
-
EXECUTE: Install dependencies: {pm} add tailwindcss @tailwindcss/vite clsx class-variance-authority tailwind-merge lucide-vue-next
-
EXECUTE: Install dev dependencies: {pm} add -D @types/node tw-animate-css typescript vite @vitejs/plugin-vue @vue/tsconfig vue-tsc
-
EXECUTE: Run the automated setup script:
node scripts/setup.js {project-dir} {package-manager}
This script automatically:
- ✅ Copies config files from
assets/
- ✅ Removes incompatible files (Tailwind v4)
- ✅ Validates all 15 dependencies
- ✅ Auto-upgrades outdated packages
- ✅ Verifies final configuration
-
VERIFY: Confirm setup completed successfully by checking:
- Script output shows all ✅ checkmarks
- No ❌ errors in validation
- All 6+ files copied successfully
-
DO NOT EXECUTE:
- Do NOT run
{pm} run dev — user will do this themselves
- Do NOT run
shadcn-vue init — if user wants it, they'll add components later
- Do NOT make manual edits to config files — the script handles everything
-
Report: Show user the success summary and next steps
For detailed explanations, see references/implementation-guide.md
Success Criteria
BEFORE saying "done", validate EVERY item below:
File Structure
- ✅
vite.config.ts exists with @tailwindcss/vite plugin and @/ alias
- ✅
tsconfig.json, tsconfig.app.json, and tsconfig.node.json all exist with correct config
- ✅
tsconfig.node.json has moduleResolution: "bundler" (fixes vite.config.ts type errors)
- ✅
src/style.css exists with @import "tailwindcss" and @import "tw-animate-css"
- ✅
src/App.vue exists with gradient content
- ✅
README.md exists in project root with setup and next-steps documentation
Dependencies in package.json
Check these MUST be in dependencies:
- ✅ vue >= 3.5.30
- ✅ tailwindcss >= 4.2.2
- ✅ @tailwindcss/vite >= 4.2.2
- ✅ clsx >= 2.1.1
- ✅ class-variance-authority >= 0.7.1
- ✅ tailwind-merge >= 3.5.0
- ✅ lucide-vue-next >= 1.0.0
Check these MUST be in devDependencies:
- ✅ typescript >= 5.9.3
- ✅ vite >= 8.0.1
- ✅ @vitejs/plugin-vue >= 6.0.5
- ✅ @vue/tsconfig >= 0.9.0
- ✅ @types/node >= 24.12.0
- ✅ tw-animate-css >= 1.4.0
- ✅ vite-plugin-vue-devtools >= 8.0.7
- ✅ vue-tsc >= 3.2.5
Critical (Should NOT exist)
- ✅ NO
tailwind.config.js (v4 is plugin-based)
- ✅ NO
postcss.config.js (Vite plugin handles it)
Project Ready
- ✅ User can navigate to project folder
- ✅ User can run
{pm} run dev to start development
- ✅ All files copied correctly from assets
- ✅
node_modules/ has all packages installed
Error Handling
CRITICAL: Do NOT say "done" if any of these fail. Fix the issue first.
Step Failures
If any step fails:
- Explain what went wrong clearly
- Show the exact command that failed
- Suggest fix or troubleshooting steps
- Retry or ask user if they want to continue
Dependency Validation Failure
If package.json is missing ANY minimum dependency:
- ❌ DO NOT say "project is ready"
- Check what's missing:
{pm} list
- Install missing packages:
{pm} add {missing-package}
- Re-validate package.json
- Only say "done" when ALL dependencies are present
Common Issues
| Problem | Solution |
|---|
| Package manager not found | Check if which pnpm, which npm, etc. work. Ask user to install. |
| Permission denied during creation | Try sudo or check folder permissions. |
| Vite creation hangs | Ctrl+C and retry with --force flag if needed. |
| Dependencies installation fails | Check internet connection, retry with --legacy-peer-deps if npm. |
| Missing minimum dependencies | Install manually: {pm} add {package}@{version} |
tailwind.config.js accidentally created | Delete it. v4 uses plugin-based config. |
| Configuration file won't copy | Check file permissions and disk space. |
Package Manager Equivalents
NEVER hardcode commands! Always check which PM the user chose and adapt accordingly.
| Action | pnpm | npm | yarn | bun |
|---|
| Create project | pnpm create vite@latest {name} --template vue-ts | npm create vite@latest {name} -- --template vue-ts | yarn create vite {name} --template vue-ts | bun create vite {name} --template vue-ts |
| Add dependency | pnpm add {pkg} | npm install {pkg} | yarn add {pkg} | bun add {pkg} |
| Add dev dependency | pnpm add -D {pkg} | npm install --save-dev {pkg} | yarn add -D {pkg} | bun add -D {pkg} |
| Install Tailwind v4 | pnpm add tailwindcss @tailwindcss/vite clsx class-variance-authority tailwind-merge lucide-vue-next | npm install tailwindcss @tailwindcss/vite clsx class-variance-authority tailwind-merge lucide-vue-next | yarn add tailwindcss @tailwindcss/vite clsx class-variance-authority tailwind-merge lucide-vue-next | bun add tailwindcss @tailwindcss/vite clsx class-variance-authority tailwind-merge lucide-vue-next |
| Install dev tools | pnpm add -D @types/node tw-animate-css typescript vite @vitejs/plugin-vue @vue/tsconfig vite-plugin-vue-devtools vue-tsc | npm install -D @types/node tw-animate-css typescript vite @vitejs/plugin-vue @vue/tsconfig vite-plugin-vue-devtools vue-tsc | yarn add -D @types/node tw-animate-css typescript vite @vitejs/plugin-vue @vue/tsconfig vite-plugin-vue-devtools vue-tsc | bun add -D @types/node tw-animate-css typescript vite @vitejs/plugin-vue @vue/tsconfig vite-plugin-vue-devtools vue-tsc |
| Init shadcn | pnpm dlx shadcn-vue@latest init | npx shadcn-vue@latest init | yarn dlx shadcn-vue@latest init | bun x shadcn-vue@latest init |
| Add shadcn component | pnpm dlx shadcn-vue@latest add button | |
Commands (Agent Executes These)
AGENT: Replace {pm} with the user's chosen package manager and EXECUTE each command
1. Create Project
{pm} create vite@latest {project-name} --template vue-ts
cd {project-name}
2. Install Dependencies
{pm} add tailwindcss @tailwindcss/vite clsx class-variance-authority tailwind-merge lucide-vue-next
{pm} add -D @types/node tw-animate-css typescript vite @vitejs/plugin-vue @vue/tsconfig vite-plugin-vue-devtools vue-tsc
3. Automated Setup
Run the setup script (from skill root directory):
node scripts/setup.js {full-path-to-project} {package-manager}
For detailed script documentation, see references/SCRIPTS.md.
4. STOP HERE - Do NOT Run Dev Server
DO NOT execute {pm} run dev or equivalent
The user will run it themselves after setup completes:
cd {project-name}
{pm} run dev
Complete Workflow by Package Manager
Example with bun:
bun create vite my-app --template vue-ts && cd my-app
bun add tailwindcss @tailwindcss/vite clsx class-variance-authority tailwind-merge lucide-vue-next
bun add -D @types/node tw-animate-css typescript vite @vitejs/plugin-vue @vue/tsconfig vite-plugin-vue-devtools vue-tsc
node /path/to/skill/scripts/setup.js $(pwd) bun
bun run dev
Final Report (What to Tell User)
After completing all steps and validating dependencies, provide this summary:
✅ PROJECT CREATED AND CONFIGURED
Project Name: {project-name}
Location: {project-path}
Package Manager: {pm}
📦 Dependencies Installed:
- Vue 3 (3.5.30+)
- Vite (8.0.1+)
- Tailwind CSS v4 (4.2.2+) with @tailwindcss/vite plugin
- TypeScript (5.9.3+)
- All utilities: clsx, tailwind-merge, lucide-vue-next, tw-animate-css
🎨 Configuration:
- vite.config.ts ✅
- tsconfig.json with @ alias ✅
- tsconfig.app.json with strict rules ✅
- src/style.css with Tailwind imports ✅
- src/App.vue with demo component ✅
⚡ Next Steps:
1. Open your terminal
2. Navigate to the project: cd {project-name}
3. Start development server: {pm} run dev
4. Open http://localhost:5173 in your browser
📚 Optional Next Steps:
- **Add shadcn components:** `{pm} dlx shadcn-vue@latest init` (then add individual components)
- **Add state management:** `{pm} add pinia`
- **Add routing:** `{pm} add vue-router`
**IMPORTANT:**
- ✅ All minimum dependencies are validated and installed
- ✅ Project is ready to develop immediately
- ✅ Tailwind v4 is already configured (NO extra config needed)
- ❌ Do NOT run `{pm} run dev` — user will do this themselves
- ℹ️ Point user to the README.md in the project for detailed next steps
---
## Resources
### Templates (Copy & Use)
- **[assets/vite.config.ts](assets/vite.config.ts)** — Vite configuration with Tailwind v4 and Vue plugins
- **[assets/tsconfig.json](assets/tsconfig.json)** — Root TypeScript config with path aliases
- **[assets/tsconfig.app.json](assets/tsconfig.app.json)** — App TypeScript config with path aliases
- **[assets/tsconfig.node.json](assets/tsconfig.node.json)** — Node TypeScript config for vite.config.ts (CRITICAL - fixes type resolution)
- **[assets/style.css](assets/style.css)** — Minimal style.css with Tailwind import
- **[assets/App.vue](assets/App.vue)** — Demo App.vue with working shadcn Button
- **[assets/components.json](assets/components.json)** — shadcn configuration file
- **[assets/README.md](assets/README.md)** — Project README template
### Scripts Documentation
- **[references/SCRIPTS.md](references/SCRIPTS.md)** — Complete automation scripts guide, troubleshooting, and technical details
### Official Documentation
- [shadcn/vue Installation](https://www.shadcn-vue.com/docs/installation/vite)
- [Tailwind CSS v4 with Vite](https://tailwindcss.com/docs/installation/using-vite)
- [Vite Documentation](https://vite.dev)
- [Vue 3 Guide](https://vuejs.org)
---
> Source: [EfeDeveloper/edfer-skills](https://github.com/EfeDeveloper/edfer-skills) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-04-19 -->