Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
vuejs-ai avatar

Create Adaptable Composable

  • 8.6k installs
  • 2.8k repo stars
  • Updated May 30, 2026
  • vuejs-ai/skills

create-adaptable-composable is an agent skill that Create a library-grade Vue composable that accepts maybe-reactive inputs (MaybeRef / MaybeRefOrGetter) so callers can pass a plain value, ref, or getter. Normal.

About

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. --- 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.

  • Create Adaptable Composable
  • Confirm the composable's purpose and API design and expected inputs/outputs.
  • Identify inputs params that should be reactive (MaybeRef / MaybeRefOrGetter).
  • Use `toValue()` or `toRef()` to normalize inputs inside reactive effects.
  • Implement the core logic of the composable using Vue's reactivity APIs.

Create Adaptable Composable by the numbers

  • 8,584 all-time installs (skills.sh)
  • +154 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #81 of 2,203 Security skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

create-adaptable-composable capabilities & compatibility

Capabilities
create adaptable composable · confirm the composable's purpose and api design · identify inputs params that should be reactive ( · use `tovalue()` or `toref()` to normalize inputs · implement the core logic of the composable using
Use cases
documentation
From the docs

What create-adaptable-composable says it does

Normalize inputs with toValue()/toRef() inside reactive effects (watch/watchEffect) to keep behavior predictable and reactive.
SKILL.md
Use this skill when user asks for creating adaptable or reusable composables.
SKILL.md
This allows developers to use the composable in a variety of contexts without worrying about the reactivity of the inputs.
SKILL.md
Steps to design an adaptable composable in Vue.js: 1.
SKILL.md
npx skills add https://github.com/vuejs-ai/skills --skill create-adaptable-composable

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs8.6k
repo stars2.8k
Security audit3 / 3 scanners passed
Last updatedMay 30, 2026
Repositoryvuejs-ai/skills

What problem does create-adaptable-composable solve for developers using this skill?

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

Who is it for?

Developers who need create-adaptable-composable patterns described in the cached skill documentation.

Skip if: Skip when docs are empty or the task is outside the skill's documented scope.

When should I use this skill?

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

What you get

Actionable workflows and conventions from SKILL.md for create-adaptable-composable.

  • Vue composable source file
  • MaybeRef-normalized reactive effects

By the numbers

  • Skill metadata version 17.0.0
  • Requires Vue 3+ or Nuxt 3+ per compatibility field

Files

SKILL.mdMarkdownGitHub ↗

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

/**
 * 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

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

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

Related skills

Forks & variants (1)

Create Adaptable Composable has 1 known copy in the catalog totaling 2.4k installs. They canonicalize to this original listing.

  • hyf0 - 2.4k installs

How it compares

Pick create-adaptable-composable over generic Vue scaffolding skills when composable callers may pass mixed reactive and static inputs.

FAQ

What does create-adaptable-composable do?

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 (w

When should I use create-adaptable-composable?

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 (w

Is create-adaptable-composable safe to install?

Review the Security Audits panel on this page before installing in production.

Securityappsec

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.