z3tz3r0 5108b20954
feat(rules): add vue and nuxt rule sets (#2250)
* feat(rules): add vue and nuxt rule sets

Add rules/vue/ and rules/nuxt/, each with the standard 5-file layout (coding-style, hooks, patterns, security, testing) that extends common/, following the Adding a New Language convention in rules/README.md.

Vue rules reference the frontend-patterns and vite-patterns skills. Nuxt rules reference the nuxt4-patterns and vite-patterns skills. Content is concise (1.5 to 4 KB per file) since rules load as always-on context.

* fix(rules): address PR review on vue and nuxt rule sets

- nuxt/coding-style: generalize the srcDir-override note (drop project-specific 'this repo' phrasing so it is correct for any Nuxt project).

- vue/hooks: add **/*.ts and **/*.tsx to paths so the lint/typecheck guidance loads when editing composables and stores.

- nuxt/hooks: add **/*.vue to paths (covers pages/layouts/components) and wrap nuxi typecheck in a timeout, mirroring web/hooks.md.

- nuxt/security: tighten the /security-review auto-trigger scope to external fetch, credential handling, and sensitive mutations, with examples.

- nuxt/testing: correct 'Vitest-only' to note built-in Playwright E2E, and drop the @nuxt/test-utils version pin.

- README: register vue and nuxt in the structure tree and install examples.

Skipped: 'X specific' -> 'X-specific' hyphenation (all existing rule sets use the unhyphenated form, changing only vue/nuxt would be inconsistent); repeating the 80%/TDD mandate in nuxt/testing (already inherited from common/testing.md).
2026-06-15 14:01:38 -04:00

1.5 KiB

paths
paths
**/nuxt.config.*
**/app.config.*
**/server/**/*.ts
**/*.vue

Nuxt Hooks

This file extends common/hooks.md with Nuxt specific content.

These are Claude Code harness hooks for Nuxt work. They run via the harness, not Claude.

Typecheck

  • nuxi typecheck wraps vue-tsc. Requires vue-tsc + typescript dev deps.
  • Run on .vue / .ts edit or pre-commit. Typecheck is project-wide, so debounce it and wrap it in a timeout (mirror web/hooks.md, for example timeout 60 nuxi typecheck) so a hung type-check is reaped instead of accumulating across fast edits.

Lint

  • Use the @nuxt/eslint module (flat-config, project-aware, generates .nuxt/eslint.config.mjs).
  • Run eslint . or eslint --fix. This is the Nuxt-official ESLint integration, prefer it over hand-rolled configs.

Format

  • prettier --write, or enable stylistic rules in @nuxt/eslint to avoid a Prettier/ESLint conflict.
  • Pick one formatting authority. Do not run both Prettier and ESLint stylistic at once.

Suggested PostToolUse chain

  • On Edit to app/** and server/**: run eslint --fix then timeout 60 nuxi typecheck.
  • Order matters: lint-fix first (mutates the file), the timed typecheck second (verifies the result). Debouncing still applies.

Reference