skillguard/.agents/memory/MEMORY.md
amertensreplit d54b3ace19 Show skill description excerpt in scan overview (Task #23)
Original task: Display the AI-generated "Was macht dieser Skill?" description
excerpt in the scan list (Verlauf) and dashboard "Kürzliche Scans" cards. The
field (`description`) is already serialized by the API (serializeScan).

Changes:
- artifacts/skillguard/src/pages/scan-history.tsx: render a 2-line clamped
  paragraph below the metadata row when scan.description is present; nothing
  shown otherwise (clean for old/non-AI scans).
- artifacts/skillguard/src/pages/dashboard.tsx: render a 1-line clamped
  description excerpt in recent-scan rows; added min-w-0 + gap so truncation
  works.

Deviations / extra fixes required to make this work in the isolated env:
- The dev/test Postgres `scans` table was missing the `description` column even
  though lib/db schema defines it. Ran drizzle-kit push (lib/db) — the list
  endpoint and several api-server tests were 500ing on
  `column "description" of relation "scans" does not exist`. Adding a nullable
  column is non-destructive.
- lib/api-client-react built `dist/*.d.ts` was stale (missing description and
  other fields), so artifact tsc via project references failed. Rebuilt with
  `tsc -b lib/api-client-react/tsconfig.json`. Vite runtime was unaffected
  (uses src via exports).

Verification: list + dashboard render the excerpt (temporarily seeded one scan,
screenshotted, reverted to null); api-server tests 59/59 pass; changed files
typecheck clean (remaining tsc errors are pre-existing from other unmerged
tasks).

Replit-Task-Id: 381de506-681e-4564-bc60-7d2fdd66ba82
2026-06-10 21:19:54 +00:00

6 lines
1.2 KiB
Markdown

- [lucide-react icon name collisions](lucide-icon-name-collisions.md) — `Badge`/`Activity` from lucide collide with shadcn/ui Badge and React 19 Activity; import Badge from ui, Activity from lucide.
- [OpenAI gpt-5 temperature](openai-temperature-gpt5.md) — gpt-5* reject `temperature != 1`; omit temperature in OpenAI-compatible clients or AI analysis silently fails.
- [NDJSON streaming on Replit](ndjson-streaming-express-replit.md) — use `res.on("close")`+`writableFinished` (NOT `req.on("close")`); persist on disconnect; proxy doesn't buffer; gate fallback to avoid dup rows.
- [Skill fingerprint & relation matching](skill-fingerprint-matching.md) — don't put display name in fingerprint path; match modified by file-path Jaccard (hash-Jaccard misses single-file edits), report content-aware similarity.
- [Testing api-server from shell](api-server-local-curl.md) — external `$REPLIT_DEV_DOMAIN/api` curl returns HTTP 000; curl `http://localhost:<PORT>/api` instead (port from workflow log).
- [Stale codegen & unapplied migrations](skillguard-stale-codegen-and-migrations.md) — "field already in API" tasks: dev/test DB + lib `dist/*.d.ts` lag; run drizzle push + `tsc -b` the lib.