본문으로 건너뛰기
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 / 1,000자

이 양식은 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의 스킬 모두 보기

이 스킬의 문제 신고