CommunityCodierung & Entwicklunggithub.com

KrostyMall/Landing-SENSORITY

Füge Benutzerkonten und Anmeldung zu dieser TanStack Start-App hinzu. Verwende dies, wenn die App Authentifizierung, Anmeldung, Benutzerkonten, geschützte Routen oder benutzerbezogene Daten benötigt.

Was ist Landing-SENSORITY?

Dieses Skill konfiguriert die vollständige Benutzerauthentifizierung für eine TanStack Start-App, die auf Better Auth basiert. Es integriert Google, X und E-Mail/Passwort als einzige unterstützte Anmeldemethoden und nutzt einen Grok-Auth-Broker für die föderierte Authentifizierung. Das Skill ist standardmäßig deaktiviert und muss über einen klaren Schritteplan aktiviert werden: Setzen der Umgebungsvariable, Kopieren des Datenbankschemas, Hinzufügen von Routen für Login und API sowie Einbinden von UI-Komponenten wie UserButton. Es bietet vorgefertigte Hooks (useCurrentUser), Middleware (authMiddleware) und Gates (SignedIn, SignedOut) für die Sitzungsverwaltung und schreibt vor, dass alle Serverfunktionen mit Benutzerdaten den Kontext von `context.userId` verwenden müssen. Das Skill ist für Cursor, Claude Code und Codex optimiert und enthält detaillierte Sicherheitshinweise, um häufige Fehler wie die Verwendung von Demo-Benutzern oder das Erstellen eigener Auth-Routen zu vermeiden.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/KrostyMall/Landing-SENSORITY/tree/HEAD/.grok/skills/auth

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Auth

