К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

create-adaptable-composable — скилл для Claude Code: Vue composable

Скилл для создания переиспользуемых Vue composable, которые принимают значения, рефы или геттеры и работают одинаково во всех случаях. Пригодится, когда нужна библиотечная composable, адаптивная к разным типам входов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add vuejs-ai/skills --skill create-adaptable-composable -a claude-code
Открыть на GitHub

Что делает create-adaptable-composable

Скилл учит создавать composable, которые принимают MaybeRef или MaybeRefOrGetter — типы, позволяющие пользователю передать обычное значение, ref, computed или функцию-геттер. Внутри composable используются toValue() для получения значения и toRef() для создания реактивного источника, чтобы логика работала предсказуемо в watch или watchEffect.

Скилл предлагает четыре шага: уточнить назначение и API composable, выбрать, какие параметры должны быть реактивными, нормализовать входы с помощью toValue()/toRef() внутри эффектов, реализовать ядро composable. Есть разница: для read-only параметров берёшь MaybeRefOrGetter, для двусторонних — MaybeRef. Для колбэков и функций-предикатов MaybeRefOrGetter не подходит.

Требует Vue 3 или Nuxt 3. В репозитории примеры useDocumentTitle и useCounter — одна читает title с watch, вторая модифицирует count через toRef.

Какие задачи решает

  • написать composable, которая принимает значение, ref или геттер без проверок
  • сделать реактивный параметр, который не ломается при изменении типа входа
  • выбрать между MaybeRef и MaybeRefOrGetter в зависимости от использования
  • нормализовать входы в watch и watchEffect без потери реактивности
  • создать переиспользуемую composable для библиотеки

Примеры запросов агенту

  • Помоги написать composable useCounter, которая принимает MaybeRef для count и возвращает функцию add
  • Создай adaptable composable для отслеживания ширины экрана, принимающую MaybeRefOrGetter для selector
  • Нужна composable с двусторонним параметром формы — используй MaybeRef и toRef внутри watch

Как установить create-adaptable-composable

1Через Skills CLI (Vercel)

npx skills add vuejs-ai/skills --skill create-adaptable-composable -a claude-code

2Вручную: положить файлы

~/.claude/skills/create-adaptable-composable/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/create-adaptable-composable/

Из того же набора7

Весь набор →
vue-best-practices github.com/vuejs-ai Задаёт стандарты разработки на Vue 3 с Composition API и TypeScript. Пригодится при написании SFC-компонентов, composables и настройке реактивности. Claude Code CX Codex Cursor +1 42 700установок vue-debug-guides github.com/vuejs-ai Скилл для диагностики ошибок Vue 3: реактивность, watchers, компоненты, шаблоны и hydration. Когда агент видит баг во Vue-проекте, он находит причину по каталогу типовых проблем. Claude Code CX Codex Cursor +1 26 700установок vue-pinia-best-practices github.com/vuejs-ai Скилл с лучшими практиками Pinia: как избежать ошибок при настройке хранилищ, сохранить реактивность и правильно организовать state management в Vue-проекте. Claude Code CX Codex Cursor +1 16 800установок vue-router-best-practices github.com/vuejs-ai Скилл обучает ИИ-кодера правилам Vue Router 4: навигационные гварды, обработка параметров маршрутов и синхронизация с жизненным циклом компонента. Помогает избежать бесконечных редиректов, утечек памяти и рассинхронизации данных. Claude Code CX Codex Cursor +1 14 900установок vue-testing-best-practices github.com/vuejs-ai Скилл с правилами и паттернами тестирования приложений на Vue 3. Помогает настроить Vitest и писать тесты компонентов без ошибок внедрения зависимостей. Claude Code CX Codex Cursor +1 13 600установок vue-options-api-best-practices github.com/vuejs-ai Помогает писать компоненты Vue 3 в стиле Options API и разбирать типичные ошибки с TypeScript, методами и хуками жизненного цикла. Claude Code CX Codex Cursor +1 11 600установок

Похожие

