@gallopsystems/agent-skills 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -95,7 +95,6 @@ Covers:
95
95
  - useFetch vs $fetch vs useAsyncData
96
96
  - Type inference (don't add manual types!)
97
97
  - nuxt-auth-utils (OAuth, WebAuthn, middleware)
98
- - Page structure (keep pages thin)
99
98
  - Composables vs utils
100
99
  - SSR + localStorage patterns
101
100
  - Deep linking (URL params sync)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gallopsystems/agent-skills",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "description": "Gallop Systems Claude Code skills, symlinked into .claude/skills on install.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -31,9 +31,7 @@ For detailed patterns, see these topic-focused reference files:
31
31
  - [auth-patterns.md](./auth-patterns.md) - nuxt-auth-utils, OAuth, WebAuthn, middleware
32
32
  - [error-handling.md](./error-handling.md) - createError (fatal), error.vue, clearError, NuxtErrorBoundary
33
33
  - [state-management.md](./state-management.md) - useState (never a module-scope ref), clearNuxtState, callOnce
34
- - [page-structure.md](./page-structure.md) - Keep pages thin, components do the work
35
34
  - [composables-utils.md](./composables-utils.md) - composables vs utils, runtimeConfig public/private, runWithContext
36
- - [formatters.md](./formatters.md) - Centralize currency/date/number formatters in useFormatters, never inline
37
35
  - [ssr-client.md](./ssr-client.md) - SSR + localStorage, hydration, useRequestURL/Headers, useCookie, VueUse
38
36
  - [deep-linking.md](./deep-linking.md) - URL params sync with filters and useFetch
39
37
  - [caching.md](./caching.md) - defineCachedFunction/EventHandler, SWR, per-key invalidation (Nitro v2)
@@ -62,7 +60,7 @@ Working examples from a Nuxt project:
62
60
  2. **Use h3 validation** - `getValidatedQuery()`, `readValidatedBody()` with Zod schemas
63
61
  3. **Composables for context, utils for pure functions** - Composables access Nuxt context, utils are pure
64
62
  4. **SSR-safe code** - Guard browser APIs with `import.meta.client` or `onMounted`
65
- 5. **Keep pages thin** - Pages = layout + route params + components. Components own data fetching and logic.
63
+ 5. **Keep pages thin** - Pages = layout + route params + components. Components own data fetching and logic. (Page composition + display formatting now live in the `vue-nuxt` skill.)
66
64
 
67
65
  ## Auto-Imports Quick Reference
68
66
 
@@ -82,7 +82,7 @@ export const usePermissions = () => {
82
82
  > **Formatters belong in one shared place.** The examples below show util *placement*,
83
83
  > not where to call formatters from. Never define a currency/date/number formatter inline
84
84
  > at the call site — centralize them in `useFormatters` or a shared util, and prefer
85
- > VueUse / date-fns over hand-rolling. See [formatters.md](./formatters.md).
85
+ > VueUse / date-fns over hand-rolling. See the `vue-nuxt` skill's `formatters.md`.
86
86
 
87
87
  ```typescript
88
88
  // utils/formatting.ts
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  name: vue-nuxt
3
- description: Author Vue 3 components inside a Nuxt 4 app. Covers Nuxt auto-import rules, component authoring (props/emits/withDefaults/generics), v-model/defineModel, reactivity, when watch is a code smell, and Vue-shaped template idioms.
3
+ description: Author Vue 3 components inside a Nuxt 4 app. Covers Nuxt auto-import rules, component authoring (props/emits/withDefaults/generics), v-model/defineModel, slots, composables, reactivity, when watch is a code smell, page structure, display formatting, and Vue-shaped template idioms.
4
4
  ---
5
5
 
6
6
  # Vue-in-Nuxt component authoring
7
7
 
8
8
  Patterns for writing Vue 3 `<script setup>` components inside a Nuxt 4 app. This
9
9
  is the **frontend authoring** slice — the data layer (`useFetch`/`$fetch`, SSR
10
- storage, hydration, `definePageMeta`/auth, formatters) lives in the
11
- `nuxt-nitro-api` skill; Volt/PrimeVue styling and dark mode live in
12
- `volt-primevue`. This skill cross-links to those rather than restating them.
10
+ storage, hydration, `definePageMeta`/auth) lives in the `nuxt-nitro-api` skill;
11
+ Volt/PrimeVue styling and dark mode live in `volt-primevue`. This skill
12
+ cross-links to those rather than restating them.
13
13
 
14
14
  ## When to Use This Skill
15
15
 
@@ -19,6 +19,8 @@ storage, hydration, `definePageMeta`/auth, formatters) lives in the
19
19
  - Wiring `v-model` on a component
20
20
  - Designing a component's content API — props vs slots, named/scoped slots
21
21
  - Authoring a composable — argument shape, what to return, cleanup
22
+ - Structuring a page — thin pages, components own the data + logic
23
+ - Formatting display values (currency/date/number) consistently
22
24
  - Anything reactivity-shaped: `computed` vs `watch`, prop→state sync, DOM measurement
23
25
  - You see `watch` and want to know if it should be something else
24
26
 
@@ -32,6 +34,8 @@ storage, hydration, `definePageMeta`/auth, formatters) lives in the
32
34
  - [reactivity.md](./reactivity.md) — `ref` over `reactive`, `useTemplateRef`, pure computeds, mutate-don't-reassign, DOM-measure + `ResizeObserver`, `shallowRef`, watch-getter prop sync, `:key` remount, listener cleanup
33
35
  - [watch.md](./watch.md) — **`watch` is the escape hatch, not the default**: when it's right, and the four smell shapes (with refactors) found auditing 159 real watchers
34
36
  - [template-idioms.md](./template-idioms.md) — duplicate-`@keyup` TS error, `:deep()`/`:slotted()`/`:global()`, click-outside marker class, `NuxtLink`/thin `app.vue`, `useHead`, `v-bind` shorthand, `useId`, `<Teleport>`/`<KeepAlive>`, `v-memo`/`v-once`, file-input reset
37
+ - [page-structure.md](./page-structure.md) — keep pages thin: route-param parsing + layout in the page, data/logic/forms in components
38
+ - [formatters.md](./formatters.md) — never inline a currency/date/number formatter; centralize in `useFormatters`, prefer Intl/date-fns
35
39
 
36
40
  ## Core Principles
37
41
 
@@ -84,7 +84,8 @@ let a blanket "convert all date fields to Date" transform touch DATE columns.
84
84
 
85
85
  ## Where to put the formatters
86
86
 
87
- Pick the location by what the formatter needs (see [composables-utils.md](./composables-utils.md)):
87
+ Pick the location by what the formatter needs (the composable-vs-util decision
88
+ tree lives in the `nuxt-nitro-api` skill's `composables-utils.md`):
88
89
 
89
90
  - **Needs Nuxt/Vue context** (e.g. reads locale/currency from `useRuntimeConfig()`,
90
91
  `useI18n()`, or user preferences) → **composable** `useFormatters` in