Agent skill

Pinia V3

by secondsky in secondsky/claude-skills

Pinia v3 Vue state management with defineStore, getters, actions.

MITAuto-check passedFrontend & Design

Install Pinia V3

skills CLI
$ npx skills add secondsky/claude-skills --skill pinia-v3 -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install secondsky/claude-skills pinia-v3 --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
pinia-v3
GitHub stars
227
Token cost
~4.5k tokens
SKILL.md length
1,585 words
Files
16 (incl. scripts, references, assets)
Skills in repo
169
Repo updated
First seen
Licence
MIT

At a glance

Pinia v3 Vue state management with defineStore, getters, actions.

  • Works in 4 steps: Install Pinia → Create and Register Pinia Instance → Define Your First Store → …
  • Encountering store composition
  • SKILL.md covers Quick Start (5 Minutes), The Two Store Syntaxes, State, Getters, and Actions and Plugins and Composables, plus 6 more sections
  • Runs TypeScript and Shell scripts from its folder; calls bun and bunx

What it does

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.

When your agent uses it

  • Encountering store composition
  • Tasks that involve State management

Example prompts

  • “/pinia-v3”

Requirements

  • Node.js
  • A Bash shell

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Install Pinia
  2. Create and Register Pinia Instance
  3. Define Your First Store
  4. Use Store in Components

What it can do on your machine

Read from SKILL.md and the folder at commit 8837836. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 6 files in scripts/ (TypeScript and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • bun
    • bunx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • pinia.vuejs.org
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~46
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~21k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from secondsky/claude-skills at commit 8837836, republished under its MIT licence (© secondsky). 1,585 words, ~4,458 tokens.

Download SKILL.mdSave it as .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.
name
pinia-v3
description
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.
metadata.keywords
pinia, vue state management, pinia stores, defineStore, vue 3 state, state management, getters, actions, pinia plugins, pinia ssr, nuxt pinia, vuex migration…
license
MIT

Pinia v3 - Vue State Management

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


Quick Start (5 Minutes)

1. Install Pinia
bash
bun add pinia
# or
bun add pinia
# or
bun add pinia

For Vue <2.7 users: Also install @vue/composition-api with bun add @vue/composition-api

Why this matters:

  • Pinia is the official Vue state management library
  • Provides better TypeScript support than Vuex
  • Eliminates mutations and namespacing complexity
  • Full DevTools support with time-travel debugging
2. Create and Register Pinia Instance
typescript
// 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:

  • Install Pinia BEFORE using any store
  • Call app.use(pinia) before mounting the app
  • Only one Pinia instance per application (unless SSR)
3. Define Your First Store
typescript
// 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++
    }
  }
})
4. Use Store in Components
vue
<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>

The Two Store Syntaxes

Load references/store-syntax-guide.md for complete comparison of Option vs Setup stores.

Quick Overview

Pinia supports two store definition syntaxes:

Option Stores:

  • Similar to Vue Options API
  • Built-in $reset() method
  • Best for: Simpler use cases, teams familiar with Vuex

Setup Stores:

  • Uses Composition API pattern
  • Full composables integration
  • Best for: Advanced patterns, need watchers/VueUse integration

→ Load references/store-syntax-guide.md for: Complete syntax comparison, examples, choosing criteria


State, Getters, and Actions

Load references/state-getters-actions.md for complete API reference.

Quick Reference

State:

  • Define in state: () => ({...}) (option) or ref() (setup)
  • Access directly: store.count
  • Mutate directly: store.count++ or store.$patch({...})
  • Reset: store.$reset() (option stores only)

Getters:

  • Computed properties: getters: { double: (state) => state.count * 2 }
  • Access other getters with this (must type return value)

Actions:

  • Business logic: actions: { increment() { this.count++ } }
  • Can be async
  • Access other stores directly

Store Destructuring:

typescript
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


Plugins and Composables

Load references/plugins-composables.md for complete plugin and composables guide.

Plugin Basics
typescript
pinia.use(({ store, options }) => {
  // Add properties to every store
  return { customProperty: 'value' }
})
Composables Integration

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)


Using Stores Outside Components

The Problem

