aceternity-ui
100+ animated React components (Aceternity UI) for Next.js with Tailwind. Use for hero sections, parallax, 3D effects, or…
Pinia Colada data fetching for Vue/Nuxt with useQuery, useMutation. Use for async state, query cache, SSR, or encountering invalidation, hydration, TanStack Vue Query migration errors.
Claude Code
$ npx -y skills add secondsky/claude-skills --skill pinia-colada --agent claude-code
Codex
$ npx skills add secondsky/claude-skills --skill pinia-colada -a codex -y
Cursor
$ npx skills add secondsky/claude-skills --skill pinia-colada -a cursor -y
Gemini CLI
$ npx skills add secondsky/claude-skills --skill pinia-colada -a gemini-cli -y
GitHub Copilot
$ npx skills add secondsky/claude-skills --skill pinia-colada -a github-copilot -y
OpenCode
$ npx skills add secondsky/claude-skills --skill pinia-colada -a opencode -y
Windsurf
$ npx skills add secondsky/claude-skills --skill pinia-colada -a windsurf -y
name: pinia-colada
description: "Pinia Colada data fetching for Vue/Nuxt with useQuery, useMutation. Use for async state, query cache, SSR, or encountering invalidation, hydration, TanStack Vue Query migration errors."
license: MIT
metadata:
version: "2.0.0"
pinia_colada_version: "0.17.9"
pinia_version: "3.0.4"
vue_version: "3.5.25"
last_verified: "2025-11-28"
production_tested: true
token_savings: "~65%"
errors_prevented: 12
references_included: 4
keywords:
- Pinia Colada
- "@pinia/colada"
- useQuery
- useMutation
- useQueryCache
- data fetching
- async state
- Vue 3
- Nuxt
- Pinia
- server state
- caching
- staleTime
- gcTime
- query invalidation
- prefetching
- optimistic updates
- mutations
- query keys
- paginated queries
- SSR
- server-side rendering
- Nuxt module
- "@pinia/colada-nuxt"
- query cache
- auto-refetch
- cache invalidation
- request deduplication
- loading states
- error handling
- onSettled
- onSuccess
- onError
- defineColadaLoader**Status**: Production Ready ✅ | **Last Updated**: 2025-11-28 **Latest Version**: @pinia/colada@0.17.9 | **Dependencies**: Vue 3.5.17+, Pinia 2.2.6+ or 3.0+
---
**For Vue Projects:**
bun add @pinia/colada pinia # preferred # or: bun add @pinia/colada pinia
**For Nuxt Projects:**
bun add @pinia/nuxt @pinia/colada-nuxt # install both Pinia and Pinia Colada modules # or: bun add @pinia/nuxt @pinia/colada-nuxt
**Why this matters:**
**For Vue Projects:**
// src/main.ts
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { PiniaColada } from '@pinia/colada'
import App from './App.vue'
const app = createApp(App)
const pinia = createPinia()
app.use(pinia)
app.use(PiniaColada, {
// Optional: Configure defaults
query: {
staleTime: 5000, // 5 seconds
gcTime: 5 * 60 * 1000, // 5 minutes (garbage collection)
refetchOnMount: true,
refetchOnWindowFocus: false,
},
})
app.mount('#app')**For Nuxt Projects:**
// nuxt.config.ts
export default defineNuxtConfig({
modules: [
'@pinia/nuxt', // Must be before @pinia/colada-nuxt
'@pinia/colada-nuxt',
],
// Optional: Configure Pinia Colada
piniaColada: {
query: {
staleTime: 5000,
gcTime: 5 * 60 * 1000,
},
},
})**CRITICAL:**
<script setup lang="ts">
import { useQuery } from '@pinia/colada'
interface Todo {
id: number
title: string
completed: boolean
}
async function fetchTodos(): Promise<Todo[]> {
const response = await fetch('/api/todos')
if (!response.ok) {
throw new Error('Failed to fetch todos')
}
return response.json()
}
const {
data, // Ref<Todo[] | undefined>
isPending, // Ref<boolean> - initial loading
isLoading, // Ref<boolean> - any loading (including refetch)
error, // Ref<Error | null>
refresh, // () => Promise<void> - manual refetch
} = useQuery({
key: ['todos'],
query: fetchTodos,
})
</script>
<template>
<div>
<div v-if="isPending">Loading todos...</div>
<div v-else-if="error">Error: {{ error.message }}</div>
<ul v-else-if="data">
<li v-for="todo in data" :key="todo.id">
{{ todo.title }}
</li>
</ul>
</div>
</template>**CRITICAL:**
<script setup lang="ts">
import { useMutation, useQueryCache } from '@pinia/colada'
interface NewTodo {
title: string
}
async function createTodo(newTodo: NewTodo) {
const response = await fetch('/api/todos', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(newTodo),
})
if (!response.ok) throw new Error('Failed to create todo')
return response.json()
}
const queryCache = useQueryCache()
const {
mutate, // (variables: NewTodo) => Promise<void>
mutateAsync, // (variables: NewTodo) => Promise<Result>
isPending, // Ref<boolean>
error, // Ref<Error | null>
data, // Ref<Result | undefined>
} = useMutation({
mutation: createTodo,
// Invalidate todos query after mutation succeeds
async onSettled({ id }) {
await queryCache.invalidateQueries({ key: ['todos'] })
},
})
function handleAddTodo(title: string) {
mutate({ title })
}
</script>
<template>
<form @submit.prevent="handleAddTodo(newTitle)">
<input v-model="newTitle" required />
<button type="submit" :disabled="isPending">
{{ isPending ? 'Adding...' : 'Add Todo' }}
</button>
<div v-if="error">Error: {{ error.message }}</div>
</form>
</template>**Why this works:**
---
✅ Include all variables used in query function in the key ✅ Throw errors in query/mutation functions for proper error handling ✅ Use `useQueryCache()` for invalidation
145 production-ready skills for Claude Code CLI 🔌 Platform / Harness Support These plugins ship as Claude Code marketplace plugins (.claude-plugin/ manifests) and Codex CLI plugins (.codex-plugin/ manifests).
100+ animated React components (Aceternity UI) for Next.js with Tailwind. Use for hero sections, parallax, 3D effects, or…
Secure API authentication with JWT, OAuth 2.0, API keys. Use for authentication systems, third-party integrations,…
Creates comprehensive API changelogs documenting breaking changes, deprecations, and migration strategies for API consumers. Use…
Verifies API contracts between services using consumer-driven contracts, schema validation, and tools like Pact. Use when testing…
Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use…
Implements standardized API error responses with proper status codes, logging, and user-friendly messages. Use when building…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.