skillguard/replit.md

66 lines
3.6 KiB
Markdown
Raw Normal View History

# SkillGuard
2026-05-28 23:37:31 +00:00
SkillGuard ist eine deutschsprachige Web-App zum Auditieren von Agent-"Skills" (SKILL.md + Skripte + Ressourcen) auf zwei Achsen: IT-Sicherheit und Datenschutz/Systemkompromittierung.
2026-05-28 23:37:31 +00:00
## Run & Operate
- `pnpm --filter @workspace/api-server run dev` — API-Server (Port 8080; build + start, kein Watch)
- `pnpm --filter @workspace/skillguard run dev` — Frontend (Vite)
- `pnpm run typecheck` — vollständiger Typecheck über alle Pakete
- `pnpm run typecheck:libs` — nur die `lib/`-Pakete neu bauen (bei stale dist / TS2305)
- `pnpm run build` — Typecheck + Build aller Pakete
- `pnpm --filter @workspace/api-spec run codegen` — React-Query-Hooks und Zod-Schemas aus dem OpenAPI-Spec neu generieren
- `pnpm --filter @workspace/db run push` — DB-Schema pushen (nur Dev)
- Required env: `DATABASE_URL` — Postgres-Verbindung
2026-05-28 23:37:31 +00:00
## Stack
- pnpm workspaces, Node.js 24, TypeScript 5.9
- API: Express 5
- DB: PostgreSQL + Drizzle ORM
- Validation: Zod (`zod/v4`), `drizzle-zod`
- API codegen: Orval (aus OpenAPI-Spec)
- Frontend: React + Vite + wouter, TanStack Query, shadcn/ui, Tailwind
- ZIP-Parsing: fflate
2026-05-28 23:37:31 +00:00
## Where things live
- Regelwerk (statische Prüfregeln): `artifacts/api-server/src/lib/ruleCatalog.ts`
- Scan-Engine (Scoring/Verdict): `artifacts/api-server/src/lib/scanEngine.ts`
- Skill-Parser (zip/file/text): `artifacts/api-server/src/lib/skillParser.ts`
- KI-Analyse (OpenAI-kompatibel + Anthropic): `artifacts/api-server/src/lib/aiAnalysis.ts`
- Seeding der Standard-Regeln/Prompts: `artifacts/api-server/src/lib/seed.ts` (läuft beim Start)
- API-Routen: `artifacts/api-server/src/routes/*.ts` (scans, dashboard, providers, prompts, rules)
- DB-Schema (source of truth): `lib/db/src/schema/*.ts`
- API-Contract (source of truth): `lib/api-spec/openapi.yaml`
- Frontend-Seiten: `artifacts/skillguard/src/pages/*.tsx`
2026-05-28 23:37:31 +00:00
## Architecture decisions
- KI ist Replit-unabhängig: Nutzer konfigurieren AI-Provider, Modelle, Prompts und API-Tokens im Admin-Backend. Keine Replit-AI-Integration. Tokens werden serverseitig gespeichert, API gibt nur `tokenPreview` + `hasToken` zurück.
- Analyse = deterministische statische Regel-Engine + optionale KI-semantische Analyse. Statische Analyse funktioniert ohne Provider.
- Befehls-Erkennungsregeln gelten `appliesTo: ALL` (nicht nur Skripte), damit auch eingefügter SKILL.md-Text mit eingebetteten Shell-Befehlen geprüft wird.
- Risk Score 0-100, Gewichte: critical 50, high 18, medium 7, low 2. Verdict: block bei critical>0 || score>=70; review bei high>0 || score>=20; sonst pass.
2026-05-28 23:37:31 +00:00
## Product
- Drei Upload-Methoden: ZIP-Archiv, Einzeldatei, eingefügter Text.
- Seiten: Dashboard, Skill Prüfen (`/pruefen`), Bericht (`/berichte/:id`), Verlauf (`/verlauf`), Administration (`/admin`: KI-Provider, Prompts, Regelwerk).
- Bericht exportierbar als JSON. Komplett deutsche UI, keine Emojis.
2026-05-28 23:37:31 +00:00
## User preferences
- Sprache: Deutsch. Keine Emojis in der UI.
- KI muss Replit-unabhängig bleiben — Konfiguration ausschließlich über das Admin-Backend.
2026-05-28 23:37:31 +00:00
## Gotchas
- api-server läuft als build+start (kein Watch): nach Backend-Änderungen `restart_workflow` ausführen.
- Backend direkt testen über `localhost:8080/api/*`; der Proxy `$REPLIT_DEV_DOMAIN/api/*` liefert erst Inhalte, wenn die Web-App läuft.
- Scan-Eingabefelder (POST /api/scans): `source` ('zip'|'file'|'text'), `useAi` (boolean), `contentBase64` (zip/file), `filename`, `text` (für source=text).
- Bei TS2305 aus `lib/`-Imports zuerst `pnpm run typecheck:libs` ausführen (stale dist).
2026-05-28 23:37:31 +00:00
## Pointers
- See the `pnpm-workspace` skill for workspace structure, TypeScript setup, and package details