Stores need the Pinia instance, which is auto-injected in components but not available in module scope.

❌ Wrong: Accessing Store at Module Level
typescript
// router.ts
import { useUserStore } from '@/stores/user'

// ❌ Fails: Pinia not installed yet
const userStore = useUserStore()

router.beforeEach((to) => {
  if (userStore.isLoggedIn) { /* ... */ }
})
✅ Right: Accessing Store Inside Callbacks
typescript
// 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.

SSR: Explicit Pinia Instance
typescript
// server-side
export function setupRouter(pinia) {
  router.beforeEach((to) => {
    const userStore = useUserStore(pinia) // Pass explicitly
  })
}

Server-Side Rendering & Nuxt

Load references/ssr-and-nuxt.md for complete SSR and Nuxt integration guide.

SSR Quick Reference

State Hydration:

  • Server: Serialize with devalue() (not JSON.stringify)
  • Client: Hydrate BEFORE calling useStore()
  • Critical: Call all useStore() BEFORE await in actions
Nuxt 3/4 Integration
bash
bunx nuxi@latest module add pinia

Auto-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


Testing

Load references/testing-guide.md for complete testing guide.

Testing Quick Start
typescript
import { setActivePinia, createPinia } from 'pinia'

beforeEach(() => {
  setActivePinia(createPinia()) // Fresh Pinia for each test
})
Component Testing
bash
bun add -d @pinia/testing
typescript
import { 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


Hot Module Replacement (HMR)

Vite Setup
typescript
// 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))
}
Webpack Setup
typescript
if (import.meta.webpackHot) {
  import.meta.webpackHot.accept(acceptHMRUpdate(useCounterStore, import.meta.webpackHot))
}

Benefits:

  • Edit stores without full page reload
  • Preserve application state during development
  • Faster development iteration

Options API Usage

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)


Migrating from Vuex

Load references/vuex-migration.md for complete migration guide.

Quick Conversion Overview

Key Changes:

  1. Remove namespaced (automatic via store ID)
  2. Eliminate mutations (direct state mutation)
  3. Replace commit() with direct mutations
  4. Replace rootState/rootGetters with store imports
  5. Use store.$reset() instead of custom clear mutations

Directory: store/modules/ → stores/ (each module = separate store)

→ Load references/vuex-migration.md for: Complete conversion steps, component migration, checklist, gradual migration strategy


Critical Rules

Always Do

✅ 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)

Never Do

❌ 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


Known Issues Prevention

This skill prevents 12 documented issues:

Issue #1: Lost Reactivity from Direct Destructuring

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

Issue #2: Cannot Add State Properties Dynamically

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

Issue #3: Store Not Found Before Pinia Install

Error: getActivePinia() returns undefined Why It Happens: Calling useStore() before app.use(pinia) Prevention: Call app.use(pinia) before mounting or accessing stores

Issue #4: Setup Store Private State Breaks SSR

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

Issue #5: Getters with this Don't Infer Types

Error: TypeScript can't infer return type when getter uses this Source: Known TypeScript limitation with Pinia Prevention: Explicitly type return value: getterName(): ReturnType { ... }

Issue #6: Options API Store Suffix Confusion

Error: Can't find this.counterStore in component Why It Happens: mapStores() automatically adds 'Store' suffix Prevention: Use store name + 'Store' or call setMapStoreSuffix()

Issue #7: Actions Called After await Break SSR

Error: 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

Show full SKILL.md (640 more words)Show less
Issue #8: Circular Store Dependencies Crash App

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

Issue #9: XSS Vulnerability in SSR State Serialization

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

Issue #10: HMR Doesn't Work in Development

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

Issue #11: Composables Return Functions Break Option Stores

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

Issue #12: State Not Reset Between Unit Tests

Error: Tests affect each other, sporadic failures Why It Happens: Single Pinia instance shared across tests Prevention: beforeEach(() => setActivePinia(createPinia())) in test suites


Package Versions (Verified 2026-08-03)

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)


Common Patterns

See reference files for complete pattern examples:

  • Authentication stores → references/state-getters-actions.md
  • Persistence plugins → references/plugins-composables.md
  • Form stores → references/store-syntax-guide.md (setup store examples)
  • Router integration → references/state-getters-actions.md (accessing stores outside components)

