Back to skills
SKILL.md
2916 Extract Component Props 3bcedb0d
ASecurity**Impact: HIGH** - extract props, emits, slots types from .vue components Use `vue-component-type-helpers` to extract types from `.vue` components: ```bash npm install -D vue-component-type-helpers ``` ```typescript import type { ComponentProps, ComponentEmit, ComponentSlots, ComponentExposed } from 'vue-component-type-helpers' import MyButton from './MyButton.vue' type Props = ComponentProps<typeof MyButton> type Emits = ComponentEmit<typeof MyButton> type Slots = ComponentSlots<typeof MyBut...
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Security analysis
96/100- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add tools-only/X-Skills --skill 2916-extract-component-props_3bcedb0d --agent claude-codeAre you the author of 2916 Extract Component Props 3bcedb0d?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-2916-extract-component-props-3bcedb0d)---
title: Extract Component Props
impact: HIGH
impactDescription: extract props, emits, slots types from .vue components
type: capability
tags: typescript, props, emits, slots, vue-component-type-helpers, wrapper, ComponentProps
---
# Extract Component Props
**Impact: HIGH** - extract props, emits, slots types from .vue components
Use `vue-component-type-helpers` to extract types from `.vue` components:
```bash
npm install -D vue-component-type-helpers
```
```typescript
import type { ComponentProps, ComponentEmit, ComponentSlots, ComponentExposed } from 'vue-component-type-helpers'
import MyButton from './MyButton.vue'
type Props = ComponentProps<typeof MyButton>
type Emits = ComponentEmit<typeof MyButton>
type Slots = ComponentSlots<typeof MyButton>
type Exposed = ComponentExposed<typeof MyButton>
```
## Wrapper Component Pattern
```typescript
import type { ComponentProps } from 'vue-component-type-helpers'
import BaseButton from './BaseButton.vue'
type BaseProps = ComponentProps<typeof BaseButton>
interface Props extends BaseProps {
size: 'sm' | 'md' | 'lg'
}
defineProps<Props>()
```
## Do NOT Use
```typescript
// ❌ Includes Vue internal properties (onUpdate:*, class, style, etc.)
type Props = InstanceType<typeof MyButton>['$props']
```
## Note
Vue's built-in `ExtractPropTypes` is for runtime props objects (`props: { foo: String }`), not for `.vue` components.
## Reference
- [vue-component-type-helpers](https://github.com/vuejs/language-tools/tree/master/packages/component-type-helpers)
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.