create-adaptable-composable

Library-grade Vue composables that accept plain values, refs, or getters as inputs. Use MaybeRefOrGetter for read-only inputs (computed-friendly) and MaybeRef for writable two-way inputs; normalize with toValue() or toRef() inside reactive effects Normalize inputs using toRef() for watcher sources and toValue() for non-reactive resolution to keep behavior predictable across different input types Avoid MaybeRefOrGetter when parameters are callbacks, predicates, or comparators to prevent accidental function invocation as getters Requires Vue 3+ or Nuxt 3+

INSTALLATION
npx skills add https://github.com/vuejs-ai/skills --skill create-adaptable-composable
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$2a

/**

  • MaybeRef + ComputedRef + () => T

*/

export type MaybeRefOrGetter<T = any> = MaybeRef | ComputedRef | (() => 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 }

}

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card