Official Documentation


Troubleshooting

Problem: "getActivePinia() was called with no active Pinia"

Solution:

  1. Ensure app.use(pinia) is called before mounting
  2. If outside component, call useStore() inside callback/function
  3. For SSR, pass pinia instance explicitly: useStore(pinia)
Problem: State changes don't update in template

Solution: Use storeToRefs() instead of direct destructuring

Problem: Getter using this has TypeScript errors

Solution: Explicitly type the return value: myGetter(): ReturnType { return this.otherGetter }

Problem: $reset() not available in setup store

Solution: Implement custom reset manually:

typescript
function $reset() {
  count.value = 0
  name.value = ''
}
return { count, name, $reset }
Problem: HMR not working for stores

Solution: Add HMR acceptance block:

typescript
if (import.meta.hot) {
  import.meta.hot.accept(acceptHMRUpdate(useMyStore, import.meta.hot))
}
Problem: Tests fail intermittently

Solution: Create fresh Pinia in beforeEach():

typescript
beforeEach(() => {
  setActivePinia(createPinia())
})

When to Load References

Load references/store-syntax-guide.md when:

  • Need detailed comparison between Option and Setup store syntaxes
  • Deciding which syntax to use for a new store
  • Questions about Option vs Setup stores trade-offs
  • Need complete examples of both syntaxes

Load references/state-getters-actions.md when:

  • Need complete API reference for state, getters, or actions
  • Questions about $patch, $subscribe, or $onAction
  • Implementing store composition patterns
  • Using Options API mappers (mapStores, mapState, mapActions)
  • Accessing stores outside components (router, plugins)

Load references/plugins-composables.md when:

  • Creating custom Pinia plugins
  • Integrating VueUse or other composables into stores
  • Need persistence, routing, or logging plugin patterns
  • Questions about TypeScript typing for plugins
  • Advanced composables integration

Load references/ssr-and-nuxt.md when:

  • Setting up server-side rendering
  • Integrating with Nuxt 3/4
  • Questions about state hydration or serialization
  • SSR-related errors (wrong Pinia instance, hydration mismatch)
  • Nuxt auto-imports or configuration
  • Server-side data fetching patterns

Load references/testing-guide.md when:

  • Setting up unit tests for stores
  • Testing components that use Pinia stores
  • Need to stub actions or mock getters
  • Questions about createTestingPinia
  • Testing SSR stores
  • Vitest or testing framework integration

Load references/vuex-migration.md when:

  • Migrating existing Vuex codebase to Pinia
  • Questions about Vuex→Pinia conversion
  • Need migration checklist or examples
  • Gradual migration strategy needed

Complete Setup Checklist

  • Installed pinia package
  • Created Pinia instance with createPinia()
  • Registered with app.use(pinia) before mounting
  • Created stores directory (e.g., src/stores/)
  • Defined at least one store with defineStore()
  • Used storeToRefs() when destructuring in components
  • Typed getter return values when using this
  • Added HMR support with acceptHMRUpdate() (development)
  • Configured SSR hydration (if using SSR)
  • Configured @pinia/nuxt (if using Nuxt)
  • Set up testing with createTestingPinia() (if testing)
  • All stores follow consistent naming: use[Name]Store
  • Verified DevTools integration works

Questions? Issues?

  1. Check official docs: https://pinia.vuejs.org/
  2. Review "Known Issues Prevention" section above
  3. Verify setup checklist is complete
  4. Check for TypeScript configuration issues
  5. Ensure Pinia is installed before using stores

© secondsky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 15 other files (scripts, references, assets) in plugins/pinia-v3/skills/pinia-v3 of secondsky/claude-skills.

  • SKILL.md
  • assets/example-template.txt
  • references/example-reference.md
  • references/plugins-composables.md
  • references/ssr-and-nuxt.md
  • references/state-getters-actions.md
  • references/store-syntax-guide.md
  • references/testing-guide.md
  • references/vuex-migration-checklist.md
  • references/vuex-migration.md
  • scripts/api-store-example.ts
  • scripts/auth-store-example.ts
  • scripts/example-script.sh
  • scripts/option-store-template.ts
  • scripts/persistence-plugin.ts
  • scripts/setup-store-template.ts

