Przejdź do głównej zawartości

Przepisy Nuxt dla agentów AI opierają się na trzech ruchach: przypięciu agenta do dokumentacji Nuxt 4 przez oficjalny serwer MCP Nuxt, bo agenci mieszają API Nuxt 3 i niewydanego Nuxt 5; zapisaniu konwencji Nuxt 4 w pliku instrukcji agenta; oraz dowodzeniu każdej zmiany przez nuxt typecheck, @nuxt/test-utils i nuxt build. Przepisy dotyczą Nuxt 4.5.

Ta strona jest dla programistów, którzy pozwalają Claude Code, Codeksowi lub Cursorowi budować aplikację full-stack w Nuxt, i dla tech leada, który musi ufać wynikowi. Funkcja od agenta działa na twojej maszynie, ale strony wylądowały w pages/ zamiast w app/pages/, schemat Zod trafił wprost do readValidatedBody, a plugin uruchamiany także na serwerze czyta document.cookie. Strona działa po nawigacji po stronie klienta, ostrzeżenia o hydracji przewijają się w konsoli, a pierwszy użytkownik, który otworzy głęboki link bezpośrednio, dostaje 500.

  • Konfigurację kontekstu, która trzyma agenta przy Nuxt 4, choć dane treningowe (Nuxt 3) i najnowsze dokumenty oraz skille (Nuxt 5) ciągną go gdzie indziej
  • Oficjalny serwer MCP Nuxt podłączony do wszystkich trzech narzędzi oraz eksperymentalny moduł MCP dla serwera deweloperskiego
  • Siedem promptów do zadań Nuxt, które agenci psują najczęściej: walidowane trasy serwera, pobieranie danych, sesje, renderowanie hybrydowe, Cloudflare Workers, Nuxt Content i zestaw testów
  • Tabelę bramek, która zatwierdza zmianę bez czytania każdej linii, i tabelę awarii z krokami naprawczymi

Agent piszący kod Nuxt korzysta z trzech źródeł, które sobie przeczą. Jego dane treningowe to głównie Nuxt 3, z pages/ w katalogu głównym i data domyślnie równym null. Najnowsze materiały opisują Nuxt 5: Nitro v3, h3 v2 i helpery serwerowe importowane z nuxt/server, które pojawiają się dopiero w Nuxt 4.6. Twój package.json mówi 4.5. Każdy krok poniżej służy temu, żeby wygrało to trzecie źródło.

  1. Zapisz reguły Nuxt 4 tam, gdzie każde narzędzie je znajdzie: w AGENTS.md dla Codeksa, w CLAUDE.md dla Claude Code (albo w CLAUDE.md zawierającym @AGENTS.md; od v2.1.277 Claude Code czyta AGENTS.md, gdy nie ma CLAUDE.md) i w projektowej regule (Rule) w Cursorze.

    ## Nuxt rules for this repo (Nuxt 4.5, nitropack 2, h3 1.x)
    - Vue code lives in app/ (app/pages, app/components, app/composables, app/middleware,
    app/plugins). server/, shared/, content/, public/ and nuxt.config.ts stay at the root.
    - Code used by both app and server goes in shared/utils or shared/types.
    - Look up APIs in the Nuxt 4.x docs (Nuxt MCP server, version 4.x). Never apply Nuxt 5
    guidance: no h3 v2 APIs, and no nuxt/server imports until nuxt >= 4.6.
    - createError takes { status, statusText } (statusCode/statusMessage are deprecated).
    - Never add h3 or nitropack to package.json; use the versions Nuxt brings.
    - readValidatedBody / getValidatedQuery take a function: readValidatedBody(event, Schema.parse).
    - useFetch/useAsyncData: data and error start as undefined; branch on status, not pending.
    - No browser globals (window, document, localStorage) in setup, plugins or middleware
    unless guarded by import.meta.client or inside onMounted.
    - Done means: npx nuxt typecheck, npx eslint ., npx vitest run and npx nuxt build pass.
  2. Podłącz serwer MCP Nuxt (następna sekcja) i każ agentowi pytać go z filtrem wersji 4.x. Narzędzie list-documentation-pages przyjmuje 3.x, 4.x, 5.x albo all, więc zapytanie bez filtra może zwrócić strony Nuxt 5. Filtr nie przypina wersji: dokumentacja 4.x opisuje już funkcje Nuxt 4.6, takie jak nuxt/server, więc zanim zaakceptujesz oparty na nich kod, sprawdź wersję nuxt w package.json.

  3. Sprawdź każdy skill Nuxt przed instalacją. Skill nuxt z antfu/skills sam deklaruje, że „is based on Nuxt 5.x (5.0.0-0), generated at 2026-09-25”. W projekcie na Nuxt 4.5 uczy importów z nuxt/server i h3 v2, więc pomiń go, dopóki nie przejdziesz na Nuxt 5. Skill nuxt-ui z nuxt/ui dotyczy @nuxt/ui v4 i możesz go dodać, jeśli używasz tej biblioteki; zobacz instalowanie i zarządzanie skillami.

  4. Pokaż przestarzałe wzorce także recenzentowi. To API, po które agent sięga najpierw:

    Agent piszeStan w Nuxt 4.5Zamiast tego
    pages/, components/, composables/ w katalogu głównym nowego projektuUkład Nuxt 3; Nuxt 4 ustawia srcDir na app/app/pages/ i tak dalej; starą aplikację przenieś przez npx codemod@latest nuxt/4/file-structure
    readValidatedBody(event, BodySchema)h3 1.x oczekuje funkcji walidującejreadValidatedBody(event, BodySchema.parse)
    if (data.value === null) albo pending.value jako flaga ładowaniadata i error domyślnie są undefined w Nuxt 4status.value === 'pending' i data.value === undefined
    import { defineEventHandler } from 'nuxt/server'Pojawia się w Nuxt 4.6 (4.5.x go nie eksportuje)Auto-importowany defineEventHandler
    routeRules: { '/blog/**': { isr: 3600 } } na Cloudflare lub Nodeisr trafia do CDN tylko na Netlify i Verceluswr: 3600 wszędzie indziej
    preset: 'cloudflare-pages' dla nowego WorkeraPreset dla Pagespreset: 'cloudflare_module', preset zalecany przez Nitro dla Workers

