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.
Skill by github.com/vuejs-ai
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/liangmiqwq-create-adaptable-composable
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill 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
- Compatibility
- Requires Vue 3 (or above) or Nuxt 3 (or above) project
- Metadata
- author: github.com/vuejs-ai · version: 17.0.0
- Instructions
- 68 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# 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
```ts
/**
* 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
```ts
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
```ts
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 }
}
```From liangmiQwQ/skills, MIT.
More from liangmiQwQ/skills
- 0.592score
antfu-design
antfu
Use when building or restyling devtools-style Vue 3 UIs with @antfu/design — wiring the composable UnoCSS preset, using the semantic token vocabulary…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
antfu-issue-triage
Anthony Fu
Triage open issues and PRs of the current GitHub repo - find already-fixed, duplicate, and spam items, suggest labels, gauge demand from reactions and…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
finding-on-github
liangmiQwQ
If you are now working with an open source project while I'm not a maintainer or author Load this skill when I ask things like `is there a bug?` and when you…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
code-style
liangmiQwQ
You are required to load this before writing code.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
self-review
liangmiQwQ
Load this skill when you are required to handling Codex's review suggestion on GitHub (`@codex review`).
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
precise-minor-adjustment
liangmiQwQ
Load this skill when you are modifying existing code, or doing small patch and adjustment.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
creating-projects
liangmiQwQ
Load this skill when you are required to create projects.
SkillAFreshness: A★ 1Claude Code +9 - 0.579score
choosing-tools
liangmiQwQ
Routes to the right tool/library choices based on project type (web, JS CLI, JS library, Rust).
SkillAFreshness: A★ 1Claude Code +9 - 0.544score
adding-tests
liangmiQwQ
Load this skill when you add a test, including modifying a test to fit an added function.
SkillBFreshness: B★ 1Claude Code +9 - 0.541score
creating-pr
liangmiQwQ
Load this skill before creating, drafting, modifying, or submitting PR on GitHub
SkillBFreshness: B★ 1Claude Code +9 - 0.426score
designing-ui
liangmiQwQ
As long as you are doing UI / style-related work, you should load this skill
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 17, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 17.0.0
- License
- MIT
- Repository
- github.com/liangmiQwQ/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
- 0.569score
create-adaptable-composable
github.com/vuejs-ai
Create a library-grade Vue composable that accepts maybe-reactive inputs (MaybeRef / MaybeRefOrGetter) so callers can pass a plain value, ref, or getter.
SkillBFreshness: B★ 4Claude Code +9 - 0.339score
create-adaptable-composable
github.com/vuejs-ai
Create a library-grade Vue composable that accepts maybe-reactive inputs (MaybeRef / MaybeRefOrGetter) so callers can pass a plain value, ref, or getter.
SkillAFreshness: AClaude Code +9 - 0.246score
create-adaptable-composable
github.com/vuejs-ai
Create a library-grade Vue composable that accepts maybe-reactive inputs (MaybeRef / MaybeRefOrGetter) so callers can pass a plain value, ref, or getter.
SkillDFreshness: DClaude Code +9
More from github.com/vuejs-ai
Cite this page
create-adaptable-composable skill. Agent Mart. https://agentmart.dev/skills/liangmiqwq-create-adaptable-composable (last updated 2026-10-24)