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/teeryxie-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
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/create-adaptable-composable
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
- Metadata
- author: github.com/vuejs-ai · version: 17.0.0 · compatibility: Requires Vue 3 (or above) or Nuxt 3 (or above) project
- 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 teeryxie/myskills, MIT.
More from teeryxie/myskills
- 0.609score
delegate-to-spark
teeryxie
Delegate bounded, independently verifiable coding or validation work to GPT-5.3-Codex-Spark while the main agent retains planning and final judgment.
SkillAFreshness: A★ 4Claude Code +9 - 0.604score
audit
teeryxie
Technical UI audit — a11y, performance, responsive.
SkillAFreshness: A★ 4Claude Code +9 - 0.604score
browseros-neo
teeryxie
The user's dedicated browser for agents, a real browser signed into their accounts, with live logins and a persistent profile.
SkillAFreshness: A★ 4Claude Code +9 - 0.604score
critique
teeryxie
Design lens critique covering visual hierarchy, clarity, and anti-slop patterns — produces a findings table, no code edits unless asked.
SkillAFreshness: A★ 4Claude Code +9 - 0.604score
handoff
teeryxie
Produce a schema-based work handoff when transferring a task to another AI or session, compacting context, switching tools, generating a handoff, or preparing…
SkillAFreshness: A★ 4Claude Code +9 - 0.604score
colorize
teeryxie
Color strategy pass — introduces a single accent at 3-5 intentional placements, or reduces an over-colored UI back to 90% neutral.
SkillAFreshness: A★ 4Claude Code +9 - 0.601score
code-simplify
teeryxie
Use after code has been implemented or changed to remove high-confidence redundancy, unnecessary complexity, and duplicate logic while preserving behavior…
SkillAFreshness: A★ 4Claude Code +9 - 0.569score
docx-polish-pipeline
teeryxie
Turn markdown drafts, outlines, rough notes, or mixed document materials into polished DOCX/PDF deliverables with a repeatable pipeline that normalizes…
SkillBFreshness: B★ 4Claude Code +9 - 0.569score
ego-browser
teeryxie
ego-browser (ego-lite) is a Chromium-based browser designed from the ground up to be friendly to both human users and AI Agents.
SkillBFreshness: B★ 4Claude Code +9 - 0.564score
bolder
teeryxie
Amplify personality — raises layout variance and motion, strengthens typography and one signature detail, without slop.
SkillBFreshness: B★ 4Claude Code +9 - 0.564score
clarify
teeryxie
UX copy review across buttons, errors, empty states, and form hints — critiques by default, applies only on request.
SkillBFreshness: B★ 4Claude Code +9 - 0.564score
animate
teeryxie
Motion design pass — adds purposeful animations or removes excessive ones, respecting MOTION_INTENSITY and the project's animation stack.
SkillBFreshness: B★ 4Claude Code +9
Signals
- Stars
- 4
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 19, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 17.0.0
- License
- MIT
- Repository
- github.com/teeryxie/myskills
- 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.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.328score
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★ 1Claude 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
Cite this page
create-adaptable-composable skill. Agent Mart. https://agentmart.dev/skills/teeryxie-create-adaptable-composable (last updated 2026-10-24)