skills/builderx_spa-design/SKILL.md
Standardized design system for BuilderX SPA. Covers Typography (text_design.scss), Forms (Input, Select, Checkbox), Layout (Table, Drawer, Modal), and Feedback (Button, Alert). Use this skill to build UI consistently using pre-built components instead of raw HTML/Tailwind.
npx skillsauth add vuluu2k/skills builderx_spa-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
⚠️ CRITICAL RULE: Do NOT create custom CSS/SCSS for basic UI elements (text, buttons, inputs, modals). ALWAYS use the components and utility classes documented here.
| Topic | Description | Reference | |-------|-------------|-----------| | Typography | Headers, Body text, Colors, utility classes | core-text-design |
We use Ant Design Vue wrapped in custom components to enforce our design language.
Cheat Sheet: If you need a standard UI element, it likely exists in @/components/design/[Name].vue with standard AntD props + our custom props (like label, message for forms).
| Category | Available Components | Reference |
|----------|-----------------------|-----------|
| Forms & Inputs | Input, Select, Checkbox, Radio, Switch, DatePicker, RangePicker | features-forms |
| Layout & Data | Table, Tabs, Drawer, Modal, Sidebar, Pagination | features-layout-navigation |
| Actions & Feedback | Button, Alert, Toastify, Badge, Empty, Tooltip | features-feedback-actions |
<script setup>
// ALWAYS import from @/components/design, NOT generic antdv
import { Button, Input, Table } from '@/components/design'
</script>
Absolutely DO NOT use custom CSS (custom classes in <style>) for layout and positioning. Combine the Design Component with Tailwind CSS to handle layout, spacing, sizing, and positioning.
Usage Rules:
<Button> controls color, hover effect, loading state).flex, gap-4, p-6, col-span-2), spacing, sizing, and positioning.<template>
<!-- Use Tailwind classes 'flex', 'gap-4', 'p-6', 'items-center' to design layout -->
<div class="flex flex-col gap-4 p-6 bg-white rounded-lg shadow-sm">
<div class="flex items-center justify-between">
<h2 class="text-design-h3-bold">User Information</h2>
<Button type="primary" label="Save Profile" @click="save" />
</div>
<!-- 2-column Grid Layout using Tailwind -->
<div class="grid grid-cols-2 gap-4">
<!-- Input component scales to its parents grid item -->
<Input v-model:value="user.firstName" label="First Name" />
<Input v-model:value="user.lastName" label="Last Name" />
<!-- Force column spanning -->
<Input
class="col-span-2"
v-model:value="user.bio"
label="Biography"
isTextArea
/>
</div>
</div>
</template>
💡 Override Note: Avoid overwriting internal styles of a Design Component. Before overriding UI, check for available props (such as size, type, or ghost). If you absolutely must override:
- For small tweaks: Create a custom class and put it in your
<style scoped>block.- For heavy customizations: Create a separate
[name]_custom_design.scssfile and import it, keeping the Vue file clean. DO NOT use/deep/or::v-deepdirectly on the component tag to brute-force styles.
development
Vue 3 Composition API — <script setup>, reactivity (shallowRef/ref), props without destructure, computed, watch, provide/inject, and composables. Use when the project uses modern Vue 3 Composition API style.
development
Vue 3 Options API — data, props, computed, methods, watch, emits, provide/inject, lifecycle hooks, and mixins. Use when the project uses Options API style (Vue 2 legacy or explicit Vue 3 Options API preference).
tools
Best practices for mixing Ant Design Vue components with Tailwind CSS utility classes. Use this skill to keep styling consistent without custom CSS files.
development
Pinia state management for Vue 3 using Composition API (Setup Stores) — TypeScript-first, storeToRefs for reactivity, focused stores, and API calls in composables. Use when the project uses Vue 3 Composition API / <script setup>.