Diese App betreibt ihre eigene Better Auth-Instanz unter /api/auth/* und föderiert über das genericOAuth-Plugin an den gemeinsamen Grok-Auth-Broker (auth.grok.me). Diese Vorlage verdrahtet Google und X.

Unterstützte Anmeldemethoden – verwende NUR diese drei; nichts anderes wird unterstützt: Google, X und E-Mail/Passwort. Keine anderen Social/OAuth-Anbieter (GitHub, Apple, Discord, …), keine Magic Links, Passkeys, OTP, Telefon/SMS oder anonyme Anmeldung. Füge keine Einträge zu GROK_PROVIDERS hinzu. Details zu den Methoden und den Schalter für E-Mail/Passwort (bearbeite nur src/lib/auth/email-password.ts): references/sign-in-methods.md. Ausnahme – Gate-Betrachter sind bereits angemeldet; zeige NIEMALS Login-/Reauth-Buttons für sie an. Connector-/App-Data-Apps: NUR Gate „Weiter mit Grok“, keine Google/X-Buttons: references/grok-identity.md.

Die Anmeldung ist STANDARDMÄSSIG AUS – die Vorlage enthält .grok/app-env.json mit {"VITE_AUTH_ENABLED": "false"}, also füge Konten nur hinzu, wenn die Aufgabe es verlangt (AGENTS.md §0.5). Das Einschalten erfolgt unter „Anmeldung einschalten“ weiter unten.

Wenn eingeschaltet, ist die Anmeldung ECHT – auch in der Sandbox-Livevorschau. Erstelle KEINE Demo-/Mock-/hartcodierten Benutzer. Vorschau: Popup + integrierter Vorschau-Client; bereitgestellt: app-eigener Client + DATABASE_URL + Zero-Click-Gate-Anmeldung (references/prewired-and-env.md).

Solange AUS (VITE_AUTH_ENABLED=false) wird ein Entwicklerbenutzer zurückgegeben, damit eine App ohne Auth ohne angemeldeten Besucher rendert – nur für Entwicklung und Vorschau. Bereitgestellt ist das Flag das der Plattform (immer "true"), daher lehnt requireUserId jeden Besucher ab – Auth-aus-Apps verwenden weder dies noch authMiddleware.

Alles ist vorinstalliert und vorkonfiguriert in src/lib/auth/ – führe kein npm install durch; better-auth ist das einzige Auth-Paket (niemals @neondatabase/*, @stackframe/*, oder @clerk/*). Bearbeite oder überschreibe keine Datei unter src/lib/auth/ – am wenigsten server.ts – außer email-password.ts für sein einziges Flag. Dateizuordnung: references/prewired-and-env.md.

/auth/popup wird bereits vom Vorlagen-Vite-Plugin verarbeitet (vite.config.ts → popup.server.ts): es rendert nie die React-App. Erstelle KEIN src/routes/auth/popup.tsx (oder eine beliebige React-Seite / Client-OAuth unter diesem Pfad) – das würde die vollständige App innerhalb des Popups anzeigen, die häufigste Fehlerursache.

Schreibe niemals eine .env / .env.local / .env.example in dieser Sandbox: Die Livevorschau benötigt keine Umgebungskonfiguration und eine bereitgestellte App erhält ihre Variablen von der Plattform. Die vorhandenen Stellschrauben findest du in references/prewired-and-env.md – mache niemals eine Nicht-VITE_-Variable für den Client sichtbar.

migrations/auth/0001_auth.sql ist das Better Auth Schema – bearbeite es nicht. Es liegt außerhalb des glob-gematchten migrations/-Verzeichnisses (kein Anwender durchläuft es), daher wird es nicht auf Apps ohne Anmeldung angewendet; „Anmeldung einschalten“ kopiert es nach oben.

Anmeldung einschalten

Führe alle folgenden Schritte aus – die Routen allein rendern bereits den ausgeschalteten Zweig:

  1. Flag: Lösche den VITE_AUTH_ENABLED-Schlüssel aus .grok/app-env.json und starte den Dev-Server neu. Vite liest die Umgebung beim Start, daher würde HMR die Änderung nicht übernehmen. npm run dev, npm run build und npm run preview lesen diese Datei alle über scripts/with-app-env.mjs, sodass Vorschau und das gebaute Ergebnis gemeinsam umschalten – starte Vite niemals direkt.
  2. Schema: cp migrations/auth/0001_auth.sql migrations/0001_auth.sql, dann Neustart, damit es angewendet wird. Es wird durch den Basisnamen in _migrations verfolgt, daher wird eine Datenbank, die es bereits hat, es nicht erneut ausführen.
  3. Routen: Füge src/routes/api/auth/$.ts + src/routes/login.tsx hinzu – kopiere beide aus references/wiring.md (die Catch-All-API-Route ist das, was /api/auth/* und den Broker-Callback zum Funktionieren bringt).
  4. Abmelden: Ein Login ohne Abmeldeoption ist nicht vollständig – rendere <UserButton /> aus @/lib/auth/gates (verdrahtet signOut(); versteckt Abmeldung für Gate-Sitzungen).
  5. Vorhandene Daten: Ummantle die Serverfunktionen der App mit authMiddleware (eine Auth-aus-App darf diese nicht verwendet haben – siehe das neon-Skill). Zeilen, die vor der Einführung der Anmeldung existierten, sind Entwicklungsdaten: verwerfe und erstelle sie neu, es sei denn, der Benutzer sagt etwas anderes – gib sie nicht demjenigen, der sich zuerst anmeldet.

Darauf aufbauen, sobald es eingeschaltet ist

  • Anmelden / Abmelden: signIn(providerId) und signOut() aus @/lib/auth/client; GROK_PROVIDERS rendert die Buttons. Das Popup, die Bearer-Token-Übergabe und die Anfrageanbindung sind intern – belasse sie so. Bevorzuge <UserButton /> (es behandelt die ausstehenden und fehlgeschlagenen Zustände); signOut() lehnt bei Bereitstellung ab, wenn der Server niemals bestätigt – fange dies ab. Verwende niemals authClient.signOut(): es lässt den Vorschau-Bearer-Token an jeder späteren Anfrage hängen, sodass der Besucher angemeldet bleibt.
  • Benutzer auslesen: useCurrentUser() ist nur zur Anzeige gedacht (null bedeutet wird geladen ODER abgemeldet, daher niemals allein darauf umleiten); verwende stattdessen useCurrentUserState()s isPending als Schutz. Gates (SignedIn, SignedOut, SignInGate, RedirectToSignIn, UserButton) befinden sich in @/lib/auth/gates. CTA-Hard-Regeln, Skeleton und Cookie-SSR-Zero-Flash: references/session-ui.md.
  • Benutzerbezogene Daten (obligatorisch): Jede Serverfunktion, die benutzerbezogene Daten berührt, MUSS die vorkonfigurierte authMiddleware verwenden und jeden Lese- und Schreibzugriff auf context.userId beschränken – ein Postgres-Treiber hat vollständigen DB-Zugriff, daher schränkt nichts sonst die Abfrage ein. Halte user_id-Spalten als TEXT; vertraue niemals einer client-seitig gelieferten Benutzer-ID; bei Abmeldung wirft die Middleware UnauthorizedError (401). Code und Deaktiviert-Modus-Semantik: references/per-user-data.md.
  • Sicherheitsmodell: Headless-Broker, __Host--Cookies + trustedOrigins und Fetch-Metadata-Geschwisterisolierung sind bereits verdrahtet – schwäche sie niemals, um einen Fehler zu beheben (references/sign-in-methods.md behandelt das Modell und die Behebung von „Ungültiger Ursprung“).

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

KrostyMall/Landing-SENSORITY

Build browser games and interactive/canvas/3D experiences in this TanStack Start + React app. Use for any game, simulation, or WebGL/Canvas experience — 2D or 3D, single-player. Covers the game loop & timing, 3D orientation/camera conventions, collision, performance, assets, audio, save, game feel, and per-genre playbooks. For WASD / vehicle / flight **input signs and inverted A/D**, open the **`controls`** skill — do not rely on this file or racing-kart alone. Triggers on "game", "minecraft", "fps", "platformer", "racing", "tetris", "snake", "shooter", "3d", "three.js", "canvas", "voxel", "physics".

KrostyMall/Landing-SENSORITY

Player-facing input signs for browser games: WASD, vehicles, flight, FPS mouse-look, and the #1 failure mode (inverted A/D). Mandatory control self-tests and a tiny test interface so you can verify A turns left before shipping. Load for ANY game with movement, steering, flying, driving, tanks, boats, mechs, drones, planes, karts, third-person follow cams — not only racing. Triggers on "controls", "WASD", "inverted", "steer", "flight", "airplane", "kart", "vehicle", "yaw", "roll", "pitch", "mouse look", "A/D".

KrostyMall/Landing-SENSORITY

Design and build polished, non-generic UI for this TanStack Start + React + Tailwind v4 + shadcn/Radix app. Use whenever you create or restyle any interface surface — pages, landing pages, dashboards, forms, modals, nav, and game overlays (start screens, HUD, menus). Covers design tokens, layout, typography, color, spacing, motion, and the anti-"AI-slop" rules that keep output from looking generic. Triggers on "design", "UI", "make it look good", "polish", "landing page", "theme", "style", "redesign", "ugly", "clean up".

KrostyMall/Landing-SENSORITY

Deep guide for game ANIMATION assets: motion cycles, action keyframes, effect sequences, and animation sprite sheets — built around a video-first pipeline. In this app-builder sandbox, execute via the video2dsprite / generate2dsprite skills (magenta + scripts), not ad-hoc ffmpeg. Use whenever generating anything that moves: walk/run cycles, attacks, idles, FX, flags, fire, animation sheets. Complements game-asset-core.

Verwandte Skills