build-zoom-meeting-sdk-app официальный anthropics Инструкции и шаблоны для интеграции Zoom Meeting SDK в веб и нативные клиенты. Помогает настроить JWT-подписи и устранить баги вёрстки. Claude Code CX Codex Cursor +1 2 100установок impeccable-design-polish nexu-io Доводит готовую веб-страницу до чистого вида: убирает визуальные штампы нейросетей, правит контрастность и чинит мобильную вёрстку. Claude Code CX Codex Cursor +1 2 500установок threejs-shaders CloudAI-X Скилл помогает писать кастомные GLSL-шейдеры и материалы для Three.js r186, настраивать униформы и переводить код на TSL для WebGPU. Claude Code CX Codex Cursor +1 15 400установок material-ui-theming mui Скилл для создания и управления темами Material UI: палитры, цветовые схемы, CSS-переменные, переключение light/dark и TypeScript-расширения. Пригодится, если вы строите дизайн-систему или меняете визуальную идентичность приложения. Claude Code CX Codex Cursor +1 604установок zoom-apps-sdk официальный anthropics Справочный скилл по Zoom Apps SDK. Помогает агенту писать веб-приложения, которые работают внутри клиента Zoom: встречи, вебинары, Zoom Phone. Claude Code CX Codex Cursor +1 2 000установок frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. Claude Code Claude.ai 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. Claude Code 986 201установок

Вопросы о create-adaptable-composable

Как установить create-adaptable-composable в Claude Code?

Выполни npx skills add vuejs-ai/skills --skill create-adaptable-composable -a claude-code, затем открой ~/.claude/skills/create-adaptable-composable/SKILL.md.

В чём разница между MaybeRef и MaybeRefOrGetter?

MaybeRef — для параметров, которые нужно менять (ref, computed, значение). MaybeRefOrGetter добавляет геттер (функцию), подходит для read-only источников вроде селекторов. Если параметр — колбэк, MaybeRefOrGetter использовать нельзя, чтобы не вызвать функцию случайно.

Когда применять этот скилл?

Когда пишешь composable для библиотеки или компонента, которые разные разработчики будут использовать с разными типами входов — значениями, рефами, computed или геттерами. Скилл гарантирует, что composable будет работать во всех случаях.

Исходный текст

SKILL.md · MIT
---
name: create-adaptable-composable
description: Create a library-grade Vue composable that accepts maybe-reactive inputs (MaybeRef / MaybeRefOrGetter) so callers can pass a plain value, ref, or getter. Normalize inputs with toValue()/toRef() inside reactive effects (watch/watchEffect) to keep behavior predictable and reactive. Use this skill when user asks for creating adaptable or reusable composables.
license: MIT
metadata:
  author: github.com/vuejs-ai
  version: "17.0.0"
compatibility: Requires Vue 3 (or above) or Nuxt 3 (or above) project
---

# Create Adaptable Composable

Adaptable composables are reusable functions that can accept both reactive and non-reactive inputs. This allows developers to use the composable in a variety of contexts without worrying about the reactivity of the inputs.

Steps to design an adaptable composable in Vue.js:
1. Confirm the composable's purpose and API design and expected inputs/outputs.
2. Identify inputs params that should be reactive (MaybeRef / MaybeRefOrGetter).
3. Use `toValue()` or `toRef()` to normalize inputs inside reactive effects.
4. Implement the core logic of the composable using Vue's reactivity APIs.

## Core Type Concepts

### Type Utilities

```ts
/**
 * value or writable ref (value/ref/shallowRef/writable computed)
 */
export type MaybeRef<T = any> = T | Ref<T> | ShallowRef<T> | WritableComputedRef<T>;

/**
 * MaybeRef<T> + ComputedRef<T> + () => T
 */
export type MaybeRefOrGetter<T = any> = MaybeRef<T> | ComputedRef<T> | (() => T);
```

### Policy and Rules

- Read-only, computed-friendly input: use `MaybeRefOrGetter`
- Needs to be writable / two-way input: use `MaybeRef`
- Parameter might be a function value (callback/predicate/comparator): do not use `MaybeRefOrGetter`, or you may accidentally invoke it as a getter.
- DOM/Element targets: if you want computed/derived targets, use `MaybeRefOrGetter`.

When `MaybeRefOrGetter` or `MaybeRef` is used: 
- resolve reactive value using `toRef()` (e.g. watcher source)
- resolve non-reactive value using `toValue()`

### Examples

Adaptable `useDocumentTitle` Composable: read-only title parameter

```ts
import { watch, toRef } from 'vue'
import type { MaybeRefOrGetter } from 'vue'

export function useDocumentTitle(title: MaybeRefOrGetter<string>) {
  watch(toRef(title), (t) => {
    document.title = t
  }, { immediate: true })
}
```

Adaptable `useCounter` Composable: two-way writable count parameter

```ts
import { watch, toRef } from 'vue'
import type { MaybeRef } from 'vue'

function useCounter(count: MaybeRef<number>) {
  const countRef = toRef(count)
  function add() {
    countRef.value++
  }
  return { add }
}
```

© github.com/vuejs-ai · MIT · vuejs-ai/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой