المهارات create-adaptable-composable
📦

create-adaptable-composable

آمن

Создание адаптируемого Vue composable

Создание Vue composables с гибкими типами входных данных — сложная задача. Этот скилл предоставляет шаблон для создания библиотечных composables, которые принимают как реактивные, так и не реактивные входные данные, используя типы MaybeRef и MaybeRefOrGetter.

يدعم: Claude Codex Code(CC)
⚠️ 66 ضعيف
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "create-adaptable-composable". Создайте composable useDocumentTitle, который принимает MaybeRefOrGetter для заголовка

النتيجة المتوقعة:

  • 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 })
  • }

استخدام "create-adaptable-composable". Создайте composable useCounter с MaybeRef для начального счёта

النتيجة المتوقعة:

  • 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 }
  • }

التدقيق الأمني

آمن
v1 • 2/9/2026

Static analyzer flagged TypeScript template literals as shell backticks and random text patterns as cryptographic algorithms. All findings are false positives. The skill contains only Vue.js documentation with TypeScript code examples for creating composables. No shell commands, cryptographic code, or security risks exist.

1
الملفات التي تم فحصها
77
الأسطر التي تم تحليلها
3
النتائج
1
إجمالي عمليات التدقيق

مشكلات عالية المخاطر (2)

False Positive: Cryptographic Algorithm Detection
Static analyzer incorrectly flagged text patterns as cryptographic code. Analysis confirms this is Vue.js documentation describing composable design patterns. No MD5, SHA1, DES, or other weak cryptographic algorithms exist in this file.
False Positive: Shell Command Detection
Static analyzer flagged backticks as Ruby/shell command execution. These are TypeScript template literals used throughout the code examples. No shell commands, exec(), system(), or backtick invocation exists.
مشكلات متوسطة المخاطر (1)
False Positive: Template Literal Detection
TypeScript template literals flagged as potential external commands. TypeScript uses backticks for multi-line strings and template expressions in code examples.
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
23
المجتمع
80
الأمان
91
الامتثال للمواصفات

ماذا يمكنك بناءه

Создание менеджера заголовков только для чтения

Создайте composable, который устанавливает заголовок документа и принимает заголовок как MaybeRefOrGetter, позволяя использовать простые строки, refs или функции-геттеры.

Создание composable счётчика с записью

Создайте composable счётчика с MaybeRef входным значением для начального счёта, обеспечив двустороннее связывание с реактивными и не реактивными значениями.

Проектирование гибкого обработчика полей формы

Спроектируйте composables, которые принимают DOM-элементы или вычисляемые цели как MaybeRefOrGetter для гибкой обработки ввода в различных контекстах.

جرّب هذه الموجهات

Базовый запрос на composable
Создайте адаптируемый composable под названием useUserPreferences, который принимает MaybeRefOrGetter для настройки темы. Комposable должен следить за значением и применять тему к телу документа.
Запрос на двустороннее связывание
Создайте composable useLocalStorage, который принимает MaybeRef для начального значения и ключа. Комposable должен синхронизировать значение ref с localStorage и возвращать writable ref.
Паттерн вычисляемого ввода
Создайте composable useDebouncedValue, где входными данными является MaybeRefOrGetter. Используйте watch() с toRef() для реактивных источников и возвращайте вычисляемое значение, которое обновляется с задержкой.
Composable с несколькими входами
Спроектируйте composable useFormValidator, который принимает несколько MaybeRef входных данных для значений полей формы и MaybeRefOrGetter для правил валидации. Нормализуйте все входные данные и верните состояние валидации.

أفضل الممارسات

  • Используйте MaybeRefOrGetter для входных данных только для чтения, удобных для вычислений, чтобы принимать refs, getters или простые значения
  • Используйте toRef() внутри источников watch/watchEffect для корректного разрешения реактивных зависимостей
  • Используйте toValue() для нормализации не реактивных значений для извлечения фактических значений
  • Избегайте MaybeRefOrGetter для параметров функций, которые могут быть callback-функциями, чтобы предотвратить случайный вызов

تجنب

  • Не передавайте пользовательские callbacks напрямую в MaybeRefOrGetter без type guards
  • Не нормализуйте входные данные вне реактивных контекстов, таких как watch или watchEffect
  • Не смешивайте toRef() и toValue() непоследовательно внутри одного composable
  • Не предполагайте, что все параметры должны быть MaybeRef — используйте обычные типы, когда реактивность не нужна

الأسئلة المتكررة

В чём разница между MaybeRef и MaybeRefOrGetter?
MaybeRef принимает значения, refs, shallowRefs и writable computed refs. MaybeRefOrGetter добавляет ComputedRef и функции-геттеры. Используйте MaybeRef для параметров с записью и MaybeRefOrGetter для входных данных только для чтения.
Когда следует использовать toRef() против toValue()?
Используйте toRef() для источников watch/watchEffect для поддержания реактивности. Используйте toValue() для извлечения простых значений из refs, getters или не реактивных входных данных в не реактивных контекстах.
Можно ли использовать эти composables в Nuxt 3?
Да, Nuxt 3 построен на Vue 3 и полностью поддерживает Composition API, включая MaybeRef, MaybeRefOrGetter, toRef() и toValue().
Как я должен обрабатывать значения undefined или null?
Явно включайте null или undefined в определение типа, например MaybeRef<T | null>. Функция toValue() корректно обрабатывает null/undefined.
Следует ли использовать MaybeRefOrGetter для обработчиков событий?
Нет, избегайте MaybeRefOrGetter для callbacks. Callbacks — это функции, а не геттеры. Использование MaybeRefOrGetter может случайно вызвать их. Вместо этого используйте явные типы функций.
Как создать composables с несколькими параметрами MaybeRef?
Применяйте паттерн к каждому параметру индивидуально. Используйте toRef() или toValue() в watch/watchEffect для нормализации каждого входного. Пример: watch([toRef(a), toRef(b)], ([newA, newB]) => {...})

تفاصيل المطور

المؤلف

vuejs-ai

الترخيص

MIT

مرجع

main

بنية الملفات

📄 SKILL.md