Jak podłączyć agenta do dokumentacji Nuxt i serwera deweloperskiego

Dział zatytułowany „Jak podłączyć agenta do dokumentacji Nuxt i serwera deweloperskiego”

Zespół Nuxt utrzymuje serwer MCP dokumentacji pod https://nuxt.com/mcp, po HTTP i bez uwierzytelniania. Jego narzędzia listują i pobierają strony dokumentacji, wpisy na blogu, przewodniki wdrożeniowe, moduły (z README, zgodnością i statystykami pobrań) oraz changelog. Nagłówek X-MCP-Tools ogranicza zestaw ładowanych narzędzi, co obniża koszt kontekstu; zobacz obniżanie kosztu tokenów MCP.

Okno terminala
# Terminal, w katalogu głównym projektu. -s project zapisuje .mcp.json, więc zespół go współdzieli.
claude mcp add -s project --transport http nuxt https://nuxt.com/mcp \
-H "X-MCP-Tools: list-documentation-pages,get-documentation-page,get-module"

Uruchom /mcp w sesji, żeby potwierdzić, że nuxt jest połączony.

Serwer dokumentacji zna Nuxt, ale nie zna twojej aplikacji. Do tego służy moduł nuxt-mcp-dev Anthony’ego Fu (oznaczony „Experimental. Use with caution.”), który dodaje endpoint MCP do serwera deweloperskiego pod http://localhost:3000/__mcp/sse i według README sam aktualizuje konfigurację MCP w VS Code, Cursorze, Windsurfie i Claude Code. Włączasz go przez modules: ['nuxt-mcp-dev'] w nuxt.config.ts. Endpoint używa transportu SSE, który Claude Code nadal obsługuje, ale oznaczył jako przestarzały, więc traktuj go jako wygodę, a nie bramkę. Widok strony z przeglądarki da agentowi Playwright MCP; pozostałe serwery dla serwerów deweloperskich porównuje strona serwery MCP narzędzi deweloperskich frameworków.

Jak walidować trasę serwera przez Zod i sprawdzać sesję

Dział zatytułowany „Jak walidować trasę serwera przez Zod i sprawdzać sesję”

