Vue Expert
Jeffallan/claude-skills
Builds Vue 3 apps with the Composition API and script setup, Pinia state, Nuxt 3, Vite tuning and Quasar or Capacitor mobile builds, checked with vue-tsc and Vitest.
Pinia v3 Vue state management with defineStore, getters, actions.
$ npx skills add secondsky/claude-skills --skill pinia-v3 -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install secondsky/claude-skills pinia-v3 --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/pinia-v3/skills/pinia-v3 .claude/skills/pinia-v3 && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pinia-v3" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/pinia-v3/skills/pinia-v3 into .claude/skills/pinia-v3/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pinia-v3", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/secondsky/claude-skills/tree/main/plugins/pinia-v3/skills/pinia-v3Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add secondsky/claude-skills --skill pinia-v3 -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install secondsky/claude-skills pinia-v3 --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/pinia-v3/skills/pinia-v3 .agents/skills/pinia-v3 && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pinia-v3" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/pinia-v3/skills/pinia-v3 into .agents/skills/pinia-v3/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pinia-v3", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add secondsky/claude-skills --skill pinia-v3 -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install secondsky/claude-skills pinia-v3 --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/pinia-v3/skills/pinia-v3 .cursor/skills/pinia-v3 && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pinia-v3" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/pinia-v3/skills/pinia-v3 into .cursor/skills/pinia-v3/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pinia-v3", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/secondsky/claude-skills.git --path plugins/pinia-v3/skills/pinia-v3--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add secondsky/claude-skills --skill pinia-v3 -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install secondsky/claude-skills pinia-v3 --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/pinia-v3/skills/pinia-v3 .gemini/skills/pinia-v3 && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pinia-v3" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/pinia-v3/skills/pinia-v3 into .gemini/skills/pinia-v3/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pinia-v3", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install secondsky/claude-skills pinia-v3Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add secondsky/claude-skills --skill pinia-v3 -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/pinia-v3/skills/pinia-v3 .github/skills/pinia-v3 && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pinia-v3" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/pinia-v3/skills/pinia-v3 into .github/skills/pinia-v3/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pinia-v3", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add secondsky/claude-skills --skill pinia-v3 -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install secondsky/claude-skills pinia-v3 --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/pinia-v3/skills/pinia-v3 .opencode/skills/pinia-v3 && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pinia-v3" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/pinia-v3/skills/pinia-v3 into .opencode/skills/pinia-v3/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pinia-v3", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pinia-v3Pinia v3 Vue state management with defineStore, getters, actions.
Pinia V3 is an agent skill from secondsky/claude-skills. Pinia v3 Vue state management with defineStore, getters, actions. Use for Vue 3 stores, Nuxt SSR, Vuex migration, or encountering store composition, hydration, testing errors.
Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including scripts, reference files and assets (for example `references/example-reference.md`, `references/plugins-composables.md` and `references/ssr-and-nuxt.md`).
It sits in Frontend & Design, covering State management. It works with Vue.js and Nuxt. The repository describes itself as: Production-ready skills for Claude Code CLI - Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8837836. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 6 files in scripts/ (TypeScript and Shell), which the agent can run.
Shell commands in SKILL.md call:
bunbunxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
pinia.vuejs.orggithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pinia V3 loads about 4.5k tokens when it runs, and up to ~21k if it reads all its reference files. Until then it costs about 46 tokens; SKILL.md has 1,585 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from secondsky/claude-skills at commit 8837836, republished under its MIT licence (© secondsky). 1,585 words, ~4,458 tokens.
.claude/skills/pinia-v3/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Status: Production Ready ✅ Last Updated: 2025-11-11 Dependencies: Vue 3 (or Vue 2.7 with @vue/composition-api) Latest Versions: pinia@^3.0.4, @pinia/nuxt@^0.11.2, @pinia/testing@^1.0.2
bun add pinia
# or
bun add pinia
# or
bun add piniaFor Vue <2.7 users: Also install @vue/composition-api with bun add @vue/composition-api
Why this matters:
// main.ts
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
const pinia = createPinia()
const app = createApp(App)
app.use(pinia)
app.mount('#app')CRITICAL:
app.use(pinia) before mounting the app// stores/counter.ts
import { defineStore } from 'pinia'
export const useCounterStore = defineStore('counter', {
state: () => ({
count: 0,
name: 'Eduardo'
}),
getters: {
doubleCount: (state) => state.count * 2
},
actions: {
increment() {
this.count++
}
}
})<script setup>
import { useCounterStore } from '@/stores/counter'
const counter = useCounterStore()
</script>
<template>
<div>
<p>Count: {{ counter.count }}</p>
<p>Double: {{ counter.doubleCount }}</p>
<button @click="counter.increment">Increment</button>
</div>
</template>Load references/store-syntax-guide.md for complete comparison of Option vs Setup stores.
Pinia supports two store definition syntaxes:
Option Stores:
$reset() methodSetup Stores:
→ Load references/store-syntax-guide.md for: Complete syntax comparison, examples, choosing criteria
Load references/state-getters-actions.md for complete API reference.
State:
state: () => ({...}) (option) or ref() (setup)store.countstore.count++ or store.$patch({...})store.$reset() (option stores only)Getters:
getters: { double: (state) => state.count * 2 }this (must type return value)Actions:
actions: { increment() { this.count++ } }Store Destructuring:
import { storeToRefs } from 'pinia'
// ✅ For reactivity
const { name, count } = storeToRefs(store)
// ✅ Actions can destructure directly
const { increment } = store→ Load references/state-getters-actions.md for: Complete API, subscriptions, store composition patterns, Options API usage
Load references/plugins-composables.md for complete plugin and composables guide.
pinia.use(({ store, options }) => {
// Add properties to every store
return { customProperty: 'value' }
})Option Stores: Limited to useLocalStorage style in state()
Setup Stores: Full VueUse/composables support
→ Load references/plugins-composables.md for: Complete plugin patterns, VueUse integration, TypeScript typing, common patterns (persistence, router, logger)
Stores need the Pinia instance, which is auto-injected in components but not available in module scope.
// router.ts
import { useUserStore } from '@/stores/user'
// ❌ Fails: Pinia not installed yet
const userStore = useUserStore()
router.beforeEach((to) => {
if (userStore.isLoggedIn) { /* ... */ }
})// router.ts
import { useUserStore } from '@/stores/user'
router.beforeEach((to) => {
// ✅ Works: Called after Pinia is installed
const userStore = useUserStore()
if (userStore.isLoggedIn) { /* ... */ }
})Why it works: Router guards execute AFTER app.use(pinia) completes.
// server-side
export function setupRouter(pinia) {
router.beforeEach((to) => {
const userStore = useUserStore(pinia) // Pass explicitly
})
}Load references/ssr-and-nuxt.md for complete SSR and Nuxt integration guide.
State Hydration:
devalue() (not JSON.stringify)useStore()useStore() BEFORE await in actionsbunx nuxi@latest module add piniaAuto-imports: defineStore, storeToRefs, usePinia, acceptHMRUpdate, all stores
→ Load references/ssr-and-nuxt.md for: Complete SSR patterns, Nuxt configuration, server-side data fetching, SSR pitfalls, debugging
Load references/testing-guide.md for complete testing guide.
import { setActivePinia, createPinia } from 'pinia'
beforeEach(() => {
setActivePinia(createPinia()) // Fresh Pinia for each test
})bun add -d @pinia/testingimport { createTestingPinia } from '@pinia/testing'
mount(Component, {
global: { plugins: [createTestingPinia()] }
})→ Load references/testing-guide.md for: Complete test patterns, stubbing actions, mocking getters, async testing, SSR testing
// stores/counter.ts
import { defineStore, acceptHMRUpdate } from 'pinia'
export const useCounterStore = defineStore('counter', {
// store definition
})
if (import.meta.hot) {
import.meta.hot.accept(acceptHMRUpdate(useCounterStore, import.meta.hot))
}if (import.meta.webpackHot) {
import.meta.webpackHot.accept(acceptHMRUpdate(useCounterStore, import.meta.webpackHot))
}Benefits:
For projects still using Options API, load complete mapper documentation.
→ Load references/state-getters-actions.md for: Complete Options API integration, all mappers (mapStores, mapState, mapWritableState, mapActions)
Load references/vuex-migration.md for complete migration guide.
Key Changes:
namespaced (automatic via store ID)mutations (direct state mutation)commit() with direct mutationsrootState/rootGetters with store importsstore.$reset() instead of custom clear mutationsDirectory: store/modules/ → stores/ (each module = separate store)
→ Load references/vuex-migration.md for: Complete conversion steps, component migration, checklist, gradual migration strategy
✅ Define all state properties in state() or return them from setup stores
✅ Use storeToRefs() when destructuring state/getters in components
✅ Call app.use(pinia) BEFORE mounting the app
✅ Return all state from setup stores (private state breaks SSR/DevTools)
✅ Call useStore() inside functions/callbacks when used outside components
✅ Use acceptHMRUpdate() for development HMR support
✅ Type return values when getters use this to access other getters
✅ Use devalue for SSR state serialization (prevents XSS)
✅ Hydrate state BEFORE calling any useStore() on the client (SSR)
✅ Call all useStore() BEFORE any await in async actions (SSR)
❌ Add state properties dynamically after store creation
❌ Destructure store directly without storeToRefs() (loses reactivity)
❌ Use arrow functions for actions (need this context)
❌ Return private state in setup stores (breaks SSR/DevTools/plugins)
❌ Call useStore() at module top-level (before Pinia installed)
❌ Create circular dependencies between stores (both reading each other's state)
❌ Use JSON.stringify() for SSR serialization (vulnerable to XSS)
❌ Call useStore() after await in actions (breaks SSR)
❌ Forget to type getter return values when using this
❌ Skip beforeEach(() => setActivePinia(createPinia())) in unit tests
This skill prevents 12 documented issues:
Error: State changes don't update in template after destructuring
Why It Happens: JavaScript destructuring breaks Vue reactivity
Prevention: Always use storeToRefs() for state/getters
Error: New properties added after store creation aren't reactive
Why It Happens: Pinia needs all properties defined upfront for reactivity
Prevention: Declare all properties in state(), even if initially undefined
Error: getActivePinia() returns undefined
Why It Happens: Calling useStore() before app.use(pinia)
Prevention: Call app.use(pinia) before mounting or accessing stores
Error: State not serialized/hydrated correctly in SSR Why It Happens: Properties not returned from setup aren't tracked Prevention: Return ALL state properties from setup stores
this Don't Infer TypesError: TypeScript can't infer return type when getter uses this
Source: Known TypeScript limitation with Pinia
Prevention: Explicitly type return value: getterName(): ReturnType { ... }
Error: Can't find this.counterStore in component
Why It Happens: mapStores() automatically adds 'Store' suffix
Prevention: Use store name + 'Store' or call setMapStoreSuffix()
await Break SSRError: Wrong Pinia instance used in SSR, causing state pollution
Why It Happens: await changes execution context in async functions
Prevention: Call all useStore() before any await statements
Error: Maximum call stack exceeded Why It Happens: Both stores read each other's state during initialization Prevention: Use getters/actions for cross-store access, not setup-time reads
Error: User input in state can execute malicious scripts
Why It Happens: JSON.stringify() doesn't escape executable code
Prevention: Use devalue library for safe serialization
Error: Changes to store require full page reload
Why It Happens: Vite/webpack HMR not configured for store
Prevention: Add acceptHMRUpdate() block to each store file
Error: Store state contains non-serializable functions
Why It Happens: Option stores state() can only return writable refs
Prevention: Use setup stores for complex composables, or extract only writable state
Error: Tests affect each other, sporadic failures
Why It Happens: Single Pinia instance shared across tests
Prevention: beforeEach(() => setActivePinia(createPinia())) in test suites
Core: pinia@^3.0.4, vue@^3.5.24
Nuxt: @pinia/nuxt@^0.11.2, nuxt@^4.0.0 (Nuxt 3 reached EOL on 2026-07-31; v4 is the current stable line)
Testing: @pinia/testing@^1.0.2, vitest@^2.0.0
SSR: devalue@^5.3.2 (for safe serialization)
See reference files for complete pattern examples:
references/state-getters-actions.mdreferences/plugins-composables.mdreferences/store-syntax-guide.md (setup store examples)references/state-getters-actions.md (accessing stores outside components)Solution:
app.use(pinia) is called before mountinguseStore() inside callback/functionuseStore(pinia)Solution: Use storeToRefs() instead of direct destructuring
this has TypeScript errorsSolution: Explicitly type the return value: myGetter(): ReturnType { return this.otherGetter }
Solution: Implement custom reset manually:
function $reset() {
count.value = 0
name.value = ''
}
return { count, name, $reset }Solution: Add HMR acceptance block:
if (import.meta.hot) {
import.meta.hot.accept(acceptHMRUpdate(useMyStore, import.meta.hot))
}Solution: Create fresh Pinia in beforeEach():
beforeEach(() => {
setActivePinia(createPinia())
})Load references/store-syntax-guide.md when:
Load references/state-getters-actions.md when:
$patch, $subscribe, or $onActionmapStores, mapState, mapActions)Load references/plugins-composables.md when:
Load references/ssr-and-nuxt.md when:
Load references/testing-guide.md when:
createTestingPiniaLoad references/vuex-migration.md when:
pinia packagecreatePinia()app.use(pinia) before mountingsrc/stores/)defineStore()storeToRefs() when destructuring in componentsthisacceptHMRUpdate() (development)@pinia/nuxt (if using Nuxt)createTestingPinia() (if testing)use[Name]StoreQuestions? Issues?
© secondsky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files (scripts, references, assets) in plugins/pinia-v3/skills/pinia-v3 of secondsky/claude-skills.
Open the folder on GitHubat commit 8837836
Pinia V3 next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pinia V3 this skillsecondsky/claude-skills | 227 | — | ~4.5k | Automated safety check: Pass | MIT | |
| Vue ExpertJeffallan/claude-skills | 12k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Vue Patternsaffaan-m/ECC | 275k | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| PiniaJetBrains/skills | 364 | 9 repos | ~682 | Automated safety check: Pass | None | |
| Vue Masterycigery-useio/useio-skills | 104 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Vue PiniaMindrally/skills | 268 | — | ~2.4k | Automated safety check: Pass | Apache-2.0 |
Jeffallan/claude-skills
Builds Vue 3 apps with the Composition API and script setup, Pinia state, Nuxt 3, Vite tuning and Quasar or Capacitor mobile builds, checked with vue-tsc and Vitest.
affaan-m/ECC
Vue.js 3 Composition API patterns, component architecture, reactivity best practices, Pinia state management, Vue Router navigation, and Nuxt SSR patterns.
JetBrains/skills
Pinia official Vue state management library, type-safe and extensible.
cigery-useio/useio-skills
Vue 3 expert skill for writing production-grade code. An agent skill from cigery-useio/useio-skills.
Mindrally/skills
Vue 3 state management with Pinia using the Composition API, covering setup stores, SSR/Nuxt integration, persistence, and testing.
greensock/gsap-skills
Shows how to use GSAP in Vue, Nuxt, Svelte and other lifecycle-based frameworks: create after mount, scope selectors to the component, and revert on unmount.
secondsky/claude-skills
TanStack AI (alpha) provider-agnostic type-safe chat with streaming for OpenAI, Anthropic, Gemini, Ollama.
secondsky/claude-skills
AutoAnimate (@formkit/auto-animate) zero-config animations for React.
secondsky/claude-skills
MUI Base UI unstyled React components with Floating UI. An agent skill from secondsky/claude-skills.
secondsky/claude-skills
This skill should be used when the user asks to "upload images to Cloudflare", "implement direct creator upload", "configure image transformations", "optimize WebP/AVIF", "create image variants"…
secondsky/claude-skills
Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).
secondsky/claude-skills
Cloudflare Sandboxes SDK for secure code execution in Linux containers at edge.
Categories
Pinia v3 Vue state management with defineStore, getters, actions. Pinia V3 is an agent skill from secondsky/claude-skills. Pinia v3 Vue state management with defineStore, getters, actions.
Pinia V3 fits situations like: encountering store composition; tasks that involve State management.
Run `npx skills add secondsky/claude-skills --skill pinia-v3 -a claude-code`. Or copy the skill folder (plugins/pinia-v3/skills/pinia-v3 in secondsky/claude-skills) into .claude/skills/pinia-v3 in your project. Claude Code loads it when a task matches its description.
Run `npx skills add secondsky/claude-skills --skill pinia-v3 -a codex`. Or copy the skill folder (plugins/pinia-v3/skills/pinia-v3 in secondsky/claude-skills) into .agents/skills/pinia-v3 in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add secondsky/claude-skills --skill pinia-v3 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pinia-v3, .gemini/skills/pinia-v3, .github/skills/pinia-v3 and .opencode/skills/pinia-v3 in your project.
Going by SKILL.md and its folder, Pinia V3 needs TypeScript and a shell for the scripts in its folder and the command-line tools its instructions call (bun and bunx). Our summary lists: Node.js; A Bash shell.
SKILL.md names 2 domains. As links in the text: pinia.vuejs.org and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Pinia V3 is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 16k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Pinia V3: Vue Expert (Jeffallan/claude-skills, 12k stars), Vue Patterns (affaan-m/ECC, 275k stars), Pinia (JetBrains/skills, 364 stars) and Vue Mastery (cigery-useio/useio-skills, 104 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
secondsky (a GitHub user) maintains it in secondsky/claude-skills, which has 227 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 28, 2026.
Source: secondsky/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.