本文へ移動
cccskills
無料GitHub で公開

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 (watch/watchEffect) to keep behavior predictable and reactive. Use this skill when user asks for creating adaptable or reusable composables.

日本語の概要は準備中です。原文の説明を表示しています。

Tenon-Net/TenonAdminスター 39(GitHub 39 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md2.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

[OMX] Run an anti-slop cleanup/refactor/deslop workflow

日本語の概要は準備中です。原文の説明を表示しています。

Tenon-Net/TenonAdmin392026年10月23日 更新

analyze

無料

[OMX] 只读调查跨文件的行为、原因或架构问题,提供源码证据与不确定性。单文件查找无需此流程。

日本語の概要は準備中です。原文の説明を表示しています。

Tenon-Net/TenonAdmin392026年10月23日 更新

ask

無料

[OMX] Ask a local external advisor CLI (Claude or Gemini) and capture a reusable artifact

日本語の概要は準備中です。原文の説明を表示しています。

Tenon-Net/TenonAdmin392026年10月23日 更新

autopilot

無料

[OMX] Supervise deep interview, consensus planning, and durable goal execution for explicit hands-off delivery.

日本語の概要は準備中です。原文の説明を表示しています。

Tenon-Net/TenonAdmin392026年10月23日 更新

[OMX] Stateful validator-gated research loop with native-hook persistence

日本語の概要は準備中です。原文の説明を表示しています。

Tenon-Net/TenonAdmin392026年10月23日 更新

[OMX] Bounded best-practice research wrapper using official/upstream evidence first

日本語の概要は準備中です。原文の説明を表示しています。

Tenon-Net/TenonAdmin392026年10月23日 更新

Tenon-Net のスキルをすべて見る

このスキルの問題を報告する