Open the folder on GitHubat commit 8837836

Compare with similar skills

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.

Pinia V3 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pinia V3 this skillsecondsky/claude-skills227—~4.5kAutomated safety check: PassMIT
Vue ExpertJeffallan/claude-skills12k—~1.1kAutomated safety check: PassMIT
Vue Patternsaffaan-m/ECC275k1 repos~3.3kAutomated safety check: PassMIT
PiniaJetBrains/skills3649 repos~682Automated safety check: PassNone
Vue Masterycigery-useio/useio-skills104—~1.8kAutomated safety check: PassMIT
Vue PiniaMindrally/skills268—~2.4kAutomated safety check: PassApache-2.0

Similar skills

  • 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.

    12k GitHub stars~1.1k tokensUpdated 5 days ago
    Frontend & DesignAuto-check passed
  • Vue Patterns

    affaan-m/ECC

    Vue.js 3 Composition API patterns, component architecture, reactivity best practices, Pinia state management, Vue Router navigation, and Nuxt SSR patterns.

    275k GitHub starsUsed in 1 repo~3.3k tokens
    Frontend & DesignAuto-check passed
  • Pinia

    JetBrains/skills

    Official

    Pinia official Vue state management library, type-safe and extensible.

    364 GitHub starsUsed in 9 repos~682 tokens
    Frontend & DesignAuto-check passed
  • Vue Mastery

    cigery-useio/useio-skills

    Vue 3 expert skill for writing production-grade code. An agent skill from cigery-useio/useio-skills.

    104 GitHub stars~1.8k tokensUpdated 15 days ago
    Frontend & DesignAuto-check passed
  • Vue Pinia

    Mindrally/skills

    Vue 3 state management with Pinia using the Composition API, covering setup stores, SSR/Nuxt integration, persistence, and testing.

    268 GitHub stars~2.4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • GSAP in Vue, Nuxt and Svelte

    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.

    16k GitHub starsUsed in 4 repos~2.6k tokens
    Frontend & DesignAuto-check passed

More from secondsky/claude-skills

All 169 skills in this repo
  • Tanstack AI

    secondsky/claude-skills

    TanStack AI (alpha) provider-agnostic type-safe chat with streaming for OpenAI, Anthropic, Gemini, Ollama.

    227 GitHub starsUsed in 1 repo~3.6k tokens
    Auto-check: notes
  • Auto Animate

    secondsky/claude-skills

    AutoAnimate (@formkit/auto-animate) zero-config animations for React.

    227 GitHub stars~2.9k tokensUpdated 10 days ago
    Auto-check passed
  • Base UI React

    secondsky/claude-skills

    MUI Base UI unstyled React components with Floating UI. An agent skill from secondsky/claude-skills.

    227 GitHub stars~1.9k tokensUpdated 10 days ago
    Auto-check passed
  • Cloudflare Images

    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"…

    227 GitHub stars~3.6k tokensUpdated 10 days ago
    Auto-check: notes
  • Cloudflare Nextjs

    secondsky/claude-skills

    Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).

    227 GitHub stars~5.3k tokensUpdated 10 days ago
    Auto-check: notes
  • Cloudflare Sandbox

    secondsky/claude-skills

    Cloudflare Sandboxes SDK for secure code execution in Linux containers at edge.

    227 GitHub stars~4.5k tokensUpdated 10 days ago
    Auto-check passed

Works with

Questions about Pinia V3

What does Pinia V3 do?

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.

When should I use Pinia V3?

Pinia V3 fits situations like: encountering store composition; tasks that involve State management.

How do I install Pinia V3 in Claude Code?

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.

How do I install Pinia V3 in Codex?

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.

Can I use Pinia V3 in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Pinia V3 need to run?

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.

Does Pinia V3 access the network?

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.

Is Pinia V3 safe to install?

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.

What licence does Pinia V3 use?

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.

How many tokens does Pinia V3 use?

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.

What are the alternatives to Pinia V3?

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.

Who maintains Pinia V3?

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.