Apply dashboard-grade chat UX patterns in the Eve chat template. Use when changing Next.js Cache Components/PPR behavior, static shell layout, Suspense bootstrap boundaries, theme hydration, auth display hydration, signed-in/signed-out static shell behavior, optimistic messages, streaming row identity, composer/sidebar interactions, thinking/tool rendering, responsive styling, visual polish, or Vercel dashboard chat comparisons.
72
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use this skill to keep the template's web chat feeling like a polished dashboard surface: stable, quiet, fast to first paint, and predictable under streaming state.
cacheComponents: true enabled in next.config.ts. Treat the chat route as a static shell with dynamic data streamed into Suspense boundaries.app/(chat)/layout.tsx wait on auth, database, chat history, or per-chat data before rendering the shell.AgentChatShell: empty history, initialNextCursor: null, viewer: null, and getInitialSetupStatus().ResolvedChatBootstrap for setup/viewer/sidebar history and ExistingChat for active chat data.AgentChatBootstrapSync should update setup status, viewer, and history. AgentChatRouteSync should update the active chat for the current route.null for these sync boundaries when the visible shell already has stable placeholders. Do not add loading panels that push the chat frame around.notFound() until the dynamic boundary has enough real viewer/setup/chat data to prove the chat is inaccessible. The outer shell should still render while that decision is loading.AgentChatShell should paint the sidebar frame, top controls, and route body before auth, setup, or chat history finishes loading.eve_logged_in cookie is a display hint only; the head script sets data-eve-auth-display so CSS can hide the wrong signed-in/signed-out branch before viewer data resolves.suppressHydrationWarning only where it protects known pre-hydration document mutations such as theme/auth display hints.AuthDisplayLoggedIn and AuthDisplayLoggedOut; let the document dataset hide the wrong branch.viewer state: viewer ? <UserMenu /> : <SidebarSignInButton />.sessionStorage, open the auth modal, and restore the draft after sign-in.ChatComposer controlled by the page: value, onChange, onSubmit, disabled, disabledReason, isBusy, and isPreparing.touchChat, removeChat, and title updates for sidebar state; do not make sidebar state the transcript source of truth.background, foreground, muted, border, card, accent, and local opacity patterns.aria-label for icon-only buttons and tooltip text where meaning is not obvious.pnpm typecheck and pnpm build after UI or app-router changes.e0ad9a0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.