Trasy serwera to miejsce, w którym zderzają się nawyki agenta z Nuxt 3 i Nuxt 5. Trasa poniżej potrzebuje zwalidowanej treści żądania, zalogowanego użytkownika i właściwego kodu statusu dla każdego błędu.

Kod 400 przy błędnych danych zwraca samo h3: gdy funkcja walidująca rzuci wyjątek, readValidatedBody zamienia go na 400. Dlatego przekazanie obiektu schematu jest groźne. Wywołanie pada przy każdym żądaniu, a test sprawdzający tylko „jakiś błąd” nadal przechodzi.

Jak pobierać dane bez podwójnych żądań i błędów hydracji

Dział zatytułowany „Jak pobierać dane bez podwójnych żądań i błędów hydracji”

Typowa warstwa danych od agenta to $fetch w onMounted, który pobiera dane dwa razy (na serwerze i w przeglądarce) albo wcale na serwerze. Wzorzec Nuxt to useFetch lub useAsyncData w setup, ze stabilnym kluczem i refem status.

Asercja o wspólnym kluczu ma znaczenie. W Nuxt 4 komponenty, które wywołują useAsyncData lub useFetch z tym samym kluczem, dzielą jeden ref data, error i status, a dokumentacja wymaga spójnych opcji w tych wywołaniach. Composable, który buduje klucze z niestabilnych wartości (nowy obiekt przy każdym renderze), psuje współdzielenie, a sprawdzanie typów tego nie wychwyci.

Uwierzytelnianie obejmuje trasę serwera, middleware trasy, plugin i composable. Agent myli się na granicy SSR: plugin czytający document.cookie wywraca render po stronie serwera, a middleware ufający stanowi klienta przepuszcza spreparowane żądanie. nuxt-auth-utils trzyma sesję w zapieczętowanym ciasteczku i daje requireUserSession na serwerze oraz useUserSession w aplikacji, co usuwa większość ręcznie pisanego kodu tokenów.

Zacznij w trybie planowania (/plan) i zatwierdź listę plików, zanim powstanie jakikolwiek kod. Po zmianie uruchom /code-review i poproś o listę plików w server/api/, które nie wywołują requireUserSession. W CI uruchom ten sam audyt tylko do odczytu: claude -p "…" --allowedTools "Read,Grep,Glob".

Strony marketingowe mają być statyczne, panel renderowany po stronie klienta lub przy każdym żądaniu, a blog cache’owany. W Nuxt to jeden blok routeRules, a jedyny fakt, który agent myli, to które reguły honoruje twój hosting.

Na Vercelu lub Netlify zamień swr na isr i podaj hosting w prompcie. Nitro przekłada reguły tras na natywne reguły CDN tylko tych dwóch platform.

Preset cloudflare_module w Nitro buduje moduł Workers, a cloudflare.deployConfig: true generuje wrangler.json. Bindingi docierają do kodu serwera przez event.context.cloudflare.env. Dwa klasyczne błędy agenta to preset dla Pages i kolizja nazwy bindingu z Nuxt Content, który domyślnie używa bindingu D1 o nazwie DB.

O samej platformie Workers (Queues, Durable Objects, limity) przeczytasz we wzorcach serverless; jeśli agent ma zaglądać do twojego konta Cloudflare, zobacz serwer MCP Cloudflare. Wzorce schematów i migracji Drizzle opisują dobre praktyki ORM.

Nuxt Content 3 zastąpił API zapytań z v2 kolekcjami deklarowanymi w content.config.ts i odpytywanymi przez queryCollection(), z SQLite pod spodem (na Cloudflare to D1). Agent wytrenowany na v2 pisze queryContent() i <ContentDoc>, których już nie ma.

Jak skonfigurować testy Nuxt, które agent uruchamia za każdym razem

Dział zatytułowany „Jak skonfigurować testy Nuxt, które agent uruchamia za każdym razem”

Testy chronią cię tylko wtedy, gdy agent uruchamia je po każdej edycji. @nuxt/test-utils 4.x dzieli pracę na projekty Vitest: zwykłe testy jednostkowe w Node, testy w runtime Nuxt (komponenty, composables, pluginy) w środowisku nuxt oraz testy end-to-end, które budują i serwują aplikację.

