40 lines
1.5 KiB
Markdown
40 lines
1.5 KiB
Markdown
---
|
|
paths:
|
|
- "**/nuxt.config.*"
|
|
- "**/app.config.*"
|
|
- "**/server/**/*.ts"
|
|
- "**/*.vue"
|
|
---
|
|
|
|
# Nuxt Hooks
|
|
|
|
> This file extends [common/hooks.md](../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
|
|
|
|
- ECC skills: `nuxt4-patterns`, `vite-patterns`.
|
|
- [@nuxt/eslint module](https://eslint.nuxt.com/)
|
|
- [nuxi typecheck](https://nuxt.com/docs/api/commands/typecheck)
|