clusev/kickoff-prompt.md

46 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Lies zuerst `handoff.md` in diesem Verzeichnis KOMPLETT (oben bis unten). Das ist die
verbindliche Quelle für Produkt, Stack, Regeln, Ordnerstruktur und Deployment des Projekts
**Clusev** (self-hosted Multi-Server-Control-Panel, agentless über SSH).
Kontext dieser Maschine: Debian 13, `10.10.90.136`, **nur Docker + ein sudo-User** installiert —
sonst nichts (kein PHP/Node/Composer auf dem Host). Alles läuft in Containern. Deployment = plain
Docker Compose, kein Portainer.
Arbeite in dieser Reihenfolge und stoppe an den markierten Freigabe-Punkten:
1. **`handoff.md` lesen.** Bestätige mir in 58 Stichpunkten, dass du Produkt, Stack und die
STRICT RULES (R1R10, §4) verstanden hast. Wenn die Mockup-Referenz `../bastion` existiert,
sieh sie dir an (Pixel-Vorlage + Tokens).
2. **Offene Punkte (§12) abfragen, BEVOR du baust:** finaler Name (Clusev?), DB (MariaDB?),
GHCR-Namespace, ob `../bastion` vorhanden ist. Bei Unklarheit fragen — nicht raten.
3. **`rules.md` erzeugen** — die STRICT RULES R1R10 aus §4, jede mit kurzer Begründung +
✅korrekt / ❌verboten Code-Beispiel (v.a. R1R5: full-page Livewire-Routen, class statt Volt,
Tokens in `@theme`, keine Inline-Styles außer Progressbar-width, Löschen nur per Modal).
4. **`CLAUDE.md` erzeugen** — Produkt (§1), Stack (§3), Ordnermap (§5), Commands (§9),
Konventionen (UI Deutsch/kein Emoji, Tokens, responsive Mobile+Tablet+Desktop) + eine
"Before-you-code"-Checkliste, die auf `rules.md` verweist.
**FREIGABE-PUNKT:** Zeig mir `rules.md` + `CLAUDE.md`. Erst nach meinem OK weiter.
5. **Scaffold (Docker-first, §8/§9).** Host hat nur Docker → alles im Container bootstrappen:
- `Dockerfile` (php8.3-fpm + composer + node), `docker-compose.yml` (dev: app, vite, reverb,
queue, mariadb, redis — `build:`, bind-mount, Vite remote-HMR `host=0.0.0.0`,
`hmr.host=10.10.90.136`), `docker-compose.prod.yml`, `.dockerignore`.
- Laravel 12 + Livewire 3 (**class, kein Volt**) + Tailwind 4 + Vite.
- `composer require livewire/livewire wire-elements/modal phpseclib/phpseclib laravel/reverb`.
- `resources/css/app.css` mit `@theme`-Tokens aus §6 (aus `bastion.css`).
- Saubere Ordnerstruktur exakt nach §5.
**FREIGABE-PUNKT:** App startet im Container, leere Seite rendert, Vite-HMR läuft. Zeig mir das.
6. **v1 starten (§1 Scope).** Layout + Blade-Components (Sidebar, Topbar, Panel, Kpi, StatusPill,
StatusDot, Badge, Icon[Lucide], Ring), Dashboard als full-page Livewire-Route mit Live-Metriken
über Reverb. Mock-Daten zuerst, SSH-Layer (phpseclib) danach. Alles responsive.
Halte dich strikt an `rules.md`. Konflikt zwischen meiner Anweisung und den Regeln → nachfragen.
Verifiziere jeden Schritt (Container baut, Seite rendert, keine Console-Errors) bevor du
"fertig" sagst. Arbeite auf einem Branch, nicht auf main; committe in sinnvollen Schritten.