Dodaj hook Stop, którego skrypt uruchamia npx nuxt typecheck && npx vitest run i przy błędzie kończy się kodem 2. Błąd wraca wtedy do agenta, zamiast kończyć turę. Zobacz automatyzację hookami.

Celowo zepsuta asercja na końcu to najtańszy dowód, że testy w ogóle potrafią nie przejść. Test od agenta, który przechodzi bez względu na kod, jest gorszy niż brak testu.

Jak weryfikować kod Nuxt od agenta bez czytania każdej linii

Dział zatytułowany „Jak weryfikować kod Nuxt od agenta bez czytania każdej linii”

Czytaj diffy nuxt.config.ts, wszystkiego w app/middleware/ i app/plugins/ oraz każdej trasy serwera, która czyta sesję. Resztę niech udowodnią bramki.

BramkaPolecenie lub narzędzieCo się zaświeci na czerwono
Typynpx nuxt typecheckZłe typy zwracane z useFetch, import z nuxt/server w Nuxt 4.5, wspólny typ, za którym klient nie poszedł
Lintnpx eslint . z @nuxt/eslint 1.17.0Nieużywane auto-importy, globalne obiekty przeglądarki tam, gdzie zakazujesz ich przez no-restricted-globals
Testy jednostkowe i runtimenpx vitest run --project unit --project nuxtZachowanie composables, stany komponentów, zamockowane endpointy
End-to-endnpx vitest run --project e2e albo Playwright na npx nuxt previewObejście autoryzacji, kody statusu, nagłówki cache, przekierowania
Buildnpx nuxt buildBłędy prerenderingu, błędy parsowania Nuxt Content, problemy z presetem
HydracjaTest Playwright, który pada na każdym komunikacie console zawierającym HydrationRóżny markup z serwera i klienta
Bundlenpx nuxt analyze (eksperymentalne)Zależność, która podwoiła bundle klienta

Programista odpowiedzialny za pull request zatwierdza wyniki bramek i wymienione wyżej pliki; resztę wymusza CI. Jak taki przegląd skalować na zespół, opisuje przegląd pull requestów od agentów, a jak pisać kryteria akceptacji, które kodują twoje testy e2e, pokazuje strona kryteria akceptacji, które agent potrafi zweryfikować.

ObjawPrzyczynaNaprawa
Każdy POST do nowej trasy zwraca 400readValidatedBody(event, Schema) z obiektem schematuPrzekaż Schema.parse; dodaj test, że poprawna treść żądania zwraca 2xx, a nie tylko że błędne padają
Nowe strony dają 404Pliki w głównym pages/, a aplikacja używa app/ (albo odwrotnie)Przenieś je do app/pages/; trzymaj regułę katalogów w AGENTS.md
Cannot find module 'nuxt/server' albo błędy h3 o event.reqWskazówki dla Nuxt 4.6+ lub Nuxt 5 (dokumentacja 4.x opisuje już 4.6; gałąź main dokumentacji i skille dla Nuxt 5 opisują 5)Zanim zaakceptujesz importy z nuxt/server, sprawdź wersję nuxt w package.json; na 4.5 usuń bezpośrednią zależność od h3 i wróć do auto-importów
document is not defined podczas SSRAPI przeglądarki w pluginie, middleware lub setupOsłoń przez import.meta.client, przenieś do onMounted albo nazwij plugin *.client.ts
Ostrzeżenia o niezgodności hydracjiDate.now(), Math.random() lub formatowanie zależne od locale w renderzePolicz wartość na serwerze i przekaż przez useState albo owiń widżet w <ClientOnly>
Strona pokazuje dane z innego żądaniaDwa wywołania useFetch dzielą klucz przy różnych opcjachBuduj klucze z pełnego URL i query; przy wspólnym kluczu trzymaj identyczne opcje
Strony bloga nigdy się nie odświeżają po isr: trueBez TTL isr: true trzyma stronę do następnego wdrożenia; poza Netlify i Vercelem isr działa jak swr i nie trafia do cache CDNUżyj swr z TTL; dodaj test e2e nagłówków cache
Zapytania D1 trafiają do złej bazy po dodaniu Nuxt ContentOba używają bindingu DBZmień nazwę bindingu aplikacji (na przykład APP_DB) i wdróż ponownie

Czy ten artykuł Ci pomógł?

Jedno kliknięcie, bez logowania.

wcale bardzo