Claude-skill-registry dev-vue-component
Create, modify, and maintain Vue 3 components with TypeScript and SCSS. Use when building Vue components, modifying .vue files, defining component props/emits, styling with SCSS, or documenting component APIs. Handles component architecture, type safety, styling patterns, and documentation.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dev-vue-component" ~/.claude/skills/majiayu000-claude-skill-registry-dev-vue-component && rm -rf "$T"
skills/data/dev-vue-component/SKILL.mdDeveloping Vue Components
When to use this skill
Use this skill when you need to:
- Create new Vue 3 components from scratch
- Modify existing Vue components (template, logic, or styles)
- Define or update component props, emits, and TypeScript types
- Write or update component SCSS styles
- Document component APIs and usage
- Refactor components for better type safety or structure
- Review components for best practices compliance
Component File Structure
: Template and component logic , read more invue-guide.mdcompName.vue
: Props, emits, types, constants (public API) read more in typescript-guide.mdcompName.ts
: Component styles, read more in scss-guide.mdcompName.scss
: Component documentation, read more in documentation-guide.mdcompName.md
Instructions
Creating a New Component
Follow these steps to create a new Vue component:
-
Create component folder:
compName/ -
Document the component (spec-first):
- Create
if using Histoire, otherwise createcompName.story.mdcompName.md - Document intended props, emits, slots, and usage
- Define component behavior and user interaction patterns
- See documentation-guide.md for format
- Create
-
Define types and API (
):compName.ts- Define props interface with JSDoc comments
- Define emits interface
- Export types, constants, and utilities
- See typescript-guide.md for patterns
-
Implement component logic (
):compName.vue- Import types from
compName.ts - Use
with TypeScript<script setup> - Implement component logic based on documented behavior
- See vue-guide.md for structure
- Import types from
-
Build template and styling (
+compName.vue
):compName.scss- Implement template structure in
compName.vue - Style the component in
using BEM or scoped stylescompName.scss - Avoid magic values, use CSS variables
- See scss-guide.md for guidelines
- Implement template structure in
Modifying an Existing Component
-
Understand current state:
- Read
for component intentcompName.md - Review existing implementation files
- Read
-
Make changes:
- Update
if props/emits/types changecompName.ts - Update
for template or logic changescompName.vue - Update
for styling changescompName.scss - Consult reference docs as needed
- Update
-
Update documentation:
- Update component documentation to reflect changes
- Update tests if behavior changed (if tests exist)
- Update stories if using Histoire (see vue-story skill)
-
Verify consistency:
- Ensure all files are aligned
- Check type safety (no
orany
)unknown - Verify tests pass (if tests exist)
Quality Checklist
Before completing work on any component, verify:
- Type-safe props and emits with JSDoc documentation
- Component documentation is current and accurate
- Styles follow project patterns (no magic values)
- No hard-coded strings (use i18n if available)
- Tests updated and passing (if tests exist)
- Stories updated (if using Histoire - see vue-story skill)
- Code follows naming conventions (camelCase for JS, kebab-case for CSS/events)
- Error handling with graceful degradation
Best Practices
Follow these principles for maintainable, high-quality components:
Architecture:
- Single Responsibility Principle - each component does one thing well
- High cohesion, low coupling - minimize dependencies
- Clear and consistent API design
- Avoid prop drilling - use provide/inject or composables for deep data
- Design for testability and maintainability
Naming:
for component names, variables, functions, TypeScript interfacescamelCase
for CSS class names and event nameskebab-case- Descriptive names that convey purpose
Type Safety:
- Always define props and emits interfaces
- Avoid
andany
typesunknown - Use JSDoc comments for props and emits
- Leverage TypeScript's inference when possible
Error Handling:
- Implement graceful degradation
- Provide user-friendly error messages
- Add appropriate console warnings/errors for developers
- Handle edge cases explicitly
Note:
- For detailed patterns and examples, consult the reference documentation in the
directory.references/ - Starter templates are available in the
directory.assets/