name: lumina-frontend-ui description: Build, refine, and debug the React/Vite frontend for Lumina. Use when editing files under client/src or client/package.json, changing chat UX, landing page content, auth flows, routing, theme behavior, markdown rendering, animations, responsive layout, or frontend API wiring.
Lumina Frontend UI
Overview
Use this skill for frontend tasks in client/. Keep changes aligned with Lumina's existing visual language: animated, polished, content-rich, and responsive rather than generic dashboard UI.
Load The Right Reference
- Read
references/component-map.mdbefore editing when you need to locate the right page, component, or client-side service. - Read
references/validation.mdbefore finishing when frontend behavior, build health, or API coupling changed.
Work The Frontend Deliberately
- Start from the user-facing entry point, then trace inward. For chat issues this usually means
client/src/pages/Home.tsxplusclient/src/components/ChatArea.tsxandclient/src/services/api.ts. - Keep route-level changes consistent with
client/src/App.tsx. - Prefer focused edits to the page or component that owns the behavior instead of broad global rewrites.
- Treat
client/src/pages/LandingPage.tsxas intentionally branded and heavily customized. Preserve its personality unless the task explicitly asks for a redesign. - Keep responsive behavior intact on mobile and desktop.
- Keep markdown, math, and citation rendering working when changing chat output.
Coordinate With The Backend Carefully
- If a frontend change depends on a new request shape, endpoint, or response contract, update the backend and
openapi.yamlin the same task when feasible. - If the bug is really caused by retrieval, citations, or chat response composition, switch to
lumina-rag-knowledgeorlumina-backend-apiinstead of forcing a frontend-only patch.
Finish With Real Validation
- Run
npm run buildinclient/after meaningful frontend changes. - Treat
npm testinclient/as a placeholder, not as evidence of coverage. - Call out any unverified browser behavior if you could not run the app interactively.